سلام.(برای ورودی های یک سیستم فازی)،نیاز است که در یک پنجره 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است