【问题标题】:Deblurred images in Matlab by division processMatlab中通过除法处理的去模糊图像
【发布时间】:2014-11-29 02:30:24
【问题描述】:

我试图通过频域中的特定滤波器将频域中的模糊图像除以频域中的特定滤波器来对图像进行去模糊...问题是除法的结果是NaN!图像也是全黑的。谁能解释我做错了什么?我的代码如下:

G1 =  imread('B1.jpg');
figure, imshow (G1); 
% FFT for B1
G_1 = fftshift(G1); 
G_1 = fft2(G_1); 
G_1 = ifftshift(G_1);
figure, imshow( G_1); 

h_1 = fspecial( 'gaussian', [512 512] , 1.0 );
% Fourier Transform of 2D Gaussian 
H_1 = fftshift(h_1);
H_1 = fft2(H_1); 
H_1 = ifftshift(H_1); 
figure, imshow (abs (H_1) ,[ ]);

% Apply the filter for Image G_1 
 F_1a = G_1 ./ H_1; 
F_1a = ifftshift (F_1a); 
F_1a = ifft2 (F_1a); 
F_1a = fftshift (F_1a); 
figure, imshow (F_1a);

您可以在下面找到B1 图片:

【问题讨论】:

    标签: image matlab image-processing


    【解决方案1】:

    一般来说,只要分子和分母都为零,您就可以得到 NaN。此外,只要你的分母为零,你就会得到一个 Inf。要么不好。所以,在你的G_1./H_1 操作之后,我会检查 NaN 和 Inf 并用零替换。

    【讨论】:

    • 完全同意这里的 NaN 划分。此外,OP 正在做的是反卷积,但是一旦引入任何少量噪声,它就会变得不稳定。当有NaNInf 时,我不确定是否将频谱设置为零......但可以尝试一下!
    • 我不会除以“H_1”,而是看一下 Weiner 反卷积。它将给出更稳定的结果并考虑图像噪声。简单地除以“H_1”将大大提高输出图像中的噪点
    • @docPhil - 100% 同意。
    • @rayryeng 这是分配尝试比较 wiener2 函数和除法过程!除法不起作用我认为我的代码中的编码错误!而且我不知道问题出在哪里!我认为在划分过程之后我应该得到清晰的图像。但我不是!知道如何修复此代码吗?
    • 如果你应该比较它们,那么也许这样做是故意的。这个问题的答案可能是直接去卷积不好,最好使用韦纳滤波!
    猜你喜欢
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多