b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

数字图像处理-受欢迎的Canny边缘检测

电脑杂谈  发布时间:2020-03-22 04:08:12  来源:网络整理

canny边缘检测处理算法比较_canny边缘检测处理算法比较_canny边缘检测程序

编辑推荐:

本文来自csdn. 本文主要介绍了概念基础,Canny边缘检测算法的流程和高斯滤波,还介绍了图像的梯度和方向的计算. 有关详细信息canny边缘检测处理算法比较,请参见下文.

0. 边缘是什么

就边缘而言,它必须是由像素组成的线条canny边缘检测人吗?

右边的边缘图像实际上是原始图像中的边缘被提取后的图像. 从直觉上也可以看出,所谓的边缘检测只不过是整个图像像素的像素级二进制分类. 它不是边缘点(以白色表示)或不是边缘点(以黑色表示). 显示这些点将成为边缘图.

当然,有许多用于边缘检测的算法. 该博客将简要介绍最经典的边缘检测算法-Canny! !!

1.Canny边缘检测算法流程

实际上,Canny算法的步骤仅是几步:

1. 高斯滤波

2. 计算图像的梯度和梯度方向

canny边缘检测处理算法比较_canny边缘检测程序_canny边缘检测处理算法比较

3. 非最大抑制

4. 双阈值过滤边缘

很明显,第一步是减少图像中的噪声并增强边缘检测的鲁棒性. 第二步是强调边缘,但是由于强调不明确,请使用第三步过滤一些边缘点. 但是第三步可能并不干净,因此第四步有一个例程将其过滤干净. 所以. . . 这是一个接一个.

2. 高斯滤波

高斯滤波与其他滤波例程基本相同. 它只不过是一个滤芯,像奴才一样,一步一步地像魔鬼一样摩擦原始图像. . . 因此,高斯滤波器的有效性取决于滤波器内核的大小及其值.

现在的主要矛盾是如何确定过滤器内核中的值. 实际上,这很简单. 通过这样的公式:

此公式的目的是什么?实际上,过滤器内核中的值将尽可能多地填充到二维高斯分布中. 我们可以给栗子:

1. 假设我的过滤器内核是3 * 3

2. 假设我的高斯分布的标准偏差为1,即σ= 1

canny边缘检测处理算法比较_canny边缘检测程序_canny边缘检测处理算法比较

3.x和y代表过滤器内核中每个点相对于中心点的坐标,就像酱紫色:

基于这些假设,我们可以像酱汁一样轻松地计算过滤器内核的相应值:

但是此时计算出的值存在问题. 如果将所有9个值相加,则该值不等于1! !! !! (概率应该是1.)所以我们需要对其进行归一化,以使所有9个值加起来为1.实际上归一化非常简单,也就是说,将所有9个值相加(0.0585 + 0.0965 + 0.0585 + ... + 0.0585 = 0.7792),然后将每个值除以该0.7792,以得到归一化值. 过滤内核. (这时您会发现所有值加起来为1)

您可以弥补它. 如果滤波器的尺寸相对较大,则每个网格中的值都可以视为概率. 实际上,大脑可以补充为紫色映射(显然是二维高斯分布):

确定了过滤器内核的值之后,就可以快乐地对其进行过滤了.

3. 计算图像的梯度和方向

要计算图像的梯度,您一定会想到图像的梯度算子. Canny中使用的梯度算子是Sobel算子. 据说是一个运算符,它实际上是一个过滤器内核. Sobel算子主要分为两种,一种用于计算水平方向的梯度,另一种用于计算垂直方向的梯度.

canny边缘检测处理算法比较_canny边缘检测处理算法比较_canny边缘检测程序

因此,在原始图像上使用第一个过滤器内核可以计算图像的水平梯度,而在第二个过滤器内核中使用第二个过滤器内核可以计算图像的垂直梯度.

使用两个方向的渐变,您实际上可以计算图像的渐变和渐变的方向. 因为已经有水平和垂直方向,所以要计算总梯度,无非就是勾股定理~~~~

那是

图像的梯度值=根数(垂直方向上的梯度幅度的平方+水平方向上的梯度幅度的平方)

图像方向= arctan(垂直方向上的梯度幅度/水平方向上的梯度幅度)

4. 非最大抑制

假设现在已经获得了梯度方向图像:

canny边缘检测处理算法比较_canny边缘检测处理算法比较_canny边缘检测程序

梯度幅度图为酱紫色:

如果要抑制非最大值,则需要再做一件事,就是这样:

这个表达式的意思很简单,中间的正方形可以看作是一个3 * 3的区域,然后该线代表角度. 例如,(-1,1)的角度为45度,(0,1)的角度为0度. 那么这东西有什么用,例如栗子:

如果我想抑制梯度振幅图的第二行和第二列中的点的非最大值(值144),那么我将看到相应方向的值是什么,显然是26 . 26很明显接近45度,因此我要进行非最大抑制时要比较的梯度幅度的点是与45度线相对应的点,即5和3. 可以看到144> 5和144> 3,所以144是最大点,因此该点不会被抑制.

然后,如果我想抑制梯度幅度值的第5行和第2列中的点的非最大值(值为178),那么很明显它的方向是7度,而7距0的度数该度数较近,因此在进行非最大抑制时要比较的梯度幅度的点是与0度线相对应的点,即180和14. 此时,它可以可以看到178 <180和178> 14,因此178不是最大点,因此应舍弃该点并将其设置为0.

很显然,在对整个图执行非最大值抑制之后,保留了具有最大值的点,并且将具有非最大值的点都分配了0.

5. 双阈值过滤边缘

边缘检测的目的是将边缘点设置为255,将非边缘点设置为0. 但是,在非最大抑制之后,图片中的某些点已被抑制为0. 但是我们不知道哪个其余点中的一个应设置为边缘点. 可能会有一些童鞋的感觉,我只是设定一个阈值?如果我的梯度值大于某个阈值,我认为它是一个边缘点. 当然可以,但是效果不会太好. 因此,前辈们有一个双阈值筛选边缘程序. 例程如下:

从图中可以很容易地看到例程. 有两个阈值A和B(A

好的,在完成了这一系列过程之后,就完成了Canny边缘检测. 我希望该博客对希望了解Canny算法大致流程的孩子有所帮助.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-147911-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...