2

我正在研究逆向过滤,我正在尝试对其进行编码,我从网上寻找了一些参考资料。每个人都考虑过我所指的冈萨雷斯书中没有的光学传递函数。

% Inverse_Filter_Demo-


clc
clear all
close all


original_image=imread('cameraman.jpg'); %loading the original (un-blurred) image
original_image=double(original_image);

%The  blur function (PSF- Point Spread Function) that will be added  to the original image
PSF=fspecial('motion',20,45);

%Adding blur to the original image
degraded_image = imfilter(original_image,PSF,'circular','conv');

OTF= psf2otf(PSF,[size(degraded_image,1) size(degraded_image,2)]);%Getting OTF from PSF
Inverse_Filter=conj(OTF)./((abs(OTF)).^2); %The inverse filter

%Preforming Fourier Transform to the degraded image
FT_degraded_image=fftn(degraded_image);

%Preforming the restoration itself
restored_image=abs(ifftn(FT_degraded_image.*Inverse_Filter));

%Presenting the restoration results:

figure;
set(gca,'Fontsize',14);
colormap(gray);
imagesc(original_image,[0 255]);
truesize;    
title('Original image');


figure;
set(gca,'Fontsize',14);
colormap(gray);
imagesc(degraded_image,[0 255]);
truesize;    
title('Degraded image');


 figure;
set(gca,'Fontsize',14);
colormap(gray);
imagesc(restored_image,[0 255]);
truesize;    
title('Restoration of the degraded image (using Inverse Filter)');
4

1 回答 1

7

您的问题不清楚,可能更适合(dsp.stackexchange.com)。但是,如果您要问的是“什么是光学传递函数?” 那么 OTF 的Wikipedia 文章是一个很好的起点。

考虑它的最简单方法是光学传递函数是点扩展函数 (PSF) 的傅里叶变换。通常 PSF 是一个过滤器(卷积核),它描述单个针孔型光源如何通过某些设备涂抹到实际图像中。

OTF 只是该拖尾过程的幅度/相位表示。图像的傅里叶变换将在相空间中乘以滤波器,以产生模糊的、真实的输出图像的傅里叶变换(而不是卷积,这是您在空间域中使用 PSF 所做的)。在应用 OTF 后应用傅里叶逆变换应该会给您设备将产生的实际图像。

为了数学上的方便,有时为了处理效率,使用 OTF 而不是常规空间域的 PSF 可能更方便。这就是为什么您会看到一些算法和教科书使用 OTF 而不是 PSF 来描述他们的方法。

于 2012-04-18T21:56:10.487 回答