原理祥解
- 彩色图像转换为灰色图像
- 高斯滤波,滤除噪声点
- 计算图像梯度,根据梯度计算边缘幅值与角度
- 非极大值抑制
- 双阀值边缘连接处理
- 二值化图像输出结果
非极大值抑制
非极大值抑制是一种边缘稀疏技术,非极大值抑制的作用在于“瘦”边,对图像进行梯度计算后,梯度值提取的边缘仍然很模糊(边缘比较厚),而非极大值抑制则可以帮助将局部最大值之外的所有梯度值抑制为0
1.将当前像素的梯度强度与沿正负梯度方向上的两个像素进行比较
2.如果当前像素的梯度强度与另外两个像素相比最大,则该像素点保留为边缘点,否则该像素点将被抑制。
双阀值边缘连接处理
这个阶段决定哪些边缘是真正的边缘,为此,我们需要两个阀值,minVal和maxVal,强度梯度大于maxVal的边缘肯定是边缘,而minVal以下的边缘肯定是非边缘的,因此被丢弃,两者之间的值要判断是否与真正的边界相连,相连就保留,不相连就舍弃。
import cv2
import numpy as np
src = cv2.imread('6.jpg',0)
dst = cv2.GaussianBlur(src,(3,3),0)
canny = cv2.Canny(dst,50,150)
cv2.imshow('src show',src)
cv2.imshow('dst show',canny)
cv2.waitKey(0)