Canny简介
1、分别计算x,y两个方向的梯度值。
2、由梯度值可以计算出幅值和梯度方向。
3、幅值是梯度的强度,通过梯度方向可以抑制非极大幅值。
4、设置2个阈值。高于高阈值的幅值点,其像素值置为255,低于低阈值的幅值点,该点像素值赋0;而介于两值之间的幅值,检测其是否连通,若连通赋值255,反之赋值0。
5、输出边缘图像。
代码分享
function re=canny(x,min,max)
[m,n]=size(x);
GX=zeros(m,n); GY=zeros(m,n);
w=1/256*[1;4;6;4;1]*[1,4,6,4,1];
gaosi_x=conv2(x,w,'same');
for i=1:m-1
for j=1:n-1
GX(i,j)=(gaosi_x(i,j+1)- gaosi_x(i,j)+gaosi_x(i+1,j+1)- gaosi_x(i+1,j))/2;
GY(i,j)=(gaosi_x(i+1,j)- gaosi_x(i,j)+gaosi_x(i+1,j+1)- gaosi_x(i,j+1))/2