4

我有两张图像,一张是退化的,一张是原始图像的一部分。我需要通过使用第二张图像来增强第一张图像,并且我需要在频域中执行此操作。我从退化的图像中切出相同的区域,对其进行 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)))

我现在有两个问题:

  1. 如何使用小矩形(我的意思是不使用h=fspecial('motion',9,45);)生成传递函数?

  2. 我可以使用哪些方法从增强图像中去除噪点?

在此处输入图像描述

4

2 回答 2

5

我可以向您推荐几种方法:

  1. 算术平均滤波器:

    f = imfilter(g, fspecial('average', [m n]))
    
  2. 几何均值滤波器

    f = exp(imfilter(log(g), ones(m, n), 'replicate')) .^ (1/(m*n))
    
  3. 谐波均值滤波器

    f = (m*n) ./ imfilter(1 ./ (g + eps), ones(m, n), 'replicate');
    

    其中 n 和 m 是掩码的大小(例如,您可以设置m = 3 n = 3

于 2012-11-16T18:22:15.313 回答
0

基本上你想要做的有两个步骤(至少):

  1. 通过使用带有正方形的图像补丁来估计 PSF(模糊内核)。
  2. 使用估计的内核对模糊图像进行反卷积

如果您想“猜测”第 1 步的 PSF,那很好,但最好计算一下。

对于第 2 步,您必须首先使用edgetaper它来消除图像中的振铃效应,您称之为噪声。

deconvlucy您通过使用遵循以下语法的函数来使用非盲反卷积(步骤 2) :

J = deconvlucy(I,PSF)

这个反卷积过程会增加一些噪音,特别是如果您的 PSF 不是 100% 准确,但如果您允许更多迭代(细节交易,NFL),您可以使其更平滑。

对于第一步,如果您不关心您有“尖锐”正方形这一事实,您可以使用盲反卷积deconvblind并获得 PSF 的一些估计值。如果您想正确执行此操作并使用尖锐补丁,那么您可以在任何涉及 PSF 估计的优化方案中将其用作数据项目标。

于 2015-01-10T14:39:33.107 回答