【发布时间】:2015-07-02 20:26:21
【问题描述】:
我正在尝试编写 Prewitt 算子的实现代码以进行边缘检测。到目前为止,我已经尝试过:
openImage = im2double(rgb2gray(imread(imageSource)));
[rows,cols] = size(openImage);
N(1:rows,1:cols)=0;
for i=1:rows-2;
for j=1:rows-2;
N(i,j)=-1*openImage(i,j)-1*openImage(i,j+1)-1*openImage(i,j+2)+0+0+0+1*openImage(i+2,j)+1*openImage(i+2,j+1)+1*openImage(i+2,j+2);
end;
end;
O(1:rows,1:cols)=0;
for i=1:rows-2;
for j=1:rows-2;
O(i,j)=-1*openImage(i,j)+0+1*openImage(i,j+2)-1*openImage(i+2,j)+0+1*openImage(i+1,j+2)-1*openImage(i+2,j)+0+1*openImage(i+2,j+2);
end
end
Z = N + O;
我可以获得的:
可以看出,该图像得到了一半的图像处理和一半的空白。我做错了什么?
这是原图:
【问题讨论】:
标签: matlab image-processing edge-detection