自适应IQA阈值序列图像NLM超分辨重建方法

2022-07-13 01:57韦子先熊正强毛昱童
计算机工程与应用 2022年13期
关键词:低分辨率像素点分辨率

韦子先,熊正强,毛昱童,孙 涛

武汉大学 电子信息学院,武汉 430072

图像空间分辨率是衡量图像质量的一个重要指标,也是光学成像技术的核心竞争力。在实际成像过程中,受成像传感器硬件成本、制造工艺、光路传输条件等诸多因素限制,呈现在人们眼前的图像未必都具备足够的分辨率,由此引出了图像的超分辨率(super resolution,SR)重建问题。

从低分辨率(low resolution,LR)图像生成高分辨率(high resolution,HR)图像的过程是个逆问题,需要建立合适的成像退化模型。由采样定理可知,多幅不同的高分辨率图像都可能通过下采样得到同一幅低分辨率图像。因此,图像超分辨率重建问题是一个非适定的问题(ill-posed problem),单纯从退化模型出发估计得到的求解结果是不稳定的。想要得到鲁棒性高且尽可能接近真实值(ground truth)的求解结果,往往需要引入其他约束条件。解决这一非适定问题的思路有两种:一种思路是引入先验知识,借助图像的先验知识(例如:机器学习的数据训练)去降低退化模型的复杂度或固定相关参数,从而得到稳定的解;另一种思路是通过对多幅具有互补信息的低分辨率图像的处理来重构一幅高分辨率图像。这种解决思路实际上是通过增加输入图像数量来引入病态问题的约束条件,通过图像序列间的相互约束关系来得到一个稳定解。

超分辨率重建根据输入图像的数量可以分为基于单张图像的超分辨率重建方法和基于序列图像的超分辨率重建方法。本文主要针对序列图像的超分辨率重建进行讨论。

经典的空域超分辨率重建算法,如:非均匀插值法[1-2]、迭代后投影法[3]、凸集投影法[4]等,存在求解结果不唯一的缺陷。基于最大后验(maximum a posterior,MAP)理论框架下的正则化方法[5]利用正则项来构造MAP的求解模型,将SR这一非适定问题转化成了最优化问题,以此获得重建的唯一解。因此,也成为了近年来目前多幅SR问题研究中的主流方法。

大多数基于梯度惩罚正则化项的算法,如:Tikhonov法[6]、TV(total variation)法[7]以及BTV(Bilateral-TV)法[8]等,都面临着保持边缘、纹理细节和抑制图像噪声的矛盾。为提升SR 的重建质量,必须引入更为精准的先验模型来对抗噪声,以实现抑制噪声和保留图像高频信息的平衡。非局部均值(non-local means,NLM)图像去噪方法是解决这一问题的有效方法,最早由Buades等[9]提出。Protter等[10]将NLM算法的思想拓展到序列图像SR问题中。传统的基于NLM的超分辨率重建方法需要通过大量迭代才能获得最佳的重建结果,而迭代次数的选取高度依赖使用者经验值,这极大地增加了算法的调参过程的复杂度。此外,由于这类算法属于典型的多入多出(multiple input multiple output,MIMO)结构,最佳SR 重建结果的筛选也多依赖于使用者的主观评价,这无疑降低了算法的鲁棒性。

为了解决这两个问题,本文提出一种基于图像质量评价(image quality assessment,IQA)阈值自适应迭代的NLM 超分辨重建算法。设计了一种SR 重建结果质量评价指标。将该指标引入到NLM 重建算法中:一方面作为阈值,用以确定算法迭代收敛条件,显著缩短重建过程的耗时,解决了NLM重建算法耗时长的问题;另一方面作为评价标准,用以筛选多个输出结果中重建效果最佳的高分辨率图像。算法分别从频域和空域评估重建图像质量作为阈值,实现了NLM 超分辨率重建算法的自适应迭代,解决了NLM 参数设置和结果选取高度依赖经验值的缺陷。由于同时应用了有参评价和无参评价两种方式计算重建结果质量,有效保证了算法的鲁棒性。

1 相关工作

1.1 NLM图像去噪

NLM图像去噪方法是一种空域图像去噪方法。它充分利用了图像中的冗余信息,能够在去除噪声的同时最大程度的保持图像中边缘等高频信息的完整性。NLM 算法的基本思想是:一幅图像中包含许多和目标像素周围相似的像素块,通过赋予这些相似块不同大小的权重后平均对目标像素进行滤波操作,从而达到图像去噪的目的。

