一.Canny 边缘检测算法原理 JohnCanny 于 1986 年提出 Canny 算子,属于是先平滑后求导数的方法
其处理过程大体上分为下面四部分
对原始图像进行灰度化 Canny 算法通常处理的图像为灰度图,因此假如猎取的是彩色图像,那首先就得进行灰度化
对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均
以 RGB 格式的彩图为例,通常灰度化采纳的方法主要有: 方法 1:Gray=(R+G+B)/3; 方法 2:Gray=0
299R+0
587G+0
114B;(这种参数考虑到了人眼的生理特点) 至于其他格式的彩色图像,可以根据相应的转换关系转为 RGB 然后再进行灰度化;在编程时要注意图像格式中 RGB 的顺序通常为 BGR
对图像进行高斯滤波 图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现
1)高斯核实现 上式为离散化的一维高斯函数,确定参数就可以得到一维核向量
上式为离散化的二维高斯函数,确定参数就可以得到二维核向量
在求得高斯核后,要对整个核进行归一化处理
2)图像高斯滤波 对图像进行高斯滤波,其实就是根据待滤波的像素点与其邻域点的灰度值根据一定的参数规则进行加权平均
这样可以有效滤去理想图像中叠加的高频噪声
通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这会增加边缘定位的不确定性;而假如要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度
实际工程经验说明,高斯函数确定的核可以在抗噪声干扰和边缘检测精确定位之间提供较好的折衷方案
用一阶偏导的有限差分来计算梯度的幅值和方向 关于图像灰度值得梯度可使用一阶有限差分来进行近似,这样就可以得图像在 x和 y 方向上偏导数的两个矩阵
常用的梯度算子有如下几种: 1)Roberts 算子 上式为其 x 和 y 方向偏