matlab数字图像处理.doc
文本预览下载声明
中 国 地 质 大 学
课程设计
课程名称 数字图像处理
教师姓名 傅华明
学生姓名
学生学号
学生班级
数字图像处理报告
实验要求:
已知一图象p2-04-01,经过低通滤波得到其退化图象p2-04-02。采用逆滤波方式将其重新复原。低通滤波器采用两种:(1)巴特沃茨滤波器(2)高斯滤波器,其截止频率自行设定。
原理分析:
此题先进行傅立叶变换后高通滤波,再傅立叶反变换得到退化图象,再傅立叶变换,最后逆滤波。这里要用到傅立叶变换,低通滤波及图象复原知识。
傅立叶变换
傅立叶变换是数字图像处理中应用最广的一种变换,其中图像增强、图像复原和图像分析与描述等,每一类处理方法都要用到图像变换,尤其是图像的傅立
叶变换。
离散傅立叶(Fourier)变换的定义:
二维离散傅立叶变换(DFT)为:
逆变换为:
式中,
在DFT变换对中, 称为离散信号 的频谱,而 称为幅度谱, 为相位角,功率谱为频谱的平方,它们之间的关系为:
图像的傅立叶变换有快速算法。
逆滤波:
则
1/H(u,v)称为逆滤波器。对上式再进行傅立叶反变换可得到f(x,y)。但实际上碰到的问题都是有噪声的,因而只能求F(u,v)的估计值:
然后再作傅立叶逆变换,得
程序:
%**********************显示图像********************%
f = imread(p2-04-01.bmp);
subplot(3,4,1);
imshow(f);title(原始图像);
c = imread(p2-04-02.bmp);
subplot(3,4,2);
imshow(c);title(低通滤波后退化图像);
F = fft2(f); % 求原始图像的傅里叶变化
F = fftshift(F); % 将傅里叶变化零频率搬移到频谱中间
subplot(3,4,3);
imshow(log(abs(F)),[-1 10]);title(原始图像的傅里叶变换);
Q = fft2(c); Q = fftshift(Q); % 将傅里叶变化零频率搬移到频谱中间
subplot(3,4,4);
imshow(log(abs(Q)),[-1 10]);title(退化图像的傅里叶变换);
%******************理想频域低通滤波*****************%
clear all;
f = imread(p2-04-01.bmp);
F = fft2(f); % 求原始图像的傅里叶变化
F = fftshift(F); % 将傅里叶变化零频率搬移到频谱中间
[M,N] = size(F); % 确定图像大小,M为行数,N为列数
m = fix(M/2); n = fix(N/2); % d0 = 20; % 设定低通滤波上限频率
for i = 1 : M
for j = 1 : N
d = sqrt((i-m)^2 + (j-n)^2);
if (d = d0)
h = 1;
else h = 0;
end
H(i,j) = h * F(i,j); % 滤波矩阵点乘
end
end
subplot(3,4,5);
imshow(H);title(理想频域低通滤波器处理);
H = ifftshift(H);
J1 = ifft2(H);
J2 = uint8(real(J1)); %
subplot(3,4,6);
imshow(J2); title(理想低通滤波退化后图像);
%******************理想低通滤波复原*****************%
FR = fft2(J1);
FR = fftshift(FR)
显示全部