基于MATLAB的canny算子

来源:互联网 发布:最新淘宝优惠券插件 编辑:程序博客网 时间:2024/05/14 03:53

Matlab中的canny算子就做的相当好,其边缘检测效果非常优秀。为了使读者更容易读懂其中的算法,我将源代码转化为更加浅显易懂的代码。

代码下载地址:http://download.csdn.net/detail/jackinzhou/4523620

Matlab中的canny边缘检测算法如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%说明

%    平滑处理使用自调整高斯核;

%    梯度计算使用自调整高斯核;

%    幅值计算为:gradient = sqrt(dx.^2 + dy.^2),方向定义如下:  

%            3      2

%        O----0----0

%     4 |               | 1

%         |               |

%        O     X      O

%         |               |

%    (1)|               |(4)

%       O----O----O

%          (2)   (3)   

注意:

求方向的方法与opencv中的方法不一样,详细见代码。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

该代码为调用MATLAB库中的函数。

/* core */

I = imread('frighter.jpg');  % 读入图像I=rgb2gray(I);               % 转化为灰色图像imshow(I);title('原图')BW1 = edge(I,'canny');  % 调用canny函数figure,imshow(BW1);     % 显示分割后的图像,即梯度图像title('matlab canny')
/* Matlab中的结果: */

/* My_Matlab中的结果: */

原创粉丝点击