我有两张图片,一张是降级的,一张是原始图片的一部分。我需要使用第二个图像来增强第一个图像,我需要在frequency domain中执行此操作。我从降级图像中剪切了相同的区域,进行了FFT,并尝试计算传递函数,但是当我将该函数应用于图像时,结果非常糟糕。
所以我尝试h=fspecial('motion',9,45);
作为我的传递函数,然后使用下面给出的代码重建图像。
im = imread('home_degraded.png');
im = rgb2gray(im);
h = fspecial('motion',9,45);
H = zeros(519,311);
H(1:7,1:7) = h;
Hf = fft2(H);
d = 0.02;
Hf(find(abs(Hf)<d))=1;
I = ifft2(fft2(im)./Hf);
imshow(mat2gray(abs(I)))
我现在有两个问题:
如何使用小矩形生成传递函数(我的意思是不使用h=fspecial('motion',9,45);
)?
我可以使用哪些方法消除增强图像中的噪点?
答案 0 :(得分:5)
我可以推荐几种方法:
算术平均滤波器:
f = imfilter(g, fspecial('average', [m n]))
几何平均滤波器
f = exp(imfilter(log(g), ones(m, n), 'replicate')) .^ (1/(m*n))
谐波均值滤波器
f = (m*n) ./ imfilter(1 ./ (g + eps), ones(m, n), 'replicate');
其中n和m是掩码的大小(例如,您可以设置m = 3
n = 3
)
答案 1 :(得分:0)
基本上你想做的事情有两个步骤(至少):
如果你想“猜测”步骤1的PSF,那很好,但最好是计算它。
对于第2步,您必须首先使用edgetaper
,这会消除图像中的振铃效果,您称之为噪音。
您可以按照以下语法使用函数deconvlucy
来使用非盲解卷积(步骤2):
J = deconvlucy(I,PSF)
这种反卷积程序会增加一些噪音,特别是如果你的PSF不是100%准确的,但如果你允许更多的迭代(交易细节,NFL)你可以使它更顺畅。
第一步,如果你不关心你有“尖锐”方块的事实,你可以使用盲去卷积 deconvblind 并得到一些PSF的估计。 如果你想正确地使用并使用尖锐的补丁,那么你可以在任何涉及估算PSF的优化方案中将它用作数据项目标。