对一幅灰度图像进行边缘检测、二值化,这里使用roberts算子,程序如下:
%%使用梯度算子实现边缘检测
%%使用matlab自带的函数进行边缘检测
clear all;
I = imread('rice.png'); %导入图像
imshow(I), title('none');%显示原图
G = edge(I, 'roberts');%应用罗伯特算子对像进行边缘检测,并进行二值化
figure, imshow(G), title('roberts');
%%另有博客主给出的MATLAB实现五种边缘检测,Matlab图像二值化,hen有参考意义
%%自己编码,先卷积检测边缘(使用roberts算子),再将图像二值化
myF = I;
%卷积操作,先补零
myF(:, size(I, 2) + 1) = 0;
myF(size(I, 1) + 1, :) = 0;
%进行卷积检测边缘
P = ones(size(I, 1) + 1, size(I, 2) + 1);
for i = 1:size(I, 1)
for j = 1:size(I, 2)
P(i, j) = P(i, j) + abs(myF(i + 1, j + 1) -myF(i, j)) + abs(myF(i +1, j) - myF(i, j + 1));
end
end
P = P(1:size(I, 1),