我试图通过在频域中通过特定滤波器划分频域中的模糊图像来对图像进行去模糊...问题是除法的结果是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
图片:
答案 0 :(得分:1)
通常,只要分子和分母都为零,就可以得到NaN。此外,只要你的分母为零,你就会得到一个Inf。两者都不好。因此,在G_1./H_1
操作之后,我会检查NaN和Inf并替换为零。