matlab - 使用 MATLAB 进行图像去模糊

标签 matlab image-processing

我有两张图片,一张是退化的,一张是原始图片的一部分。我需要使用第二张图像来增强第一张图像,我需要在 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)))

我现在有两个问题:

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

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

Enter image description here

最佳答案

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

  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)

关于matlab - 使用 MATLAB 进行图像去模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408576/

相关文章:

java - OpenCV - 拉普拉斯滤波器中的参数 (Java)

matlab - 为什么 Matlab 的 `intlinprog` 会为整数变量返回接近整数的值?

python - 数组太大,无法在 matlab 中除法,但不能在 python 中除法

c++ - OpenCV 中的 Matlab fft2 函数

python - matlab 的 smooth3 函数在 python 中的等价物是什么?

image-processing - iOS 上的 ImageMagick : Blurring and blending an image with itself

matlab - 在 Matlab 中最小化简单目标的最佳方法

image-processing - caffe通过python创建网络

c++ - 使用特定颜色opencv填充图像中的形状

r - 使用 R 将 geoTIFF 转换为 ascii/text?