图像复原处理技术样本
- 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
可见,K 越大,对消除模糊效果越差,但是可以看清轮廓。K小时候,虽然没有模糊感觉,但是图像内容很不清晰,难以辨别。
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));%恢复后图像
subplot(2,2,3);imshow(uint8(f_est));% 显示恢复后图像
title('维纳滤波图');
%逆滤波
FN=NF./H;
subplot(2,2,4);imshow(uint8(real(ifft2(FN))));
title('逆滤波图');