设在包含噪声的原始图像中,目标像素点i的灰度值为I(i),则去噪后目标像素点的估计值为:

其中,Ω表示以目标像素点i为中心的搜索区域;j表示搜索区域内任意一个像素点;I(j)表示像素点j的像素灰度值;w(i,j)表示像素点j在参与目标像素点i重建过程中的权重大小,反映了二者的空间相似程度;C表示搜索窗口中所有像素点参与重建过程的权重之和。

NLM去噪的窗口搜索过程如图1所示,图中蓝色方框为点i去噪时的相似像素点搜索窗口,而红色方框为比较窗口。其中,像素点i所在的比较窗口将和搜索窗口内的其他像素比较窗口进行比较从而得到不同的权重,然后进行加权均值滤波去噪。

图1 NLM去噪示意图Fig1 Diagram of NLM denoising

非局部均值图像去噪算法不再简单的搜寻像素邻域内的有用信息,而是在图像全局范围内通过比较像素块的相似性决定像素点在参与滤波重建时的权重大小。因此,相较于已有的空域图像去噪算法,NLM具有更好的图像去噪效果。

1.2 NLM超分辨率重建

超分辨率重建是图像成像退化过程的逆过程,在数学上表现为病态求逆问题。解决此类问题需要建立适当的图像退化模型,添加相应的约束条件后求解,从而得到高分辨率图像的一个可能估计值。

考虑一般性的图像获取过程,真实场景发出的光线经过大气扰动、模糊、降采样和传感器噪声等过程,最终在接收端得到了多幅低分辨率退化图像。具体成像模型可以表示为图2所示。

图2 图像退化模型Fig.2 Model of image degradation

序列图像NLM超分辨率重建将一般多幅图像超分辨率重建过程中的图像配准和融合合二为一,通过提取图像序列间的冗余信息并融合达到提高图像空间分辨率的目的。其基本思想可以表述为:由输入的低分辨率图像按像素构建大小相同的图像块;然后选择其中一幅图像作为参考,将参考图像中的每个图像块都与其搜索区域和其他低分辨率图像中的图像块比较;加权平均计算后,得到的图像块估计值插值融合到高分辨率图像中,即可获得一张高分辨率的重建结果。

设参考图像为低分辨率图像序列yt中的图像G。则图像G中的像素点i的重建结果可以表示为公式(3):

其中Yt0和Yt表示低分辨率图像yt0和yt对应的高分辨率图像,h表示滤波参数,用来控制比较块权重的衰减程度。与NLM图像去噪算法主要考虑比较块之间的距离相比,序列图像NLM 超分辨率重建算法重点关注比较块之间的相似程度,从而在复杂退化模型中获得更好的重建鲁棒性。

2 本文算法

2.1 算法流程

本文所做工作重心在于NLM超分辨率重建算法的迭代收敛条件和最佳重建结果评价,本节将介绍基于自适应阈值迭代和GPU 加速的序列图像NLM 超分辨率重建算法流程。

从公式(3)可知,基于NLM 的超分辨率重建算法的时间复杂度极高,处理十分耗时。而GPU 作为图像渲染专用处理器,具有大量可以并发执行的运算单元。因此本文将传统基于CPU 串行执行的NLM 超分辨重建算法并行化,借助GPU 的并行运算能力加快重建算法的执行速度。关于GPU 的具体分析见本文的2.3 节。

最终本文提出的自适应迭代基于GPU 的序列图像超分辨率重建算法流程如图3 所示,具体流程如下所示。

图3 本文算法流程Fig.3 Proposed algorithm workflow

(1)CPU端初始化:在CPU端读取输入的低分辨率图像序列。使用Lanczos4方法,根据超分辨率的上采样倍数对每张低分辨率图像进行一对一的插值操作,得到对应索引位置上的初始高分辨率图像。对比原始低分辨率图像,插值生成的初始高分辨率图像没有利用序列间的冗余信息,未能增加图像中的信息量。然后对低分辨率图像序列和高分辨率图像序列进行图像镜像延拓操作。延拓的大小为相应尺度上搜索窗口和比较窗口大小之和的一半。

(2)GPU 端初始化:在GPU 端分配合适的现存,用于存储待处理图像和处理后的结果;将目标处理图像和参考图像从CPU端传送到GPU端。

(3)根据图像的大小设定数量合适的线程数量,发射GPU端内核处理函数NLM_GPU进行并行化的NLM处理。

