canny边缘检测算法步骤,canny边缘检测算法代码Python
Canny:边缘检测算法:对于受白噪声影响的阶跃边缘是最优的。
目的:
返回二进制图像,非零值表示图像中存在边缘,并返回与边缘相关的比例和方向信息。
标准:
标准:不丢失重要边缘,不能有伪边缘。
定位标准:实际边缘与检测到的边缘位置偏差最小。
单个响应标准:将多个响应减少为单个边缘响应。该标准可以解决受噪声影响的边缘问题,并起到解决非平滑边缘检测算子的作用。
步骤:
a .使用高斯滤波器对图像去噪
b .计算像素的梯度
C.基于边缘检测使用非最大抑制NMS是步骤b的辅助
d .使用双阈值来去除检测到的边缘上的假阳性也称为滞后阈值。
e、分析所有的边以及它们之间的联系,保留真实的边,消除不明显的边。(一般这一步会省略)
步骤说明:
b .计算梯度
与正交差分滤波器的卷积(Prewitt)
生成水平方向导数图像H和垂直方向的导数图像V
当振幅超过临界值时,就需要使用非最大抑制的方法来删除这些不需要的响应。
c、抑制非极大值:搜索局部极大值,抑制非极大值。
2分别处理与每个角度相关的像素。如果垂直于渐变的任何两个相邻像素具有较大的值,则其幅度将被设置为0。
含义:这样可以保留边缘幅度分布最大值处的梯度,而远离最大值的梯度将被抑制。
d双阈值去除假阳性和滞后阈值——基本属于最后阶段。
为了防止给定阈值(振幅阈值,但有边缘/标记为边缘但实际上没有边缘)漏检或误检的现象,给定两个阈值x1,x2,其中x1x2,振幅超过x2的所有像素都标记为边缘—可以减少误检。振幅超过较小阈值x1的所有像素以及与现有边缘相连的像素也被标记为边缘,这可以减少遗漏的检测。
import v2 import numpy as NP v2 . im read( img . jpg ,0) cv2.imwrite (canny.jpg ,cv2.canny (img,200,300)) cv2.imshow (canny ,cv2.imread (canny.jpg ))
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。