سلام.(برای ورودی های یک سیستم فازی)،نیاز است که در یک پنجره 3*3تفاضل هر کدام از پیکسلهای تصویر،از 8تا همسایگی اش حساب شود و اگر تفاضل اینها از عدد8کمتر بود،یعنی پیکسل مرکزی بسیارشبیه، به همسایه هایش است.تعداد پیکسلهای همسایگی که تفاضل آنها ازمرکزی،کمتر از 8هست را در ماتریسnumقرار دادم.
همچنین اون پیکسلی از همسایگی که تفاضلش نسبت به سایر پیکسلهای همسایه،از پیکسل مرکزی کمتر بود را در ماتریس diff میذارم.
اما حالا نمیدونم پرا برنامه خطا میده.و همچنین انگار اصلا هیچکاری نمیکنه.یعنی مدت run شدنش خیلی طولانیه oo: .علت چیست؟
من اومدم اطراف ماتریس x رو دورتا دورش رو پیکسل صفر اضافه کردم که وقتی همسایه ی پیکسلهای مرزی حساب میشه،خطا نده.ولی اصلا کار نمیکنه.ماتریس diff ,numرو همش صفر تحویل میده.چرااا :angry:
ابعاد تصویر512*512است
همچنین اون پیکسلی از همسایگی که تفاضلش نسبت به سایر پیکسلهای همسایه،از پیکسل مرکزی کمتر بود را در ماتریس 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
ابعاد تصویر512*512است