• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

小白学习图像处理——canny算法与实现(matlab)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

主要参考 电子工业出版社的《数字图像处理 原理与实践matlab版》

step01 用二维高斯模板进行卷积以消除杂点

step02 用已结偏导数的有限差分来计算梯度的幅值和方向

step03 对帝都肤质进行非极大值抑制

step04 双阈值算法监测和连接边缘 

step05 利用多尺度综合技术对结果进行优化。(优化的方法并不唯一,可以根据具体应用或针对具体图像特征再做考虑)

代码;

 I=imread('D:\Desktop\TEST.jpg');
 [R,C,D]=size(I);
Im=rgb2gray(I);


img=edge(Im,'canny',[0.032,0.08],3);//阈值矩阵的上界和下界可以调整
figure(1);
imshow(Im);
figure(2);
imshow(I);
figure(3);

imshow(img);

结果:


可以发现分割后的效果并不理想

在对植物部分进行分割后再次用canny进行边缘检测后的结果如下所示


植物界外的分割部分有所提高,但是植物的叶脉部分也被当做边缘提出了

接下来主要是通过调整阈值的取值范围以期获得较好的边缘检测结果
高阈值比较严格,求的边缘很少,认为高阈值的边缘都是有效。低阈值宽松,求的边缘很多(一般包括了高阈值求到的边缘),其中不少是无效的边缘(反正不想要的)。
先用高阈值求边缘。canny求得的边缘希望是连在一起的(通常是封闭的),但高阈值求的边缘一般断断续续。断开的地方如果低阈值求的边缘存在,就用低阈值的边缘接上去,目的让边缘尽量都连在一起。其它情况下低阈值的边缘是不用的。

两个阈值是有区别的,高的那个阈值是将要提取轮廓的物体与背景区分开来,就像阈值分割的那个参数一样,是决定目标与背景对比度的,低的那个阈值是用来平滑边缘的轮廓,有时高的阈值设置太大了,可能边缘轮廓不连续或者不够平滑,通过低阈值来平滑轮廓线,或者使不连续的部分连接起来。

最后调整结果任然不满意


考虑对图像进行一定的预处理后再进行边缘检测

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab神经网络多分类(模式识别神经网络nprtool)发布时间:2022-07-18
下一篇:
Python调用Matlab引擎发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap