前言
针对三帧差分法中-Canny算法进一步优化
Canny算法
一、自适应中值的Canny边缘检测
与其他传统的边缘检测算法相比,Canny算法其边缘检测高准确性得到了深度应用,但其在高斯滤波中参数不容易设定等不足特点,其改进Canny算法的实现需要以下步骤:
步骤1.对图像进行自适应中值滤波;
步骤2.采用Sobel算子计算梯度值与梯度方向;
步骤3.非极大值抑制操作;
步骤4.阀值处理并进行边缘连接;
经典的Canny算法去噪过程使用高斯滤波器对图像进行平滑滤波,其高斯滤波方差的选取需要人工选取,不具备自适应能力。故二维高斯函数公式为:
公式中:σ是高斯滤波器的方差。σ的大小需要人工设定,因而考虑到边缘定位的精确度,高斯函数的σ往往取较小的数值,但σ的大小对图像平滑效果就会大大降低;要想获得更好的噪声抑制效果,高斯函数的σ往往取较大的数值,因而在传统的Canny算子在使用高斯滤波器作为平滑图像这一环节时,有很大的局限性。
自适应中值滤波的自适应性体现在窗口的动态性,当检测到图像的噪声很强时,自动增大窗口,否则,不改变滤波窗口大小。
二、自适应中值滤波算法步骤
步骤.1
定义初始窗口大小S_xy为3,对窗口所有像素点进行排序得到Z_max 、Z_med、Z_min。
步骤.2
如果满足Z_med>Z_min,Z_med<Z_max,则继续判断Z_min<Z_xy<Z_max,若满足则输出Z_xy;若不满足则输出Z_med。
步骤.3
再重复第二部分的同时,判断不满足Z_med>Z_min,Z_med<Z_max,时,则增大窗口的尺寸,并且满足不超过最大尺寸情况下继续执行步骤2。
Z_max 、Z_min、Z_min为当前滤波窗口灰度的最大灰度值、灰度中值、最小灰度值。Z_xy表示当前信号点的灰度值。
结合实际应用,由于摄像头采集视频往往伴随着噪声的干扰,采用自适应中值滤波代替高斯滤波,可以根据噪声大小自适应改变滤波核大小,可以很好滤除噪声的干扰。通过添加0.05的椒盐噪声来模仿现实道路中的噪声,下图加入椒盐噪声分别对比高斯滤波和自适应中值滤波效果对比如下所示:
下图加入椒盐噪声分别对比中值滤波和自适应中值滤波效果对比如下所示:
总结
自适应中值滤波可以很好的应对噪声,对敏感噪声的滤除有一定效果。