因为大三的大创项目主要围绕图像修复,之前在个人博客中更新了图像降噪相关的小结,但感觉这违背了我最开始做个人博客的初心,即我并不想把自己的博客变成一个技术博客,而仅仅是个人的思考和记录生活的一个地方。另外,博士生的任务一方面是要去探索知识,另一方面则是需要传播知识,这也是这篇综述诞生的一个原因,虽然可能看的人并不会很多。言归正传,今晚花一个简短的时间进行梳理,希望对各位有所帮助,如有不正确的地方请务必指出。
前言
这篇文章主要来讲述关于图像降噪的一些工作,小结几类图片降噪方法。降噪的本质,是要从观测值中分离噪音,保留图像。算法的关键,是要掌握并借助于图像本身独特的性质和结构。根据算法利用了什么样的图像性质,就可以分为许多流派了。基本上可以这么划分:滤波类, 稀疏表达类,聚类低秩和外部先验。前几种方法会比较传统,目前的主流研究方法肯定还是以深度网络DNN方法为主。不过在真正应用的时候,传统方法不一定就不被待见,毕竟往往传统算法的运算开销往往不大,这也是一处trade-off。
滤波类算法
滤波算法,最知名的是BM3D算法了。这是一种相对比较传统的算法,通过设计滤波器对图像进行处理。特点是速度比较快,很多卷积滤波可以借助FFT变换来加速。近期的一些算法也结合了一些block matching来利用图片的self-similarity,效果不错。
有两种采用滤波类的算法,一种是非局部去噪方法Non-local method,是一种空间算法,另一种transform method是一种转换算法,都在图像去噪中得到可观的效果,所以自然而然地想:同时使用两种算法效果如何?这便引出了BM3D去噪算法。
BM3D算法总体分为两大步估计,每一大步又分为三小步:相似块分组、协同滤波和聚合。从2007年提出,它在近十年内都被认为是很好的算法,甚至目前一些论文也经常引用到这个模型作为对比。说白了,该算法通过相似判定找到与参考块相近的二维图像块,并将相似块按照组合成三维群组,对三维群组进行协同滤波处理,再将处理结果聚合到原图像块的位置。具体的话,大家可以自己下来阅读相关资料。
稀疏表示类算法
从稀疏分解与稀疏表示的角度看,含噪的图像信号包括两部分,干净图像信号与噪声。由于干净的图像信号是又一定的结构的,故干净图像信号被认为是图片中的稀疏成分,通过设定稀疏表示阈值可以保留下来。而噪声是随机的,不相关,因此没有结构特性,所以我们的目标就可以从原本的图像信号中提取干净有结构的图像信号,去除随机噪声信号。相关的方法有很多,这里简单提可能最为大家所熟知的SVD奇异值分解方法。
从大二上学到《矩阵论》,但很久才知道SVD可以用于图片压缩。奇异值分解是一个能适用于任意的矩阵的一种分解的方法,假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量)。当我们从大到小开始截断,丢弃较小的奇异值并重建图像之后,我们就能得到压缩之后的图像了。在Python的cv2包中有相关实现。而SVD用于降噪的原理是,奇异值较小的部分,频率较低,大多不是信号而是噪声部分,将其去除后(只取前面频率较高的部分),就相当于进行了降噪处理。
这里有个彩蛋,这篇专栏文章的封面猫咪图就是用SVD降噪生成的,采用了前50个较大特征值。
聚类低秩
近几年,低秩矩阵恢复(LRMR)广泛用于图像处理用途图像恢复,比如去噪、去模糊等。一幅清晰的自然图像其数据矩阵往往是低秩或者近似低秩的,但存在随机幅值任意大但是分布稀疏的误差破坏了原有数据的低秩性。低秩矩阵恢复是将退化图像看做一组低维数据加上噪声形成的,因此退化前的数据就可以通过低秩矩阵来逼近。
设B为模糊图像,根据低秩分解有B=I+N,其中I为清晰图像,是低秩的。N为噪声具有稀疏性。
由矩阵秩的定义知道,若将图像看成一个矩阵,那么它的基的数量越少,基对应的线性无关向量数量就越少,矩阵的秩就越小。当它远远小于矩阵的大小的时候,图像就是低秩的。低秩矩阵的每行或者每列都可以用其他的行或者列线性表示,这说明这个矩阵包含了大量的冗余信息。利用这种冗余信息可以对确实图像信息进行恢复,可以将多出来的噪声信息进行去除,还可以对错误的图像信息进行恢复。图像处理中,秩可以理解为图像所包含的信息的丰富程度,在现实生活中,一张图片很多成分是相似的。比如一张大草原的图片:草原是由很多草组成的,而草是相似的,所以如果全是草,那么这张图所包含的信息量是很少的的,因为可以理解为草是草的复制品。图片中如果有比较突兀的成分,比如蒙古包,会增加图像矩阵的秩。
我们可以利用图像的低秩性来恢复图像,首先构建融合了低秩矩阵先验的模型,再求解这个模型得到低秩的矩阵。这种基于低秩矩阵逼近(Low-Rank Matrix Approximation,LRMA)的模型称为低秩矩阵恢复模型(LRMR)。目前,LRMR主要有鲁棒主成分分析robust PCA,RPCA)、矩阵补全(matrix completion,MC)和低秩表示(low-rank representation,LRP)等三类模式。LRMR其实就是假设给定数据矩阵D,D=A+E,其中A和E未知,但是A是低秩的。
外部先验
如果从有噪音的图片本身无法找到规律,我们也可以借助其他类似但又没有噪音的图片,来总结图片具有的固有属性。这一类方法利用的外部图片来创造先验条件,然后用于约束需要预测的图片。这种想法和Deep learning中有监督/半监督等学习方法不谋而合。所以倒退几十年,这种工作并不算很多。
最近随着深度网络的兴起,相关的工作也就有很多了,值得去研究的地方也很多。
近些年深度卷积网络模型在图像生成和修复上面表现很好,一般认为好的原因主要是由于网络基于大量的图片训练,从数据中获取了足够的信息,从而使得模型性能这么好。通常需要大量的训练图像样本对,即带有噪声的图片和去噪后的图片,可是去噪后的图片往往很难获得,比如在摄影中,需要长曝光才能获得无噪声图片。在医学MRI图像中,获取无噪声图片则更加难。所以在一些场景下,我们可能只有含有噪声的图片,这给修复图片带来了一定的困难。那如果我们在这样的场景下,是否还能根据图片自身的性质进行修复呢?
比如可以采用生成对抗网络GAN去生成低噪声的图像。所以现在去搜“图像降噪”,大部分文章和总结都会讲解基于深度网络的方法。
在CVer眼里,可能降噪是一个既为传统又为复杂的工作。这里就分享一个WenBihan学长
暂无评论