数字图像处理图像复原
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理上机实习报告
(第四专题)
学生姓名:
班级:
学号:
指导老师:
专题四、图像复原
一.题目要求
设已知一图象p04-03-01,设计一高通滤波器将其退化,再对退化后的图象施加椒盐噪声。利用高通滤波器的系统函数作为退化函数(高通滤波器的截止频率自行设定),采用逆滤波方式和最小二乘方滤波将其重新复原,并比较复原结果。
二.算法设计
1.逆滤波方式复原图像
2.最小二乘方滤波方式复原图像
三.程序代码与分析
1.逆滤波方式复原图像
(1)测试代码
f = imread('D:\matlab2011\work\p04-03-01.bmp');
f = im2double(f);
%经过高通滤波后的图像
[g1,G] = imhpga(f,3);
%使用高斯逆滤波还原
[ga1,GA1] = imihpga(g1,2.5);
[ga2,GA2] = imihpga(g1,3);
[ga3,GA3] = imihpga(g1,3.5);
subplot(2,3,1);imshow(abs(f)); title('原图像')
subplot(2,3,3);imshow(abs(g1)); title('高通滤波') subplot(2,3,4);imshow(abs(ga1)); title('D0=2.5') subplot(2,3,5);imshow(abs(ga2)); title('D0=3') subplot(2,3,6);imshow(abs(ga3)); title('D0=3.5')
(2)指数高通滤波器作为退化函数
function [g,G] = imhpga(f,D0) %指数高通滤波器
F = fftshift(fft2(f)); [M,N] = size(F);
m = fix(M/2); n = fix(N/2);
for u=1:M for v=1:N
D = sqrt((u-m)^2+(v-n)^2); % H = 1 - exp(-D^2/(2*D0^2)); H = exp(-D0^2/(D^2)); G(u,v)=F(u,v)*H; end end
G = ifftshift(G); g = ifft2(G); End
本程序中采用指数高通滤波器,利用该高通滤波器的系统函数作为退化函数,其传递函数为:
n
v u D D e
v u H ]
)
,([0),(-=
(3)采用逆滤波方式将图像复原
function [f,F] = imihpga(g,D0) %图像复原
G = fftshift(fft2(g)); [M,N] = size(G);
m = fix(M/2); n = fix(N/2);
for u=1:M
for v=1:N
D = sqrt((u-m)^2+(v-n)^2); %H = 1 - exp(-D^2/(2*D0^2)); H = exp(-D0^2/(D^2)); F(u,v)=G(u,v)/(H + 0.01); end end
F = ifftshift(F); f = ifft2(F); End
图像恢复处理的关键是建立图像的退化模型。逆滤波恢复法也称反向滤波法,是一种无约束恢复的图像恢复技术。),(v u H 称为系统的传递函数。
通常在无噪声的理想情况下:),(),(),(v u H v u F v u G =
则)
,()
,(),(v u H v u G v u F =
,对该式进行傅里叶反变换可得到),(y x f
逆滤波复原基本原理可归纳如下:
A.对退化图像),(y x g 做二维离散傅里叶变换,得到),(y x G ;
B.计算系统点扩散函数),(y x h 的二维傅里叶变换,得到),(v u H ;
C.计算),(v u F ;
D.计算),(v u F 的傅里叶逆变换,求得复原图像),(y x f 。
2.采用最小二乘方滤波将图像复原
(1)测试代码
clc;
A=imread('D:\matlab2011\work\p04-03-01.bmp'); subplot(121),imshow(A);title('原图像');
g=double(A); G=fft2(g); G=fftshift(G);
subplot(122),imshow(log(abs(G)),[-1, 10]);title('原图频谱');
%%butterworth高通滤波
fn=10; %fn为滤波器阶数
D0=0.5; %截止频率为1
D1=1; %截止频率为5
D2=5; %截止频率为10
[t1,T1] =Butter_hpbw(A,D1,fn);
%维纳滤波
[h0,H0] = hpbw_weinalvbo(J0,D0,fn,0.2);
figure(2);
subplot(221),imshow(t1);title('退化后图像');
subplot(222),imshow(T1);title('退化后频谱');
subplot(223),imshow(J1);title('添加椒盐噪声后图像');
subplot(224);imshow(uint8(real(h1)));title('维纳滤波复原图像');
(2)butterworth高通滤波器作为退化函数
function [g,G] =Butter_hpbw(f,D0,fn)
%Butterworth高通滤波
%f为原图,D0为高通截止频率,fn为滤波器阶数
%返回g为滤波后图像,G为其频谱
F = fftshift(fft2(double(f)));
[M,N] = size(F);
H=zeros(M,N);
m = fix(M/2);
n = fix(N/2);
for u=1:M
for v=1:N
D=sqrt((u-m)^2+(v-n)^2);
H(u,v)= 1/(1 + (D0/D)^(2*fn) );
end
end
G=F.*H;
g= ifft2(G);
g=uint8(abs(g)); %化为易显示的格式
end
本程序中采用butterworth高通滤波器,利用该高通滤波器的系统函数作为退化函数,n阶butterworth高通滤波器的传递函数为: