首页 > 编程知识 正文

canny算法缺点,canny算子的原理

时间:2023-05-04 19:52:10 阅读:22110 作者:4416

1.Canny边缘检测的基本原理

)1)图像边缘检测必须满足两个条件。 一是能有效抑制噪声; 2必须尽可能准确地确定边缘的位置。

)通过测度信噪比和定位积,得到最优化近似算子。 这就是Canny边缘检测算子。

(3) Marr ) log )边缘检测方法同样,属于平滑后求导数的方法。

2.Canny边缘检测算法:

用于step1:的jsdbbt过滤器平滑图象

step2:采用一阶偏导的有限差分实现梯度的幅值和方向

step3:梯度振幅非极大值抑制

用于step4:的双阈值算法检测和连接边缘

step1:jsdbbt平滑函数

(请在维基百科上理解卷积函数的定义。 如下图所示,移动的红色窗口表示我们的jsdbbt和函数,蓝色是图像灰度函数)

用jsdbbt函数生成k*k的模板例如为3*3

使用此模板对每个像素进行加权平均

Step2:一阶微分卷积模板

step3:对梯度幅值进行非极大值抑制

仅获得全局梯度还不足以确定边缘,因此为了确定边缘,http://www.Sina.com/(non-maxima suppression,NMS )

解决方法:利用坡度方向。

图1非极大值抑制

四个扇区的标签为0到3,支持3*3附近的四种可能的组合。 在每一点,将附近的中心像素m与沿着梯度线的两个像素进行比较。 如果m的梯度值不大于沿着梯度线的两个相邻像素的梯度值,则M=0。

也就是说:

Step4: 必须保留局部梯度最大的点,而抑制非极大值

两个阈值th1和th2作用于极大值以外的抑制图像,两者的关系为th1=0.4th2。 将梯度值小于th1的像素的灰度值设为0,得到图像1。 然后,将梯度值小于th2的像素的灰度值设为0,得到图像2。 由于图像2的阈值高,去除了大部分的噪声,但同时也丢失了有用的边缘信息。 另一方面,因为图像1的阈值低,留有很多信息,所以能够根据图像2补充图像1并连结图像的边缘。

链接边缘的具体步骤如下。

扫描图像2,在遇到非零灰度的像素p[x,y]时,追踪以p[x,y]为起点的轮廓线,直到轮廓线的终点q[x,y]。

考察与图像1中图像2中的q(x,y )点的位置对应的点s ) x、y )的8个附近区域。 在s(x,y )点的8个附近区域存在非零的像素s ) x,y )的情况下,作为r ) x,y )点包含在图像2中。 从r(x,y )重复第一步,直到在图像1和图像2中都不能继续。

包含p(x,y )的轮廓线的链接完成后,将该轮廓线标记为已访问。 返回第一步,寻找下一条轮廓线。 重复步骤1、步骤2和步骤3,直到在图像2中找不到新轮廓线。

3.canny算法程序的实现

Canny算法程序将上述四个步骤进一步细分,分为以下七个步骤。

生成jsdbbt滤波器系数;

使用生成的jsdbbt滤波器系数对原图像进行平滑;

求l滤波后图像的梯度

l进行非最大抑制

统计l图像的直方图,判定阈值;

使用l函数查找边界的起点

基于步骤6的结果,从一个像素点开始搜索,使用像素点作为边界的起点搜索边界上的一个边界的所有边界点;

参考:

3358 blog.csdn.net/like zhaobin/article/details/6835049

3358 blog.csdn.net/like zhaobin/article/details/6892176

3358 blog.csdn.net/like zhaobin/article/details/6892629

3358 www.cn blogs.com/cfantaisie/archive/2011/06/05/2073168.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。