基于逆滤波的图像去模糊

来源:互联网 发布:业绩数据分析 编辑:程序博客网 时间:2024/05/21 17:40

假设图像产生了均匀运动模糊,图像在f(x,y)平面运动,x0(t)y0(t)分别表示在xy方向上随时间变化分量,设T为曝光时间,则频域退化函数:

H(u,v)=T0ej2π[ux0(t)+vy0(t)]dt

频域乘积:
G(u,v)=H(u,v)F(u,v)+N(u,v)

用退化函数与退化图像的傅里叶变换估计原图像的傅里叶变换:
F^(u,v)=G(u,v)H(u,v)
得到,除法是阵列操作:
F^(u,v)=F(u,v)+N(u,v)H(u,v)

根据公式可以看出,得到原图像的估计非常容易受到噪声的影响,尤其是退化函数比较小时。H(0,0)通常是最大值,通常采用限制滤波频率,将频率限制在原点附近,减少遇到零值概率。

close all;clear all;clc;% Display the original image.I = imread('1.jpg'); [d1,d2,d3] = size(I); if(d3 > 1) I = rgb2gray(I);endI = im2double(I);[hei,wid,~] = size(I);subplot(2,3,1),imshow(I);title('Original Image ');% Simulate a motion blur.LEN = 100;THETA = 11;PSF = fspecial('motion', LEN, THETA);blurred = imfilter(I, PSF, 'conv', 'circular');subplot(2,3,2), imshow(blurred); title('Blurred Image');% Inverse filterIf = fft2(blurred);Pf = fft2(PSF,hei,wid);deblurred = ifft2(If./Pf);subplot(2,3,3), imshow(deblurred); title('Restore Image')% Simulate additive noise.noise_mean = 0;noise_var = 0.00001;blurred_noisy = imnoise(blurred, 'gaussian', ...                        noise_mean, noise_var);subplot(2,3,4), imshow(blurred_noisy)title('Simulate Blur and Noise')% Try restoration assuming no noise.If = fft2(blurred_noisy);deblurred2 = ifft2(If./Pf);subplot(2,3,5), imshow(deblurred2)title('Restoration of Blurred Assuming No Noise');% Try restoration with noise is known.noisy = blurred_noisy - blurred;Nf = fft2(noisy);deblurred2 = ifft2(If./Pf - Nf./Pf);subplot(2,3,6), imshow(deblurred2)title('Restoration of Blurred with Noise Is Known')

这里写图片描述

http://blog.csdn.net/bluecol/article/details/47357717
数字图像处理第三版

原创粉丝点击