2

次のコードを使用してガウスフィルターを使用して画像のぼかしをブラインドしようとしていますが、フィルターにゼロが含まれている場合は常に問題があることを知っているので、FFT を使用する以外にデコンボリューションの他の方法があるかどうか疑問に思います

function [ out ] = imblur( file)

img = im2double(imread(file));

h = fspecial('gaussian', [15 15], 3);

img_red = img(:,:,1);
img_blue = img(:,:,2);
img_green = img(:,:,3);


[m,n] = size(img_red);
[mb,nb] = size(h);

% output size 
mm = m + mb - 1;
nn = n + nb - 1;

x1(:,:,1) = (ifft2(fft2(img_red,mm,nn)./ fft2(h,mm,nn)));
x2(:,:,2) = (ifft2(fft2(img_blue,mm,nn)./ fft2(h,mm,nn)));
x3(:,:,3) = (ifft2(fft2(img_green,mm,nn)./ fft2(h,mm,nn)));

out = cat(3, x1(:,:,1), x2(:,:,2), x3(:,:,3)); 

imshow(out);
4

1 に答える 1

0

ゼロをイプシロンに置き換えるとうまくいきました。

于 2012-12-11T00:19:13.267 に答える