我有两张图片,一张是退化的,一张是原始图片的一部分。我需要使用第二张图像来增强第一张图像,我需要在 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);
)?我可以使用哪些方法去除增强图像中的噪点?
最佳答案
我可以向您推荐几种方法:
算术平均滤波器:
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
)
关于matlab - 使用 MATLAB 进行图像去模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408576/