赞
踩
边缘检测通常用于特征提取和特征检测,旨在检测一张数字图像中有明显变化的边缘或者不连续的区域,在一维空间中,类似的操作被称作步长检测。边缘是一幅图像中不同区域之间的边界线。边缘检测的目的是检测灰度急剧变化的区域。
Canny边缘检测算法是由John Canny在1986年提出,它是一个多阶段的算法,由多个步骤构成。
1、灰度化
2、高斯滤波
根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。重要的是需要理解,高斯卷积核大小的选择将影响Canny检测器的性能: 尺寸越大,检测器对噪声的敏感度越低,但是边缘检测的定位误差也将略有增加。一般5x5是一个比较不错的trade off。
3、检测图像中的水平、垂直、对角边缘
可以采用sobel算子等进行检测。
4、对梯度幅值进行非极大值抑制
5、双阈值算法检测和连接边缘
如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素;如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素; 如果边缘像素的梯度值小于低阈值,则会被抑制。 双阈值检测: 大于高阈值为强边缘,小于低阈值不是边缘。介于中间是弱边缘。 阈值的选择取决于给定输入图像的内容。
借用opencv的Canny接口进行实验
- import cv2
- img = cv2.imread('lenna.png',0)
- img = cv2.GaussianBlur(img,(3, 3), 0) # 用高斯平滑图像
- canny = cv2.Canny(img, 50, 150) # 调用Canny函数,指定最大和最小阈值,其中apertureSize默认为3。
- cv2.imshow('Canny', canny)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。