我正在尝试对下图中的模糊部分进行模糊处理。
原来的PSF没有给出,所以我开始分析模糊的部分,看看是否有一个我能大致辨认出来的词。我发现我可以在模糊部分中辨认出“of”。我在清晰部分中裁剪了模糊的“of”及其对应物,如下所示。
然后,我通过 FFT 的讲座思考,您将模糊的(频域)与特定的模糊函数(频域)相除以重新创建原始图像。
我想如果我可以做 Unblurred(频域)\Blurred(频域),就可以检索到原始的 PSF。请告知我如何做到这一点。
下面是我的代码:
img = im2double(imread('C:\Users\adhil\Desktop\matlab pics\image1.JPG'));
Blurred = imcrop(img,[205 541 13 12]);
Unblurred = imcrop(img,[39 140 13 12]);
UB = fftshift(Unblurred);
UB = fft2(UB);
UB = ifftshift(UB);
F_1a = zeros(size(B));
for idx = 1 : size(Blurred, 3)
B = fftshift(Blurred(:,:,idx));
B = fft2(B);
B = ifftshift(B);
UBa = UB(:,:,idx);
tmp = UBa ./ B;
tmp = ifftshift(tmp);
tmp = ifft2(tmp);
tmp = fftshift(tmp);
[J, P] = deconvblind(Blurred,tmp);
end
subplot(1,3,1);imshow(Blurred);title('Blurred');
subplot(1,3,2);imshow(Unblurred);title('Original Unblurred');
subplot(1,3,3);imshow(J);title('Attempt at unblurring');
但是,此代码不起作用,并且我收到以下错误:
Error using deconvblind
Expected input number 2, INITPSF, to be real.
Error in deconvblind>parse_inputs (line 258)
validateattributes(P{1},{'uint8' 'uint16' 'double' 'int16' 'single'},...
Error in deconvblind (line 122)
[J,P,NUMIT,DAMPAR,READOUT,WEIGHT,sizeI,classI,sizePSF,FunFcn,FunArg] = ...
Error in test2 (line 20)
[J, P] = deconvblind(Blurred,tmp);
这是重新创建原始 PSF 的好方法吗?