在图像复原应用中,在含有噪声的情况下进行简单的逆滤波会带来很大的失真,最常见的滤波方法就是维纳滤波。
在频率域中做滤波的话,根据表达式:
F(u,v)为滤波后清晰图像的傅里叶频谱图像,H(u,v)为模糊核频谱图像,G(u,v)为模糊图像频谱图像。
理解该公式有一点要求,就是上述三个频谱图像矩阵的维度必须一致,其实也就是模糊核和模糊图像一致就可以。计算时,取相对应位置上的值出来进行计算既可以,假设维度为300*400,也就是说要进行120000次该公式的计算就可以求出清晰图像频谱图,且这120000次计算之间相互独立不干扰,这点是很重要的,120000次计算可以并行执行,为计算提速带来了极大方便。
但是涉及具体计算时,我个人觉得存在一个问题,就是按照一般理解,模糊核比起图像来说是相对较小的,同时图像的傅里叶变换得到的频谱图像的大小是跟原始图像一样的,所以这里的H(u,v)和G(u,v)照理说是不同维数的,但是要能计算必须变成相同的维数。
这里理论上我不知道该怎么办。但是翻看matlab中deconvwnr.m发现代码中使用了psf2otf函数,将我们的点扩散函数变成了光传播函数(optical transfer function,otf),这个函数可以将otf变为你指定的大小。在后面的计算中就用这个作为模糊核的频谱图进行计算。
摘自百度百科的一句话:点扩展函数是一点光源经光学系统后所成的衍射斑分布的函数。它在空域表征光学系统的特性,传递函数在频域表征系统的特性。实际上两者有简单关系,即点扩展函数的傅里叶变换就是光学系统的传递函数。
但这里就存在一个疑问,我用matlab对相同的一个psf做fft和psf2otf,第一个得到的是一个复数矩阵,第二个得到的是一个实数矩阵。