关于matlab图像处理边缘检测的程序问题

clear all;
clc;
warning off
a1=imread('che.jpg');
subplot(221);
imshow(a1);
title('原始图像');
a=rgb2gray(a1);
a=double(a);
[m,n]=size(a);
for j=1:m-1
for i=1:n-1
b(i,j)=abs(a(i,j)-a(i+1,j))+abs(a(i,j)-a(i,j+1));
if b(i,j)>50
b(i,j)=0;
else
b(i,j)=255;
end
end
end
subplot(222);
imshow(b);
title('普通梯度检测后图像');

程序运行后出现
ttempted to access a(361,1); index out of bounds because size(a)=[360,585].

Error in ==> panduan at 13
b(i,j)=abs(a(i,j)-a(i+1,j))+abs(a(i,j)-a(i,j+1));
这个错误,是怎么回事,求大神指教

第1个回答  2015-03-05
clear all;
clc;
warning off
a1=imread('1.jpg');
subplot(221);
imshow(a1);
title('原始图像');
a=rgb2gray(a1);
a=double(a);
[m,n]=size(a);
for i=1:m-1
for j=1:n-1
b(i,j)=abs(a(i,j)-a(i+1,j))+abs(a(i,j)-a(i,j+1));
if b(i,j)>50
b(i,j)=0;
else
b(i,j)=255;
end
end
end
subplot(222);
imshow(b);
title('普通梯度检测图像');
你在循环中把i和j弄反了本回答被提问者采纳
相似回答