刘志清, 兰奇逊*, 徐 林, 徐华锋, 王朝勇
(1. 河南城建学院数理学院, 河南 平顶山 467036; 2. 东北大学信息科学与工程学院, 沈阳 110819)
图像滤波是数字图像处理和计算机视觉中广泛使用的基础图像处理方法, 可直接用于图像去噪[1]、图像平滑[2]、图像锐化,还可作为图像修复、图像分割[3]、图像增强[4]、边缘检测[5]、图像去雾[6]、目标识别[7]等图像预处理程序.图像滤波算法的运行时间随图像尺寸及滤波器核半径的增大而增加, 为提高算法的计算速度,研究者提出了两类方法: 一类通过合理设计算法实现策略,降低计算复杂度,如基于递归方式实现的均值滤波、中值滤波和高斯滤波,但该方法中后一项的计算依赖于前一项的计算结果,无法进行并行处理;另一类采用并行处理技术[8],借助并行处理设备,在不改变计算复杂度的情况下提高计算速度,减少计算时间.
Fareed等[9]根据滤波器内不受噪声污染的像素数量, 动态调整滤波器尺寸,实现自适应选择性均值滤波器的快速计算; Karnaukhov等[10]采用多维移位向量的递归均值计算方法,降低原始非局部均值方法的复杂度,使非局部均值滤波算法的速度提高10倍以上; Wang等[11]根据输入图像的高频和低频分量,提取视觉特征,构造决策图模型,提出快速加权引导滤波器; Young等[12]采用有理分式逼近高斯核的傅里叶变换,建立图像滤波输出像素和输入像素之间的递归关系,实现各向同性可分离的高斯滤波,使得计算复杂度与高斯滤波器尺寸无关.现有的图像滤波快速实现方法主要针对均值滤波、高斯滤波等特定滤波器,通用性较差,无法应用于其他类型的滤波器.
本文拟提出一种基于带权重像素平移的图像滤波快速实现方法, 将滤波器权重与输入像素的乘积作为带权重像素, 根据权重在滤波器中出现的位置,将带权重像素累加至对应的滤波器中心所在图像像素,减少线性滤波器中不同位置由相同权重带来的冗余乘法计算,以期提高计算速度.
滤波器中不同位置出现相同权重是线性滤波器中普遍存在的现象.图1为3×3滤波器, 滤波器各权重关系为w(1,1)=w(1,3)=w(3,1)=w(3,3),w(1,2)=w(2,1)=w(2,3)=w(3,2).利用此滤波器进行图像滤波, 如图2~3所示.直接实现法为像素点f(x,y)分别乘以w(3,3),w(3,1),w(1,3),w(1,1), 并累加到像素点f(x-1,y-1),f(x-1,y+1),f(x+1,y-1),f(x+1,y+1). 由于4个权重数值相同, 故该方法包含了大量的乘法冗余计算.
图1 3×3滤波器Fig.1 3×3 Filter
图2 直接实现法Fig.2 Direct implementation
图3 本文方法Fig.3 Proposed method
本文提出以滤波器权重与像素的乘积作为带权重像素, 根据相同权重出现的不同位置与滤波器中心的相对位置确定带权重像素的平移矢量,减少冗余计算.算法具体步骤如下:
步骤2: 将不同权重wi乘以点IO(x,y)处的像素值f(x,y)作为带权重像素wif(x,y).
上述快速实现算法主要针对二维数据,也可应用于高维数据.对于具有可分离性质的滤波器,分离为一维形式后也可以使用本文提出的快速实现方法减少一维滤波中的冗余乘法运算.
假设半径为r的滤波器中不同权重数量为u(u≤(2r+1)2), 直接实现法每个像素需(2r+1)2次乘法运算和(2r+1)2-1次加法运算, 本文方法需u次乘法运算,加法运算次数不变.乘法运算时间大于加法运算时间,本文提出的快速实现方法通过减少冗余乘法运算可提高图像滤波的计算速度,并且不同像素点的输出计算不存在依赖关系,可采用并行计算,进一步加快计算速度.
为验证本文提出的图像滤波快速实现方法的有效性, 利用半径不同的滤波器对不同尺寸图像进行滤波处理, 与直接实现法滤波结果进行对比分析.算法实现采用C++编程语言, 软件环境为Visual Studio 2017, 硬件环境为Intel Core i5 M480 2.67 GHz, 内存8 GB.通过对连续高斯函数采样得到滤波器权重w(s,t)=e-[(s-r)2+(t-r)2]/2σ2, 其中σ为高斯分布的标准差,σ=0.5r.利用5×5高斯滤波器对尺寸为512×512像素的图像进行滤波, 结果如图4所示.由图4可知, 直接实现法与本文方法的滤波结果相同.图像滤波结果误差Δg(x,y)=gP(x,y)-gD(x,y), 其中gP(x,y)和gD(x,y)分别为本文方法和直接实现法滤波结果.利用半径r=1,2,…,10的滤波器对不同尺寸图像滤波, 滤波结果误差Δg(x,y)=0.
图4 不同方法滤波结果Fig.4 Filtering results of different methods
本文方法与直接实现法均采用串行方式计算,利用不同半径的滤波器对不同尺寸图像各进行10次滤波处理,取平均运行时间,分析本文方法与直接实现法的计算时间的比值,结果如表1所示.由表1可知, 5×5高斯滤波器中不同权重有6个, 平均每个权重重复出现了4.166 7次; 21×21高斯滤波器中不同权重有61个,平均每个权重重复出现了7.229 5次.利用相同半径的高斯滤波器对不同尺寸的图像滤波,两种方法计算时间的比值变化不大,本文方法比直接实现法的计算速度快6~7倍,但随着滤波器半径的增大,本文方法与直接实现法计算时间的比值有增大趋势.
表1 直接实现与本文实现方法计算时间
本文提出基于带权重像素平移的图像滤波快速实现方法,将不重复的滤波器权重与图像像素的乘积作为带权重像素,根据权重在滤波器中的位置将带权重像素累加至滤波器中心所在像素,减少了因滤波器中不同位置存在相同权重带来的冗余乘法运算,并且在计算相邻像素输出时不存在依赖关系,可采用并行计算,同时可应用于一维和高维数据的线性滤波处理,不受线性滤波器类型的限制.实验结果表明,相比于直接实现法,本文方法在保证滤波精度的前提下大大提高了图像滤波的计算速度.