(4)重复步骤(1)~(3),直至完成整个图像序列的超分辨率重建。

(5)进行图像综合质量评价,发射内核函数NLM_IQA,每个线程负责序列中的一个重建结果的质量评价计算。等待所有线程计算完成重建结果的质量评价后记录该次迭代中最佳的重建结果X(k,Mbest)。

(6)将所有重建结果从GPU传回CPU。

(7)根据整个本文提出的图像质量评价准则判断是否满足收敛条件。若满足收敛条件则完成计算;若不满足则继续下一次迭代计算。

(8)在得到最佳迭代次数和最佳重建结果后,完成计算,保存最佳结果并显示。

为避免评价误差影响算法鲁棒性,实际执行过程中,步骤(7)设定为有50%的以上的图像连续两次迭代后的评价结果不如上次迭代时,认为迭代效果已收敛,后续迭代均为无效迭代(即迭代停止)。

2.2 自适应迭代阈值

在序列图像超分辨率重建过程中,低分辨率图像序列之间需要包含亚像素级别的位移。这样才能够在在重建过程中将这些帧间冗余信息进行挖掘和融合利用,构建出高分辨率的图像。

对于NLM 序列图像超分辨率重建算法,每张图像的重建过程都需要在整个图像序列中搜寻相似的图像块,因此目标图像本身是作为参考图像存在的。而图像序列中每张图像之间是存在一定差异的,这就导致整个图像序列的重建结果是不同的。如图4 是包含40 张低分辨率图像超分辨重建的部分结果。

图4 图像重建效果Fig.4 Results of image reconstruction

此外,通过计算同一次迭代重建中不同图像的重建结果的SSIM和PSNR来得到分辨率提升程度。具体结果如表1所示。

从表1 的计算结果可以看出,同一次迭代操作中,第9帧的图像质量更好。然而,SSIM和PSNR是两种有参考的图像质量评价方式,在许多实际超分辨率应用场景中,只有低分辨率输入序列而没有高分辨率参考图像。此时无法单独使用SSIM和PSNR等有参评价方法来评估重建图像质量。

表1 不同图像帧重建效果Table 1 Results of different image frames reconstruction

另一方面,基于NLM 的序列图图像超分辨率重建算法需要通过迭代重建才能够获得最佳效果,现有方法通常依赖经验值设置迭代次数为8、16或32次。基于迭代重建的方法均存在过度迭代后出现重建效果下降的情况,这是重建结果中误差累积导致的。因此当达到最佳重建结果后应该停止迭代操作,若继续进行迭代操作将会导致重建效果的下降。

为解决上述两个问题,本文结合无参考图像质量评价和相对有参考图像质量评价方法,设计了一种自适应迭代阈值QSR,用以判别重建方法的最佳迭代次数和最佳重建结果。具体的计算方式如公式(5)所示:

BRISQUE 从图像频域中提取图像本身的特征,并通过拟合广义高斯分布和SVM回归的方式计算图像质量;而PSNR 是一种全参考的图像评价方法,通过计算图像的峰值信噪比判断图像相似程度。需要特别指出的是,本文实验环境中真实图像(ground-truth)未知,并非是计算重建结果与HR参考图像的PSNR来评价重建质量。本文通过计算相邻两次迭代结果的PSNR 来判断重建结果的相似度,以此从一定程度上判断迭代的收敛程度。

为了避免评价误差影响算法的鲁棒性,在实际实验过程中设定:当一次迭代操作过程中存在50%的图像在连续的两次迭代操作过程中的最终得分小于零时,认为迭代操作已经收敛,后续的迭代操作为无效操作,应终止迭代。

2.3 GPU重建

近些年,随着计算机软硬件的发展,在GPU中进行通用计算成为可能。GPU 在硬件上有着进行并行计算的独特优势:数量庞大的数据运算单元和海量数据的吞吐能力。

序列图像的超分辨率算法的计算量庞大且各个计算操作之间并不相关联,属于十分典型的SIMD数据操作。当使用GPU 进行处理超分辨率重建时,将会产生远超CPU运算的效果。

CUDA(compute unified device architecture),是英伟达公司于2007 年推出的GPU 通用计算的语言架构。通过CUDA,开发者可以使用C、C++等语言在英伟达公司旗下的GPU产品上进通用计算。

