0

我正在努力在不知道 PSF 值的情况下恢复模糊的图像。我使用盲反卷积估计PSF值和Lucy Richardson方法来完全还原图像。问题是,我曾经fspecial('gaussian')模糊图像,现在我需要使用imgaussfilt函数来做到这一点。但是一旦我这样做,图像就不会按预期恢复。使用第一种方法,我得到了很好的结果。

fspecial('gaussian')和 和有什么不一样imgaussfilt()?有没有办法可以恢复使用第二个功能模糊的图像?

PS:所有图像都是用于生物识别系统的虹膜图片。


首先,我使用以下代码尝试了恢复过程:

function [J, P, V] = blindDeconv(image, qualityBlur, upTo)
lowerValue = 20;
for i = 3:15
    for j = 1:upTo
        P = fspecial('gaussian', i, j);
        [I PSF] = deconvblind(image,P);
        %[I PSF] = deblur(image, j);
        quality = blurMetric(I);
        if quality < lowerValue
            lowerValue = quality;
            P = PSF;
            J = I;
            V = j;
        end
    end
end

这是我模糊和去模糊图像的主要脚本:

%----------------------
%  Blurring process
%----------------------
%PSF = fspecial('gaussian', 7, j);
%blur{i,j} = imfilter(im2double(image{i}), PSF, 'conv');
blur{i,j} = imgaussfilt(im2double(image{i}), j);
qualityBlur{i, j} = blurMetric(blur{i, j});
link = strcat(folder, '/', prefix, '_blur_', num2str(j), '.jpeg');
imwrite(blur{i, j}, link, 'jpeg');

%---------------------
% Deblurring process
%----------------------
[J, P, V] = blindDeconv(blur{i, j}, qualityBlur{i, j}, upTo);
deblurred{i, j} = deconvlucy(J, P, 20, V);
qualityDeblurred{i, j} = blurMetric(deblurred{i, j});
link = strcat(folder, '/', prefix, '_deblur_', num2str(j), '.jpeg');
imwrite(deblurred{i, j}, link, 'jpeg');

图片样本:

样本

4

0 回答 0