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

opencv python Canny边缘检测

电脑杂谈  发布时间:2020-06-29 02:13:45  来源:网络整理

canny算子边缘检测原理_canny边缘检测处理算法比较_图片合成边缘处理

Canny Edge Detection

Canny边缘检测是一种流行的边缘检测算法. 它是由John F. Canny开发的,

这是一个多阶段算法. 减少噪音

由于边缘检测容易受到图像中噪声的影响,因此第一步是使用5x5高斯滤波器来去除图像中的噪声. 计算图像梯度

canny算子边缘检测原理_canny边缘检测处理算法比较_图片合成边缘处理

使用sobel运算符为平滑图像计算水平和垂直方向的一阶导数,以获得图像梯度(Gx和Gy). 根据梯度图找到边界梯度和方向

$$ Edge \ _Gradient \; (G)= \ sqrt {G_x ^ 2 + G_y ^ 2} $$

$$ \角度(\ theta)= \ tan ^ {-1} \ bigg(\ frac {G_y} {G_x} \ bigg)$$

梯度方向通常垂直于边界,有四个类别: 垂直,水平和两个对角线非最大抑制

canny算子边缘检测原理_canny边缘检测处理算法比较_图片合成边缘处理

获得梯度幅度和方向后canny边缘检测处理算法比较,请完成图像的完整扫描,以去除可能不构成边缘的所有不需要的像素. 为此,请在每个像素处检查像素是否在其梯度方向上.

clipboard.png

点A在边缘(垂直方向)上,并且渐变方向垂直于边缘. 点B和C在梯度方向上. 因此,将A点与B点和C点一起检查,看是否形成局部最大值. 如果是这样,请考虑进行下一个阶段,否则将其抑制(置零).

磁滞阈值

canny边缘检测处理算法比较_canny算子边缘检测原理_图片合成边缘处理

此阶段确定哪些边缘是边缘,哪些不是边缘. 为此,我们需要两个阈值minVal和maxVal. 强度梯度大于maxVal的边缘必须为边缘,而低于minVal的边缘必须为非边缘,因此被舍弃. 应该判断两者之间的值是否连接到真实边界. 如果已连接,它将被保留.

clipboard.png

边缘A高于maxVal,因此被视为“真实边缘”.

尽管边C低于maxVal,但它连接到边Acanny边缘检测处理算法比较,因此也被视为有效边,并获得了完整的曲线.

canny边缘检测处理算法比较_图片合成边缘处理_canny算子边缘检测原理

但是边缘B高于minVal,并且与边缘C的面积相同,但是它没有连接到任何“真实边缘”,因此将其丢弃.

因此,我们必须相应地选择minVal和maxVal以获得正确的结果

我们最终得到的是图像中的强边缘

cv2.Canny(图像,threshold1,threshold2 [,edges [,pertureSize [,L2gradient]]])

$$ Edge \ _Gradient \; (G)= | G_x | + | G_y | $$

代码:

import cv2
from matplotlib import pyplot as plt
img = cv2.imread('img.jpg',0)
edges = cv2.Canny(img,100,200)
plt.subplot(121),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()


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

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

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