从公式(3)可以看到,基于NLM的超分辨率重建算法的时间复杂度极高。假设图像序列中有t张大小为h×w的低分辨率图像,搜索窗口和比较窗口的大小分别为b和p,共进行n次迭代重建操作,则整个图像序列重建的时间复杂度为O=n×t×h×w×b2×p2。

分析NLM 超分辨率计算过程,每个像素点的计算是互相不关联的,因此可以同时进行多个像素点的重建。假设可以同时进行计算的像素点数量为m,则整个超分辨率重建的时间复杂度变为O=n×t×h×w×b2×p2/m。

在实际进行计算操作时,能够同时进行计算的像素点数量和线程数量是相同的,均取决于设置的线程块(block)和线程格(grid)的大小。同时,由于图像数据需要在内存空间和显存空间之间传递、同时发射的线程在结束时需要进行线程同步等待以及GPU 运算单元的计算能力远不如CPU 等因素的限制,并行化的序列图像NLM 超分辨率重建算法达不到理论上的加速效果。

3 实验分析

3.1 自适应迭代阈值实验

为验证本文提出算法的有效性,本文实验首先进行迭代次数为16 次的迭代重建,然后对比人工经验筛选和本文提出方法的效果。在呈现实验结果时,为了更直观地反映重建质量的变化趋势和变化程度,对重建结果的QSR做了一次差分,即用ΔQSR表示本次迭代重建结果相对上一次迭代重建结果的提升程度。当ΔQSR为正数时表示重建效果有所提升;ΔQSR为负数时表示重建效果出现下降。而ΔQSR的大小则反映了重建提升程度的大小。

实验1 低分辨率序列图像数量为20,单张图像分辨率为49×57的灰度图像,超分辨率重建倍数为3倍。

如图5所示为实验1所采用序列中第2张图像的重建结果。从结果可以看出,随着迭代次数的增加,图像的红色方框中文字逐渐变得清晰。但是,随着迭代次数的进一步增加,这些文字又逐渐变得模糊。

图5 实验1中不同迭代次数下的ΔQSR(迭代次数/ΔQSR)Fig.5 ΔQSR of different iterations in test 1(iterations/ΔQSR)

而通过计算本文的指标分数发现,随着迭代次数的逐渐增加,指标分数逐渐变小,但是始终为正数,说明图像的重建质量始终在增加,但是图像质量的增加趋势越来越弱;而当迭代次数大于6 次时,分数开始变为负数,说明此时图像的质量在随着迭代已呈下降趋势,后续的迭代操作将无法为图像质量增加做出贡献,为无效迭代。

实验2 低分辨率序列图像数量为25,单张图像分辨率为200×100的RGB图像,上采样倍数为3倍。

如图6 为实验2 所采用序列中第16 中图像的重建结果。和实验1类似的,当迭代次数大于6之后,图像的重建质量没有继续增加反而出现了下降的情况。

图6 实验2中不同迭代次数下的ΔQSR(迭代次数/ΔQSR)Fig.6 ΔQSR of different iterations in test 2(iterations/ΔQSR)

如图7 为整个图像序列在不同迭代次数时的重建效果提升情况。可以看到,整个图像序列的指标分数的变化情况几乎是相同的:每张图像的指标分数都经历一个逐渐变小的过程。这与重建过程的现象也是符合的,即图像的超分辨率重建效果在开始迭代时提升明显,而随着迭代次数的增加提升效果逐渐微弱。

图7 所有重建结果ΔQSR 的变化趋势Fig.7 Trendency of ΔQSR in all reconstruction results

如图8 所示为图像序列在不同迭代次数时的正负情况,红色表示指标分数为正数,蓝色表示指标分数为负数。从图中数据可以发现,随着迭代次数的增加,大部分图像的指标分数小于0,图像的重建质量呈现下降趋势。而后续虽然有部分图像的指标分数再次上升,但是经过迭代降质后的图像质量依旧是下降的。经过计算,整个图像序列在完成第6次迭代之后出现50%图像指标分数小于0 的情况。在此时终止迭代符合节省时间和筛选最佳迭代次数的目标,而在每次迭代结束后,通过对指标分数历次迭代质量进行叠加,得到每张图像重建质量的总评分。在迭代终止后筛选出得分最高的图像作为最佳的重建结果。通过计算,序列中第12 张图像在第7 次迭代后得到整个重建过程中的最佳重建结果,如图8中绿色标记位置。而通过与图像的真实值对比,计算所有重建结果的SSIM可知(如图9所示),图8中绿色标记位置的SSIM最大,为0.987 4,与真实值最为接近。

