为什么opencv的canny函数检测边缘的效果和matlab的不同

来源:互联网 发布:比特币行情软件 编辑:程序博客网 时间:2024/04/30 04:35

可以明显的看出matlab的边缘更为细腻。

首先回顾一下传统的canny算法的主要步骤:

1、使用sobel差分算子求出灰度图像的x和y方向导数;

2、求出图像各点梯度大小及其方向;

3、设置高低两个阈值,梯度大于高阈值为强边像素点,大于低阈值为潜在可能是较弱的边缘点;

4、在经过一次筛选剩下的强边缘点中沿着梯度方向进行非极大值抑制;

5、顺着二次筛选后的强边点寻找邻近的弱边点得到最终的边缘。

opencv和matlab都基本按照以上步骤得到各自的canny 函数,但一般来说处理之前都先对图像进行模糊平滑,这样得到的效果更好。opencv更注重实时性,所以连平滑都作为可选项放在函数外,而matlab则 更注重质量,除了加入平滑操作外,还有其他一系列的优化操作,以下逐项比较。

1、模糊平滑

这一项其实对生成的边缘效果影响十分大,平滑的越流畅则生成的边缘越圆滑,一 般使用高斯低通滤波;那么滤波器的大小以及高斯分布的方差是两个关键的参数,通过实验确定取什么值最优,但一般用5×5和方差为2的就可以 了,opencv的cvSmooth函数可以进行平滑,一般都是使用输入和输出都是8位深的图像,而matlab是把图像转换为浮点类型后进行平滑操作, 这样一来从精度上说matlab就已经更胜一筹了,因为这直接决定后面的求导运算得到的两个方向导数的精度。

2、梯度

在sobel的运用上两者是一致的,但是求梯度的方向的算法两者是截然不同 的,但本质一样,效果经过笔者测试基本相同。在梯度的大小方面,opencv提供了欧式距离和哈密顿距离两种度量方式,前者是平方和后开方,后者是直接绝 对值的加和,opencv默认使用后者,我们知道((x2+y2)/2)1/2>=(|x|+|y|)/2,以及|x|+|y|>=(x2+y2)1/2 所以理论上使用哈密顿距离也基本符合真实数值,但总归是有精度上的差别,这也是为什么有人说opencv的canny不如matlab好的第二个原因了,在cv.h里面可以通过修改CV_CANNY_L2_GRADIENT来进行切换。

3、阈值

这里的阈值是梯度大小是否能够通过的开关,opencv的阈值都采用手工设置的方式,而matlab是把所有点的强度作出直方图,保留一定百分比的强边缘,这个步骤的差别不会影响结果的质量,但是在速度上当然会有差别,这是速度和方便程度的矛盾。

4、薄边效果

经过非极大值抑制后的边缘基本上是一到两个像素点的宽度,最终希望得到一个线 宽的边缘,opencv只是通过简单的判断来防止并行或者并列出现两个强边像素,这种简单的薄边手法会导致边缘的断裂,而matlab采用了Louisa Lam, Seong-Whan Lee, and Ching Y. Wuen, "Thinning Methodologies-A Comprehensive Survey," IEEE TrPAMI, vol. 14, no. 9, pp. 869-885, 1992. 这边文章的方法进行两次薄边处理,效果相当好,所得的边缘十分圆滑。

综上所述,要想opencv的效果和matlab的差不多就必须在平 滑上下功夫,梯度的大小要用欧式距离度量,另外要加入matlab的薄边算法,这样一来处理时间大概会增加一倍,但也基本可以满足实时处理。另外在一般视 觉应用中可以把算法修改为一个阈值,去掉强弱边连接这一步骤以提高速度.

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 德牧不吃东西怎么办 摩托车头盔太重怎么办 摩托车头盔起雾怎么办 真皮沙发太软了怎么办 老师硬让换班怎么办 同事经常要换班怎么办 怀孕在家没钱花怎么办 摩托车车把歪了怎么办 摩旅 手机不防水怎么办 头盔镜片花了怎么办 踏板摩托车速度底怎么办 摩托车头盔小了怎么办 房东和租客纠纷怎么办 租客与房东纠纷怎么办 乙肝打了瘦脸针怎么办 去绣水搞到手上痛怎么办 脚破了皮很痛怎么办 脚被车撞了肿了怎么办 ps4光盘花了怎么办 耳后总是长孑子怎么办 孩孑高三总是玩手机怎么办 摩托车被收了怎么办 摩托车的手续都怎么办 摩托车罚单掉了怎么办 行人遇到黄灯该怎么办 长辈借钱不还怎么办 不绣刚电梯轿壁有凹槽怎么办 电梯下限位故障怎么办 卫生间夏天太热怎么办 07大檐帽变形了怎么办 税务局不批发票怎么办 进项发票太多了怎么办 发票报销联丢失怎么办 发票领用簿没有怎么办 发票购买本遗失怎么办 销售方遗失发票怎么办 增值税发票发票联丢失怎么办 苹果购买发票丢失怎么办 空白增值税发票发票丢失怎么办 网购发票 领购簿怎么办 购物发票丢了怎么办