اطلاعیه

Collapse
No announcement yet.

تفاضل هر پیکسل از همسایگی هایش

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

    تفاضل هر پیکسل از همسایگی هایش

    سلام.(برای ورودی های یک سیستم فازی)،نیاز است که در یک پنجره 3*3تفاضل هر کدام از پیکسلهای تصویر،از 8تا همسایگی اش حساب شود و اگر تفاضل اینها از عدد8کمتر بود،یعنی پیکسل مرکزی بسیارشبیه، به همسایه هایش است.تعداد پیکسلهای همسایگی که تفاضل آنها ازمرکزی،کمتر از 8هست را در ماتریسnumقرار دادم.
    همچنین اون پیکسلی از همسایگی که تفاضلش نسبت به سایر پیکسلهای همسایه،از پیکسل مرکزی کمتر بود را در ماتریس diff میذارم.
    اما حالا نمیدونم پرا برنامه خطا میده.و همچنین انگار اصلا هیچکاری نمیکنه.یعنی مدت run شدنش خیلی طولانیه oo: .علت چیست؟
    کد:
    clear all
    clc
    x1=imread('1.png');
    x1=rgb2gray(x1);
    imshow(x1) % clear image
    % zero around x matrix
    y=zeros(514,514); %y=matrix x with 0 around it
    for i=2:513
     for j=2:513
      y(i,j)=x1(i-1,j-1);
     end
    end
    for i=2:513
     for j=2:513
     a1=abs(y(i,j)-y(i-1,j-1));
     a2=abs(y(i,j)-y(i,j-1));
     a3=abs(y(i,j)-y(i+1,j-1));
     a4=abs(y(i,j)-y(i-1,j));
     a5=abs(y(i,j)-y(i+1,j));
     a6=abs(y(i,j)-y(i-1,j+1));
     a7=abs(y(i,j)-y(i,j+1));
     a8=abs(y(i,j)-y(i+1,j+1));
     %number of similar
      num=zeros(512,512);
      A=[a1 a2 a3 a4 a5 a6 a7 a8];
     for t=1:8
      if A(t)<8
       num(i-1,j-1)=num(i-1,j-1)+1; %chon dakhele for hast,i-1,j-1neveshtam
     end
     end
     dif=zeros(512,512);
      dif(i-1,j-1)=min(A); 
     end
    end
    من اومدم اطراف ماتریس x رو دورتا دورش رو پیکسل صفر اضافه کردم که وقتی همسایه ی پیکسلهای مرزی حساب میشه،خطا نده.ولی اصلا کار نمیکنه.ماتریس diff ,numرو همش صفر تحویل میده.چرااا :angry:
    ابعاد تصویر512*512است
    هرگز توان خودت را در تغيير دادن خويش،دست كم نگير!
    هرگز توان خودت را در تغيير دادن ديگران،دست بالا نگير!

    http://www.eca.ir/forum2/index.php?topic=112772.0
لطفا صبر کنید...
X