اطلاعیه

Collapse
No announcement yet.

استخراج چشم از تصویر چهره

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : استخراج چشم از تصویر چهره

    فرض کنیم خروجی قسمت اول که لطف کردید بهترش کردید، خروجیمونه. حالا می خوام با استفاده از منطق فازی، لبه یابی کنم خروجی رو. تو قسمت فازی، رول ها رو به این سبک تعریف کردم که اگه مثلا همسایگی اول سفید باشه، دومی سفید، سومی سیاه و ... تا هشتمی فلان، (28 رول شد) لبه داریم. بعد اومدم تو برنامه یه for نوشتم که همسایگی ها یا P ها رو تعریف کنم. خروجی ندارم. چرا؟

    fuzzyedition1 =

    name: 'fuzzyedition1'
    type: 'mamdani'
    andMethod: 'min'
    orMethod: 'max'
    defuzzMethod: 'centroid'
    impMethod: 'min'
    aggMethod: 'max'
    input: [1x8 struct]
    output: [1x1 struct]
    rule: [1x28 struct]

    کد:
    X=size(myimage,1);
    Y=size(myimage,2);
    %Z=size(myimage,3);
    for i=1:X
      for j=1:Y
        
          P1=[i-1,j-1];
          P2=[i,j-1];
          P3=[i+1,j-1];
          P4=[i-1,j];
          P5=[i+1,j];
          P6=[i-1,j+1];
          P7=[i,j+1];
          P8=[i+1,j+1];
      end
    end
          fismat1=readfis('fuzzyedition1');
          subplot(4,4,11)
          imshow(fismat1)

    دیدگاه


      #17
      پاسخ : استخراج چشم از تصویر چهره

      1- روی تصویر خود مقاله امتحان کنید. اگه روی اون جواب داد ولی روی تصاویر دیگه جواب نداد، مشکل از روش مقاله است که فقط برای تصاویر خاصی جواب میده وگرنه باید ببینی کجا اشتباه کردی.
      2- چرا مجبورین؟ اگه با تصاویر مختلف هم نیازی به مرحله تشخیص پوست نداره این یک مزیت به حساب میاد و ارزش داره وگرنه میشه در حد پیاده سازی یک مقاله و هیچ چیز جدیدی نداره.
      3- ماتریسی که همه عناصرش صفره. کاربردش اینه که متلب وقتی بدونه سایز ماتریس چقدره سریع تر کار میکنه تا وقتی که سایز براش مشخص نباشه و هر بار مقدارش رو تغییر بده. وقتی برنامه بزرگ باشه یا حلقه های بزرگ داشته باشه این تفاوت سرعت کاملاً محسوسه.
      4- اشکال نداره. پیش میاد.

      اصلاً متوجه نشدم که میخوای چه کار کنی. اون حلقه که نوشتی مقدار P1 تا P8 رو فقط آخرین اجرای حلقه مشخص می کنه(در هر بار اجرای حلقه بازنویسی میشن). و بعد هم اصلاً از P ها استفاده نکردی. در ضمن راهنمای متلب برای فازی رو دوباره یه نگاهی بنداز احساس می کنم درست متوجه نشدی.
      موفق باشی.
      لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
      لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
      با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
      اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
      یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"

      دیدگاه


        #18
        پاسخ : استخراج چشم از تصویر چهره

        درسته اصلا نمی دونستم برا فراخونی قسمت فازی تو متلب باید چکار کنم، الان متوجه شدم؛ تقریبا مطمئنم این کد جدیدم درسته. ولی خروجی یک مربع کاملا خاکستریه!

        کد:
        clc;close all
        myimage=imread('pic8.jpg');
        imshow(myimage);
        subplot(4,4,1)
        imshow(myimage)
        %%
        iycbcr=rgb2ycbcr(myimage);
        subplot(4,4,2)
        imshow(iycbcr)
        y=double(iycbcr(:,:,1));
        cb=double(iycbcr(:,:,2));
        cr=double(iycbcr(:,:,3));
        ccb=cb.^2;
        subplot(4,4,3)
        imshow(ccb,[])
        ccr=(255-cr).^2;
        subplot(4,4,4)
        imshow(ccr,[])
        cbcr=ccb./cr;
        subplot(4,4,5)
        imshow(cbcr,[])
        %%
        igray=rgb2gray(myimage);
        subplot(4,4,6)
        imshow(igray)
        g=1./3;
        l=g*ccb;
        m=g*ccr;
        n=g*cbcr;
        %%
        eyemapchr=l+m+n;
        subplot(4,4,7)
        imshow(eyemapchr,[])
        ueyemapchr = uint8( 255 * ( (eyemapchr - min( eyemapchr(:) ) )/max( eyemapchr(:) ) ) );
        J=histeq(ueyemapchr);
        subplot(4,4,8)
        imshow(J)
        SE=strel('disk',15,8);
        o=imdilate(igray,SE);
        p=1+imerode(igray,SE);
        eyemaplum=o./p;
        subplot(4,4,9)
        imshow(eyemaplum,[])
        Jbin = im2bw(J,graythresh(J));
        eyemaplumbin = im2bw(eyemaplum,graythresh(eyemaplum));
        cc=and(Jbin,eyemaplumbin);
        subplot(4,4,10)
        imshow(cc,[])
        [X,Y]=size(cc);
        fismat1=readfis('fuzzyedition1');
        E=uint8(zeros(X,Y));
        for i=2:X-1
          for j=2:Y-1
               
              P1=cc(i-1,j-1);
              P2=cc(i,j-1);
              P3=cc(i+1,j-1);
              P4=cc(i-1,j);
              P5=cc(i+1,j);
              P6=cc(i-1,j+1);
              P7=cc(i,j+1);
              P8=cc(i+1,j+1);
              FF=[P1 P2 P3 P4 P5 P6 P7 P8];
              FFd=double(FF);
              E(i,j)=evalfis(FFd,fismat1);
          end
        end
        
              subplot(4,4,11)
              imshow(E)

        دیدگاه

        لطفا صبر کنید...
        X