之前我们介绍了图像增强,图像增强是根据我们的需求对原始图像进行处理,如blur等。图像恢复则像是图像增强的逆,但是也不绝对,主要是我们希望回复图片真实原始的样子。比如deblur,去噪等等。这个待处理的图像不一定是我们增强的结果,也可能是硬件或者拍摄时候引入的噪声,模糊,抖动等等。
下面是几个distortion的例子:

上述中的blur分为optical blur(例如聚焦失败),以及motion
blur(因为移动产生的模糊),而移动模糊又分为了全局(相机移动产生的模糊)和局部(拍摄的物体产生了移动,而背景是清晰的)。由于在形成image时候出现的这些噪声,我们拍摄的照片与真实的照片总是有差距的。我们假设真实照片应该是,而拿到的照片是,那么图像恢复的目标是找到一个操作:
为了衡量恢复得好坏,我们使用MSE:
不过,需要知道的是这个只是在评测一个算法的时候利用实验的数据来做,因此噪声可能是人为模拟实际添加的,然后根据原来的图片与处理之后的图片进行对比。一般来说如果在这些图片上表现良好,现实中也会有不错的表现。毕竟实际上,我们无法得到真正的”True
image”。
一般来说,我们假设图像的distortion由两部分组成:degradation与noise,模型如下:

这里degradation一般是某种卷积操作,也就是:
对应到频域:
那么想要做restoration,就是找一条返回去的路。
噪声
无从下手可以先从简单的开始。比如这里,我们先单独考虑噪声。一般来说噪声有下面几种:
Gaussian noise:
Rayleigh noise:
Erlang (Gamma) noise:
Exponential noise:
Uniform noise:
Impulse (Salt and Pepper)
noise(椒盐噪声):
他们的图像分别如下:

对于一张图片添加不同的噪声,可以得到下面的几种效果:
原图:



那么,如何知道图片上的噪声是什么类型?首先,选择一个图片应该比较平滑的区域,画出他的直方图。实际上,我们可以根据直方图的形状来估计噪声的类型,因为理论上平滑区域的直方图是只有一条线,因此直方图的形状实际上是噪声的形状,如下图:

很明显,第一个应该是高斯噪声,而第二个是Rayleigh,第三个是uniform噪声。
如果我们只考虑噪声,那么这里的Degradation中的就是一个单位矩阵,与相乘后并不改变的值,用公式表示如下:
$$
g(x,y) = f(x,y) + n(x,y)\\ G(u,v) = F(u,v) + N(u,v)
$$
而根据直方图,我们可以估计出噪声的均值,方差等等,从而从源头上实现降噪。这个降噪的过程也就是使用滤波器。对于不同的噪声可以使用不同的滤波器来完成降噪。例如对于椒盐噪声可以使用中值滤波器,或者均值滤波器(会使得图像变得模糊)去除。除此之外我们还有最大最小值滤波,以及频域上带阻,带通等等滤波器。正如之前说的,对于带阻(通)滤波,可以有理想的,高斯的以及在理想与高斯之间的Blutterworth滤波:

理想带阻滤波:
Blutterworth:
高斯带阻滤波:
下面是一个带阻滤波的例子:

在这里,再介绍一个Notch滤波。它转到空间域下的可视化如图:

数学形式:
其中:
在频域上,它的图像如下:

可以看到的是它阻塞了两个特定区域的频率,同样从sharp到smooth,也有理想的North滤波,Blutterworth
North滤波,高斯Notch滤波。
线性,空间不变的Degradatioon
下面这张图,是一个经过高斯滤波,然后产生模糊的情况。

Blur操作,在频域上的表现是一个低通滤波器。假如我们已经知道了这里的的形式,忽略噪声,那么对于原始图像的估计就是:
这个过程如下:

我们可以看看对于一张图片加上不同的高斯滤波之后产生blur,然后反向来deblur的几个例子:

这几张图,原始图是一样的,而加上不同的高斯滤波后造成不同程度的模糊,可以看到模糊程度越高,而deblur的效果越差。Why?
原因主要是因为我们忽略了这张图片本身具有不可避免的噪声(由于硬件传感器等造成的),而deblur则会放大这个噪声的效果。
$$
G(u,v) = H(u,v)F(u,v) + N(u,v)\\ \hat F(u,v) = G(u,v)/H(u,v) = F(u,v) +
N(u,v)/H(u,v)
$$ 这个过程用一个直观的解释如下:

因此诞生了一个新的Wiener滤波器: $$
\hat F(u,v) = G(u,v)W(u,v),\\ W(u,v) = \frac{H^*(u,v)}{\vert H(u,v)
\vert^2 + K(u,v)}
$$
这里的。而以及可以大约估计得到,或者由经验确定一个常量。Wiener
Filter在最小化MSE:
这其中的推导可以去查阅相关的论文。关于它的直观化理解如下:

可以看到,的形状到了高频之后形状并不会持续的上升,而会有下降,这样一定程度上即保证了高频区域的恢复也保证了不会放大噪声。
它的deblur效果如下(这里的高斯滤波,noise
):

因此可以看到,了解噪声产生过程是非常重要的,可以帮助我们处理更高的一些算法。
要注意这里的高斯噪声,和高斯滤波,二者是不同的,第一种是噪声分布是高斯分布,然后直接叠加到像素,而第二种是卷积操作,在频域上的乘积,造成图像的模糊。因此他们的处理方法也是不同的,对于高斯噪声的处理一般采用自适应滤波。
实际上,关于Deblur有非常多相关的研究。这里有一篇关于夜间图片deblur的文章。夜晚的blur造成主要是因为深夜因为光照不足,所以需要更长的曝光时间,而人的手上细微的抖动就会被叠加出现模糊。而夜晚图片经常会有点光源,这些光源的轨迹实际上就代表了相机运动的轨迹,文章就以这个为先验信息,来进行deblur,这是一个非常新奇的观点:
Deblurring
Saturated Night Image With Function-Form Kernel。