图像复原处理技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五图像复原处理技术
实验目的
1 了解图像降质退化的原因,并建立降质模型。 2
理解反向滤波图像复原的原理
3 理解维纳滤波图像复原的原理实验原理图像复原处理一定是建立在图像退化的数学模型基础上的,这个退化数学模型应该能够
反映图像退化的原因。图像降质过程的模型如图5-1所示,其表达式为
g(x,y)=h (x,y)*f (x,y) +n (xy) (5.1)
图5-1图像降质模型 1、 滤波图像复原
逆滤波法是最简单的图像恢复方法。对5.1式两边作二维傅立叶变换,得到
G (u , v ) =H (u ,v) F (u ,v) + N (u ,v)
H (u ,v) 为成像系统的转移函数。估算得到的恢复图像的傅立叶变换F ˆ
(u ,v) 为
()()()()()()
,,ˆ,,,,G u v N u v F u v F u v H u v H u v ==+ (5.2) 若知道转移函数H (),u v ,5.2式经反变换即可得到恢复图像,其退化和恢复的全过程用图5-2表示。
图5-2频域图像降质及恢复过程
逆滤波恢复法会出现病态性,若H (),u v ,而噪声N(u,v) ≠0,则()(),,N u v H u v
比F (x,y)大很多,使恢复出来()ˆ,f
x y 与(),f x y 相差很大,甚至面目全非。一种改进的方法是在H (u , v ) =0 的频谱点及其附近,人为仔细设置()1,H u v -的值,使得在这些频
谱点附近,()(),,N u v H u v 不会对()ˆ,F
u v 产生太大影响。二种方法是考虑到降质系统的转移函数(),H u v 的带宽比噪声要窄的多,其频率特性也具有低通性质,因此可令逆滤波的转移函数()1,H u v 为
()()()()1
222
11
2220
1,,0H u v u v D H u v u v D ⎧+≤⎪=⎨⎪+>⎩
(2)维纳滤波复原
逆滤波简单,但可能带来噪声的放大,而维纳滤波对逆滤波的噪声放大有抑制作用。
维纳滤波是寻找一个滤波器,使得复原后图像()ˆ,f
x y 与原始图像(),f x y 的方差最小,即
()(){
}2
ˆmin ,,E f x y f x y ⎡⎤=-⎣⎦
如果图像(),f x y 和噪声(),n x y 不相关,且(),h x y 有零均值,则可导出维纳滤波器的传递函数为
()()
()
()
()()
2
2
,1
,,,,,w n f H u v H u v P u v H u v H u v P u v =
•
+
式中(),n P u v 和(),f P u v 分别为噪声和原始图像的功率谱。实际上(),n P u v 和(),f P u v n
往往是未知的,这时常用常数K 来近似()
()
,,n f P u v P u v 。
【实验】产生一模糊图像,采用维纳滤波图像复原的方法对图像进行处理。 clear; %清除变量 d=15 %设定长度
h=zeros(2*d+1,2*d+1);
h(d+1,1:2*d+1)=1/(2*d); %设置函数h
f=imread('lena.bmp'); %读取图像
[m,n]=size(f); %求出图像大小
fe=zeros(m+2*d,n+2*d); %扩增f
fe(1:m,1:n)=f;
he=zeros(m+2*d,n+2*d);
he(1:2*d+1,1:2*d+1)=h; %扩增h
F=fft2(fe);
H=fft2(he);
ns=5*rand(m+2*d,n+2*d); %产生噪声
g=ifft2(F.*H)+ns; %产生模糊且加载噪声的图像
G=fft2(g);
K=0; %设定K 值
F_est=((H.^2)./(H.^2+K)).*G./H; % 维纳滤波
f_est=real(ifft2(F_est)); %恢复后的图像
imshow(f); %显示原始图像
figure;
imshow(g(d+1:m+d,d+1:n+d),[min(g(:)) max(g(:))]); % 显示模糊后加噪声的图像
figure;
imshow(f_est(1:m,1:n),[min(f_est(:)) max(f_est(:))]);% 显示恢复后的图
像
运行结果:
原图
模糊后
恢复图象
作业:
1改变维纳滤波的常数K,比较不同K 值的复原图像的效果。K=0.5
K=1
K=10
时候,虽然没有模糊的感觉,但是图像内容很不清晰,难以辨别。
2对图像文件cameraman.tif 进行运动模糊处理,然后分别采用逆滤波和维纳滤波的方法进行复原处理。
clear; %清除变量
c=0.1;T=1;
f=imread('cameraman.tif');
%f=rgb2gray(f);
[m,n]=size(f);
H=zeros(m,n);
for j=1:m
H(j,:)=T/(pi*j*c)*sin(pi*j*c)*exp(-i*(pi*j*c));
end
F=fft2(double(f));
NF=F.*H;%模糊图像的频谱
newimg=real(ifft2(NF));
subplot(2,2,1);imshow(f);title('原图'); %显示原始图像
subplot(2,2,2);imshow(uint8(newimg));%显示动态模糊后的图像
title('动态模糊后的图');
% 维纳滤波
K=0; %设定K 值
F_est=((H.^2)./(H.^2+K)).*NF./H;
f_est=real(ifft2(F_est)); %恢复后的图像