图8 各次重建结果ΔQSR 的全局分布Fig.8 Distribution of ΔQSR in each reconstruction result

图9 所有重建结果的SSIM分布情况Fig.9 Distribution of SSIM in all reconstruction results

从上述两个实验可以看出,随着迭代次数的增加,基于NLM的超分辨率重建算法会出现图像质量下降的情况的,其原因在于计算过程中的误差累积。本文通过提出的自适应阈值,分别从频域和空域评估重建图像质量,实现了NLM超分辨率重建的自适应迭代,计算得出了最佳重建迭代次数,有效解决了NLM 参数设置和结果选取高度依赖经验值的缺陷,同时通过判断迭代收敛终点,避免了迭代计算过程中的无效操作,大幅缩短了超分辨率重建的耗时。

3.2 GPU加速实验

根据第2.3节的分析,序列图像NLM超分辨率重建算法的处理时间受到图像序列数量、图像的分辨率、搜索窗口和比较窗口大小等因素的影响,本文提出的GPU并行加速方法能有效提升算法效率。为了说明GPU对算法加速的效果,本文设计了多组对照实验,采用不同分辨率的图像和序列数量与采用同一组图像序列而搜索比较窗口的大小不同。

本文实验环境为:Intel Core i7-4790K,NVIDIA GTX 780,Visual Studio 2015,OpenCV3.4.5。

为了客观评价相同处理流程在CPU 和CPU+GPU平台上运行的加速效果,实验过程中将会记录程序在不同平台上运行耗时,并将二者时间之比作为综合加速比,具体运算方式如公式(6)所示:

其中,TCPU表示程序在CPU平台上的处理耗时;TGPU表示程序在GPU平台上的处理耗时;k表示综合加速比。

实验1 采用多组灰度图像序列,序列之间的分辨率和图像数量不相同,但是采用相同大小的搜索窗口和比较窗口进行处理。设置低分辨率图像的搜索窗口的大小为3,比较窗口的大小为7。表中的数据为进行一次迭代操作的耗时。

在表2实验结果中,综合加速比在5到10倍之间浮动。同时,分辨率低的图像处理耗时较少;序列图像数量较少的图像序列处理耗时也较少。但不管是分辨率不同还是序列图像数量不同,GPU并行化后的处理时间都显著缩短了。

表2 不同图像序列的加速效果Table 2 Acceleration effects of different image sequences

实验2 使用同一组RGB 图像序列,分辨率为200×150,序列图像数量为42。实验时,使用不同大小的搜索窗口和比较窗口进行处理。表中的数据为进行一次迭代操作的耗时。

从表3中数据可以看出,搜索窗口的大小对处理时间的影响十分明显,在比较窗口大小相同的情况下,搜索窗口为5的处理耗时是为3的8倍左右。当搜索窗口大小不变,比较窗口大小逐渐增大时,处理时间虽然有所增加,但是增加的幅度并不明显。而在使用GPU 对每个搜索窗口处理进行并行化后,处理时间显著减少,加速比在10 到30 之间不等。同时,当处理的数据量较大时,GPU加速的优势更加显著。

表3 不同窗口大小的加速效果Table 3 Acceleration effects of different window sizes

上述两个实验表明,本文提出的基于GPU 加速方法,极大地缩短了序列图像NLM 超分辨率重建算法的运行时间,提升了算法的效率。

4 总结

本文提出一种基于IQA阈值自适应迭代的NLM超分辨率重建算法。算法分别从频域和空域,通过有参考评价和无参考评价结合的方式评价重建图像质量,并将该指标作为自适应阈值用以判断迭代的收敛程度。通过这种方式,实现了NLM 超分辨率重建算法的自适应迭代,解决了NLM 参数设置和结果选取高度依赖经验值的缺陷。实验结果表明,本文提出的算法能有效避免超分辨率重建计算过程中的误差累积,在保证算法鲁棒性的同时极大降低了算法的时间消耗。

猜你喜欢
低分辨率像素点分辨率
红外热成像中低分辨率行人小目标检测方法
基于生成对抗网络的无监督图像超分辨率算法
图像二值化处理硬件加速引擎的设计
基于局部相似性的特征匹配筛选算法
基于边缘学习的低分辨率图像识别算法
基于像素点筛选的舰船湍流尾迹检测算法
原生VS最大那些混淆视听的“分辨率”概念
树木的低分辨率三维模型资源创建实践
基于canvas的前端数据加密
从600dpi到9600dpi