楼主: matlab-007
107 0

[程序分享] 基于数学形态学和Canny算子的边缘提取方法 [推广有奖]

  • 0关注
  • 37粉丝

学术权威

17%

还不是VIP/贵宾

-

威望
1
论坛币
200481 个
通用积分
146.3957
学术水平
145 点
热心指数
150 点
信用等级
89 点
经验
55962 点
帖子
7494
精华
0
在线时间
834 小时
注册时间
2014-10-27
最后登录
2024-2-27

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
canny算子,它是 最优的阶梯形边缘(step edge)检测算子。从以下三个标准来说,canny便于检测算子对受到白噪声影响的阶越型边缘是最优的。
1)检测标准。不丢失重要的边缘,不应有虚假的边缘。
2)定位标准。实际边缘与检测到的边缘位置之间的偏差最小。
3)单相应标准。将多个相应降低为单个边缘相应。
其实现步骤:
1)首先用2D高斯滤波模板与原始图像进行卷积,以消除噪声。
2)利用 导数算子(Prewitt/Sobel算子)找到图像灰度沿着两个方向的导数Gx,Gy,并求出梯度的大小。
3)利用2)的结果算出梯度方向。
4)求出了边缘的方向,就可以把边缘的梯度方向大致分为4种(水平、垂直、45度方向和135度方向),并可以找到这个像素梯度方向的邻接像素。
5)遍历图像。若摸个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,那么将这个像素值置为0,即不是边缘。
6)使用累计直方图计算两个阈值。凡是大于高阈值的一定是边缘;凡是小于低阈值的一定不是边缘。如果检测到结果在两个阈值之间,则根据这个像素的邻接像素中没有超过高阈值的边缘像素,如果有,则他就是边缘,否则不是。
canny算子边缘检测的MATLAB程序很简单:
I=imread('rice.tif');
BW=edge(I,'canny');
imshow(BW)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:形态学 MATLAB程序 MATLAB atlab matla 数学

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 12:32