E2 Canny 边缘检测算法
一、 实验要求:
用 OpenCV 或者 MATLAB 实现图像的边缘检测,要求用 Canny 算法的思想
实现。
二、Canny 算法的原理
Canny 为一个边缘检测算法自定义了目标集,并用优化的方法实现了边缘
检测。根据 Canny 的说法,一个边缘算子必须满足的三个准则是:
(1)低错误率:边缘算子应该只对边缘响应,并能找到所有的边,而对于非边
缘应能舍弃。
(2)定位精度:被边缘算子找到的边缘像素与真正的边缘像素间的距离应该尽
可能的小。
(3)在单边存在的地方,检测结果不应出现多边。
需要找到一个能够使三个准则都得到优化的滤波器函数。
假设滤波器函数是 f,那么滤波器函数对边缘 B 的响应由下面的卷积给出:
。
最后 Canny 证明了 Gaussian 函数的一阶导数是边缘检测滤波器的有效近似。
在一维情况下,Gaussian 函数为:
,
对 x 的微分为:
。
二维情况下 Gaussian 函数为:
,
二维 Gaussian 函数在 x、y 方向上有偏导数,与 Canny 优化的边缘检测滤波器近
似的是 G’。所以把输入图像和 G’进行卷积,得到一个边缘增强的图像。
卷积实现起来比较简单,但是计算量大,而对于二维卷积计算是成倍增长
的。由于一个二维的高斯卷积可以分解成两个一维的高斯卷积,而且微分也可
以分解成两个方向上的一维卷积,因此 Canny 用一维卷积实现了边缘检测算法。
高斯卷积得到的边缘图像还存在一些具有较高梯度值、非边缘的点,这对
真正的边缘是一种干扰,应该去除掉。对于一个边缘像素,都有一个与该点所
在的边垂直的梯度方向,并且该像素的梯度值要大于该边两侧的像素的梯度值。
- 1
- 2
- 3
- 4
- 5
前往页