学习DIP第43天
转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!!
文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro
开篇废话
废话开始,Robert算子,之前被用到了图像增强中的锐化,原因是作为一阶微分算子,Robert简单,计算量小,对细节反应敏感,之前说过算子对边缘检测的贡献是提供边缘候选点,Robert算子相比于其他3x3算子,在不经过后处理时,可以给出相对较细的边缘,有看一个博客,博主说Robert给出的边缘较粗,但根据我的测试结果,一阶微分中Robert给出的候选点是最细的,相关Robert基础知识参考前面博文“灰度图像--图像增强
Robert算子、Sobel算子”。这里我们不在介绍重复知识。
算子比较
与标准一阶差分不同,Robert采用对角线差分,前面博文我曾说我懂为什么要使用对角线,现在有了答案,假设我们采用标准的一阶微分算子,对下面一个数字化的矩形进行横向和纵向的差分,并得出结果,红色表示算子模板中心:
可以看出,得到的边缘一部分是在内边界,一部分是外边界,并且,黄色像素点并未有计算结果,也就是,边缘候选点丢失了一个。
但是如果我们采用Robert算子计算,结果如下:
右下角为得到的结果,虽然边缘候选点依然有外边缘和内边缘,但没有遗漏边缘候选点,这就是Robert由于普通差分的地方,也就是对角线差分的好处。
检验完候选点后,接下来的任务是筛选,筛选算法有很多,但最简单的是阈值处理,即超过阈值的为边缘,否则为噪声,或非边缘,这样做的缺点是不准确,有点是速度极快。计算量相当小,在速度要求较高的但准确度要求不高的地方,可以使用Robert加阈值的简单处理。得到边缘。
代码实现结果
代码之前已经给出,这里只现实下阈值处理后的样子。
原图:
Robert+阈值(阈值给出方式为:边缘候选点的最大值的百分比):
总结
Robert算子可以检测到全部的边缘候选点,边界定位能力一般,原因是一阶微分对于斜坡型边缘定位都不准确,使用简单的阈值后可以去掉一些非边缘点,但检测结果准确性一般,但计算速度非常快。
待续。。。。