基于OpenCV的边缘检测

一、边缘检测的一般步骤

第一步、滤波
边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核函数对图像灰度矩阵的每点进行加权求和。

第二步、增强
增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。

第三步、检测
经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中, 常用的方法是通过阈值化方法来检测。

另外, 需要注意,下文中讲到的 Laplacian算子、sobel 算子和 Scharr 算子都是带方向的,所以,示例中分别写了X方向、Y方向和最终合成的的效果图。

二、canny算子

三、sobel算子

四、Laplacian算子

五、scharr滤波器

六、综合示例:边缘检测

猜你喜欢

转载自blog.csdn.net/qq_42815188/article/details/87474430