胡 樾,陶 胜
(1.集美大学诚毅学院,福建 厦门361021;2. 集美大学理学院,福建 厦门361021)
一幅干净无污染的图像可以获得的信息量远大于有噪声的图像,因此,图像质量显得极其重要。可是,图像往往在不知不觉中被污染。例如,在图像获取过程中,传感器常常会受到各种因素的影响致使图像出现噪声;在传输过程中,由于所用的传输信道的干扰导致图像受到噪声污染[1]。当噪声干扰严重时,甚至会使图片失去其本身的价值。脉冲噪声是一种常见的噪声,分成椒盐噪声(salt and pepper noise, SPN)和随机值脉冲噪声(random-valued impulse noise, RVIN)两类。
传统中值滤波被广泛用于去除脉冲噪声,可是不加区别地对图像所有像素进行统一处理会造成噪声在邻域传播,会导致图像细节结构的平滑[2]。因此,一些改进算法被提出,例如WM(weighted median)[3]、CWM(center weighted median)[4]等,这类算法通过给可能正常的像素点提供更大的权重来修复图像细节,但仍没有区分噪声与非噪声点。随后SWM(switching median)[5]提出一种将图像处理过程进行两阶段处理的策略,即先检测噪声后去噪。该方法依靠窗口内邻域点中值与检测点差的绝对值判断噪声点和信号点,仅对噪声进行中值处理。PSM(progressive switching median)[6]提出在两阶段处理图像的同时多次迭代检测及去噪的策略。由此衍生出了很多方法[7-13],例如TSM(tri-state median)[7]、MSM(multi-state median)[8]、PWMAD(pixel-wise median absolute deviation)[9]、SNC(similar neighbor criterion)[10]和SPF(seed pixels filter)[11]等。ADTM(adaptive dual threshold median)[12]采用基于像素值平均的自适应双阈值来检测噪声像素,并使用简单的中值滤波器去除它们。APCM(adaptive partition-cluster-based median)[13]使用基于自适应分区簇的中值滤波器,该滤波器可以将像素分为不同的组,并应用不同的策略来检测和过滤噪声像素。SSD(statistical standard deviation)[14]利用滤波窗口八个不同方向上的估计标准差和平均绝对差来计算相似性指数,并以此判断噪声。BPDF(based on pixel density filter)[15]方法利用像素值变化时的关系来确定最合适的窗口大小和替换值,能够在低中噪声密度下得到较好的去噪效果。SAMFWMF(switching adaptive median and fixed weighted mean filtering)[16]方法结合了自适应中值滤波器和固定加权均值滤波器,能够在高噪声密度下保持图像的边缘细节,并且提供了一种有效的边缘跟踪和连接算法。虽然这些算法的效果提高了,但随着噪声密度提升仍会对噪声检测及滤波效果产生较大影响,特别遇到高密度噪声时,已经无法保护图像细节,导致去噪效果下降明显。
为了提高去噪效果,一些学者开始尝试使用整体变分模型(total variation,TV)[17]来去除随机值脉冲噪声。整体变分模型最早被提出来是用于去除高斯噪声,可是存在阶梯效应问题,随后一些针对脉冲噪声的改进整体变分模型被提出。例如:文献[18] 利用重叠组稀疏性和Lp-伪范数收缩的整体变分方法来保持图像的边缘和稀疏性。文献[19]将像素分为损坏的、无噪声的和可能损坏的,对不同类别的像素采用不同的处理方式,即,如果一个像素是损坏的,就使用改进的整体变分扩散方法进行重构,如果一个像素是可能损坏的,就使用加权整体变分扩散方法进行重构,否则,就保持像素不变,并根据噪声密度的不同,自适应地调整窗口大小和阈值参数。文献[20]提出快速的求解带有盒约束的分数阶整体变分图像恢复方法,利用交替方向乘子法、迭代加权L1算法和快速迭代技术去除脉冲噪声。这些模型可以在一定程度上减少阶梯效应,但是对于随机值脉冲噪声的去除效果还不够理想,因为它们没有充分利用噪声点和非噪声点的区别,而是对所有像素进行同样的处理。
为了解决去噪效果不佳的问题,本文结合开关滤波器的开关特性和整体变分模型的去噪算法,提出一种新的基于整体变分模型的随机值脉冲噪声去噪方法,以达到更好的去噪效果。
针对不同密度等级的随机值脉冲噪声图像,本研究提出的去噪流程如图1所示。
本文方法的第一阶段是噪声检测,首先对被污染的图像进行噪声判定以获得噪声标识矩阵,然后根据修正准则对噪声标识矩阵进行二次处理以防止对图像像素的误判。而第二阶段噪声去除,采用快速整体变分模型将噪声标识矩阵的点依次进行修复处理。
根据噪声的密度,将噪声分为低密度、中密度和高密度三种情况,分别采用不同的邻域窗口和判定准则进行噪声检测。同时,为了避免对图像的边缘点误判为噪声,本研究还提出了相应的修正准则,对判定为噪声的像素进行二次处理。
1.1.1 低密度噪声检测
对于低密度(密度小于等于20%)噪声的图像,采用3 px×3 px的邻域窗口。
判定准则1:考察图像中的任意像素P,计算该像素灰度值与周围8个点的灰度值的差的绝对值。如果最小的3个绝对值之和小于或等于给定的阈值T(本研究取为48),则判定像素P为非噪声像素;否则,判定像素P为噪声像素。
上述判定准则对非边缘点,能够取得较好的检测效果。但对于图像的边缘点,由于它与周围8个点的灰度值的差别较大,容易误判为噪声像素。因此,需要对这些已判定的噪声像素进行修正。
修正准则1:对于噪声像素Q,假设其灰度值为v,计算Q的3 px×3 px邻域窗口内非噪声像素的平均值,记为v1。如果满足:v与v1的差的绝对值小于等于T1,或者Q的3 px×3 px邻域窗口内存在相似的非噪声像素(该像素的灰度值与v的差的绝对值小于等于20),则将像素Q修正为非噪声像素。其中参数T1给定方法如下:计算Q的3 px×3 px邻域窗口内非噪声像素的方差,如果该方差值较大,则T1取为32,否则T1取为16。
1.1.2 中密度噪声检测
对于中密度(密度大于20%,小于等于40%)噪声的图像,采用5 px×5 px的邻域窗口。
判定准则2:考察图像中的任意像素P,计算该像素灰度值与周围24个点的灰度值的差的绝对值。如果3 px×3 px的邻域窗口内对应的最小的3个绝对值之和小于或等于给定的阈值T,或者5 px×5 px的邻域窗口内对应的最小5个绝对值之和小于或等于给定的阈值T+16,则判定像素P为非噪声像素;否则,判定像素P为噪声像素。
这一判定准则对非边缘点,能够取得较好的检测效果。然而,对于图像的边缘点,需要对这些已判定的噪声像素进行修正。
修正准则2:对于噪声像素Q,假设其灰度值为v,计算Q的3 px×3 px邻域窗口内非噪声像素的平均值,记为v1;计算Q的5 px×5 px邻域窗口内非噪声像素的平均值,记为v2。如果满足:v与v1的差的绝对值小于等于T1,或者v与v2的差的绝对值小于等于T2,或者Q的3 px×3 px、5 px×5 px邻域窗口内存在相似的非噪声像素(该像素的灰度值与v的差的绝对值小于等于20),则将像素Q修正为非噪声像素。其中参数T1和T2给定方法如下:计算Q的3 px×3 px邻域窗口内非噪声像素的方差,如果该方差值较大,则T1取为32,否则T1取为16;计算Q的5 px×5 px邻域窗口内非噪声像素的方差,如果该方差值较大,则T2取为32,否则T2取为16。
1.1.3 高密度噪声检测
对于高密度(密度大于40%)噪声的图像,采用7 px×7 px的邻域窗口。由于噪声密度大,所以需要采用区别于低密度噪声和中密度噪声的检测方法。
判定准则3:考察图像中的任意像素P,计算该像素灰度值与周围48个点的灰度值的差的绝对值。如果3 px×3 px的邻域窗口内对应的最小的3个绝对值之和大于给定的阈值T,或者5 px×5 px的邻域窗口内对应的最小的5个绝对值之和大于给定的阈值T+16,或者7 px×7 px的邻域窗口内对应的最小的7个绝对值之和大于给定的阈值T+32,则判定像素P为噪声像素;否则,判定像素P为非噪声像素。
对于非边缘点,这一判定准则能够取得较好的检测效果。然而,对于图像的边缘点,由于它们与周围点的灰度值差别较大,容易被误判为噪音像素,因此需要对这些已判定的噪声像素进行修正。
修正准则3:对于噪声像素Q,假设其灰度值为v,计算Q的5 px×5 px邻域窗口内非噪声像素的平均值,记为v1;计算Q的7 px×7 px邻域窗口内非噪声像素的平均值,记为v2。如果满足:v与v1的差的绝对值小于等于T1,或者v与v2的差的绝对值小于等于T2,或者Q的5 px×5 px、7 px×7 px邻域窗口内存在相似的非噪声像素(该像素的灰度值与v的差的绝对值小于等于20),则将像素Q修正为非噪声像素。其中参数T1和T2给定方法如下:计算Q的5 px×5 px邻域窗口内非噪声像素的方差,如果该方差值较大,则T1取为32,否则T1取为16;计算Q的7 px×7 px邻域窗口内非噪声像素的方差,如果该方差值较大,则T2取为32,否则T2取为16。
Chan等于2002年提出基于整体变分模型的图像修复算法[17]。但原始修复方法速度慢,修复效果不太理想。许多学者在此基础上提出了快速修复算法[21],并完全采用未破坏的区域信息对图像进行修复[22],取得了比较好的修复效果。
假设图像为u(x,y),本研究采用的TV模型修补基本公式[22]如下:
(1)
设目标像素点O的位置为(i,j),它周围上、下、左、右对应的邻域点位置组成的集合为∧={PW,PE,PN,PS}={(i-1,j),(i+1,j),(i,j-1),(i,j+1)}(如图2所示)。其中w,e,s,n分别为PW和O的中点、PE和O的中点、PS和O的中点、PN和O的中点,这4个点对应的像素值未知。令v=(v1,v2)=u/|u|ε,则它的散度为:
(2)
同理可得v1w,|uw|ε,v2n,|un|ε,v2s,|us|ε。将式(2)代入式(1),可得:
(3)
如果目标像素点O的上、下、左、右对应的邻域点均为非噪声像素,则按式(3)进行修复;如果存在噪声像素,则对式(3)修正如下:
(4)
其中:如果点p为非噪声像素点,则m(p)=1;如果点p为噪声像素点,则m(p)=0。这样可以减少噪声对修复的干扰。
基于整体变分模型的去噪方法流程,先输入噪声图像、迭代次数、初始阈值,然后分以下几个步骤完成:
1)根据噪声判断和修正准则得到噪声标识矩阵;
2)对噪声标识矩阵的噪声像素,按照公式(4)进行修复,并将修复后的像素标记成非噪声像素;
3)更新阈值;
4)重复步骤1)→2)→3),直到设定的迭代次数完成。
本文采用MATLAB R2021a作为开发工具,在Windows 10平台上实现了基于整体变分模型的随机值脉冲噪声去除算法。为了验证算法的性能,本研究使用512 px×512 px的Lena灰度图像进行了仿真实验,如图3所示。为了公平地比较各种方法的性能,本研究采用了以下两种方式:1)对于能够获取代码的方法,在不同噪声密度下对图像进行了10次去噪处理,并取平均值作为最终的去噪结果;2)对于部分缺失代码的方法,用该方法文献上提供的实验数据进行对比分析。通过与其他几种常用的去噪算法进行比较,本文从主观视觉效果和客观评价指标两方面对本文算法进行了评估和分析。
仿真实验中针对低、中、高密度范围,分别对图像叠加20%、40%、60%的随机值脉冲噪声,使用本文算法取得的去噪效果如图4所示。
本研究用峰值信噪比PSNR(peak signal noise ratio)作为评价图像质量的客观指标,并将本文算法与两类对比方法进行了实验对比。其中一类是基于开关滤波器的方法,如PSM、TSM、MSM、PWMAD、SNC、SPF、APCM、SSD;另一类是基于整体变分模型的方法,如OGSTV-Lp、DBMTVD。
表1展示了本文算法与其他算法在不同噪声密度下的去噪效果。从表1可以看出,本文算法在噪声密度不大于50%的时候,均表现出最好的效果;而在噪声密度高于60%的时候,本文算法稍弱于SNC算法。这可能是因为SNC算法使用了一个较大的邻域窗口(9 px×9 px),在高密度噪声的图像中,更有可能在窗口内找到未受污染的图像点,而小窗口则可能完全被噪声点占据。通过计算所有噪声密度区间内所有算法的PSNR值的平均值,可以发现本文算法仍然领先于其他算法,这说明本文算法在不同噪声密度下都具有较强的鲁棒性和去噪性能。
表1 不同算法Lena 图像去噪后PSNR 比较
为了有效地去除不同噪声密度的随机值脉冲噪声,结合开关滤波器的灵活性和整体变分模型的去噪效果,本研究提出一种新的开关整体变分去噪方法。本文方法对于不同密度的噪声,分别采用不同大小(3 px×3 px、5 px×5 px和7 px×7 px)的窗口邻域,进行自适应检测和修正,然后利用整体变分模型对噪声像素进行重构,保持图像的细节信息。同时,本文方法将噪声检测和去噪模型采用动态阈值重复迭代处理。实验结果表明,本文方法在不同噪声密度下能够取得较满意的结果,且具有较强的鲁棒性,优于对比的其他基于开关滤波器的方法和基于整体变分模型的方法。这说明本文提出的开关整体变分去噪方法可以更好地修复随机值脉冲噪声图像,保护更多图像细节。
未来的工作可以从以下两个方面展开:一是对不同类型噪声图像的处理效果进行进一步研究,比如高斯噪声、椒盐噪声等,探索模型的适应性和通用性;二是对整体变分模型的参数选择和优化进行深入探讨,提高算法的效率和稳定性,减少计算时间和内存消耗。