首页 > 编程知识 正文

边缘检测和轮廓提取区别,verilog 边缘检测

时间:2023-05-06 02:59:58 阅读:215638 作者:4145

一、Canny边缘检测

       1、幽默的蜡烛滤波

       在LOG中,也使用了幽默的蜡烛滤波,目的是去除图像中的噪声,因为噪声也是高频信号,很容易被认为成伪边缘。因此在进行边缘检测之前先对图像进行幽默的蜡烛滤波。

       2、计算梯度幅值和方向

       图像的边缘可以指向不同方向,因此经典Canny算法用了四个梯度算子来分别计算水平,垂直和对角线方向的梯度。但是通常都不用四个梯度算子来分别计算四个方向。常用的边缘差分算子(如Rober,Prewitt,Sobel)计算水平和垂直方向的差分Gx和Gy。这样就可以如下计算梯度模和方向:

梯度角度θ范围从弧度-π到π,然后把它近似到四个方向,分别代表水平,垂直和两个对角线方向(0°,45°,90°,135°)。可以以±iπ/8(i=1,3,5,7)分割,落在每个区域的梯度角给一个特定值,代表四个方向之一。

这里我选择Sobel算子计算梯度。Sobel算法很简单,相对于其他边缘算子,Sobel算子得出来的边缘粗大明亮。

        3、非极大值抑制

        前面说到,sobel得到的边缘是粗大明亮的结果,也就是边缘大部分是大于一个像素的宽度的,而我们需要得到更加精细的边缘,因此非极大值抑制就是在局部中选择最大的梯度值,抑制其他较小的梯度值(变为0)。

比较当前点的梯度强度和正负梯度方向点的梯度强度。如果当前点的梯度强度和同方向的其他点的梯度强度相比较是最大,保留其值。否则抑制,即设为0。比如当前点的方向指向正上方90°方向,那它需要和垂直方向,它的正上方和正下方的像素比较。

注意,方向的正负是不起作用的,比如东南方向和西北方向是一样的,都认为是对角线的一个方向。前面我们把梯度方向近似到水平,垂直和两个对角线四个方向,所以每个像素根据自身方向在这四个方向之一进行比较,决定是否保留。

        4、双阈值

        一般的边缘检测算法用一个阀值来滤除噪声或颜色变化引起的小的梯度值,而保留大的梯度值。Canny算法应用双阀值,即一个高阀值和一个低阀值来区分边缘像素。如果边缘像素点梯度值大于高阀值,则被认为是强边缘点。如果边缘梯度值小于高阀值,大于低阀值,则标记为弱边缘点。小于低阀值的点则被抑制掉。这一步算法很简单。这一步还是去除一部分梯度较小的点,使得边缘更加精细化。

        5、滞后边界跟踪

        在上一步中我们把大于高阈值的梯度值保留了下来,小于低阈值的的梯度去除,还有一部分是被标记为弱边缘点,这一部分我们还需要进一步的处理。当弱边缘与强边缘点是在一个联通域中的话,我们会保留这个点(这个点有可能是噪声或者颜色变化引起的)。如果一个弱边缘点是孤立的点,那么直接去除该点即可。

二、Sobel和Prewitt算子

        二者的区别就是Sobel是加权平均,更加关注中心像素点上下左右四个点的作用。而Prewitt算子是平等的对待其周围的8个点。

三、Roberts算子

        是一种局部差分算子,

 

其中 分别为4领域的坐标,且是具有整数像素坐标的输人图像;其中的平方根运算使得该处理类似于人类视觉系统中发生的过程。

Roberts算子是2X2算子模板。图1所示的2个卷积核形成了Roberts算子。图象中的每一个点都用这2个核做卷积。

四、LOG算子又称为Marr-Hildreth算子

        即先对图象平滑,后rrdsy变换求二阶微分,等效于把rrdsy变化作用于平滑函数,得到1个兼有平滑和二阶微分作用的模板,再与原来的图像进行卷积。用Marr-Hildreth模板与图像进行卷积的优点在于,模板可以预先算出,实际计算可以只进行卷积。

LOG滤波器有以下特点:

(1)通过图象平滑,消除了一切尺度小于σ的图像强度变化;

(2)若用其它微分法,需要计算不同方向的微分,而它无方向性,因此可以节省计算量;

(3)它定位精度高,边缘连续性好,可以提取对比度较弱的边缘点。

LOG滤波器也有它的缺点:当边缘的宽度小于算子宽度时,由于过零点的斜坡融合将会丢失细节。

 

Reference:

https://www.cnblogs.com/mightycode/p/6394810.html

https://blog.csdn.net/gdut2015go/article/details/46779251

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