
Canny边缘检测:cv2.Canny()1.原理1.1噪音消除因为边缘检测很容易受到噪音影响,所以第一步是使用5x5的高斯滤波器去除噪声。1.2计算图像梯度对平滑后的图像使用Sobel算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx和Gy)。根据受到的这两幅梯度图找到边界的梯度和方向。公式如下:![]()梯度的方向通常总是与界限垂直。梯度方向被归为四类:垂直,水平,和两条对角线。1.3非极大值抑制在取得梯度的方向跟大小时候,应该对整幅图想做一个扫描canny边缘检测原理,出去那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围带有同样梯度方向的点中最大的。![]()现在你受到的是一个包含“窄边界”的二值图像。1.4滞后阈值现在应确认这些界限才是真正的边界,需要修改两个阀值:minVal和maxVal。当图像的灰度梯度小于maxVal时被觉得是真的界限,那些超过minVal的界限会被放弃。如果介于二者之间的话canny边缘检测原理,就要看这个点能否与某个被确认为真正边界点相连,如果是,就觉得它也有边界点,如果不是就放弃。2.OpenCV中的Canny边界测量cv2.Canny()第一个参数是输入图像,第二和第三个分别是minVal和maxVal。

第三个参数设定用来推导图像梯度的Sobel卷积核的大小,默认值为3。最后一个参数是L2gradient,它可以用来设置求梯度大小的函数。如果设为True,就睡使用我们里面提及过的方程,否则使用方程:![]()代替,默认值为False。~~~import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('1024.jpg',0)edges = cv2.Canny(img,100,200)plt.subplot(121),plt.imshow(img,cmap='gray')plt.title('original'),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(edges,cmap='gray')plt.title('edge'),plt.xticks([]),plt.yticks([])plt.show()~~~![]()
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-142040-1.html
在质量上中国海军也会占据绝对上风