f1=ifft2(F1); %逆傅里叶变换恢复图像
subplot(1,3,3),,imshow(uint8(f1)),title('IFFT恢复的图像'); %主程序到此结束,
图1 实验结果
2、图像的DCT变换实验。
n 在Matlab中,建立M文件Lab4_Test2.m,编写如下代码,打开灰度图像,进行DCT变换,显示频谱
并进行IDCT变换恢复图像。代码如下: function Lab4_Test2()
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc;close all;clear all;
%说明:打开进行DCT变换,显示频谱,再进行IDCT变换恢复图像 %1 打开图像
Img = imread('lena.jpg'); %打开图像 [H,W,dim] = size(Img); if (dim>1)
Img =rgb2gray(Img); %若打开的为彩色图像,则先转化成灰度图像 end
figure,subplot(1,3,1),,imshow(Img),title('原图像'); %2 图像DCT变换及频谱 F=dct2(Img);
%计算二维傅里叶变换
%显示变换后的频谱图
subplot(1,3,2),,imshow(log(abs(F)+1),[0 10]),title('DCT频谱'); %3 图像IDCT变换 f1=idct2(F);
subplot(1,3,3),,imshow(uint8(f1)),title('IDCT恢复的图像'); %主程序到此结束,
图2 实验结果
23
3、图像FT旋转定理验证实验。
n 在Matlab中,建立M文件Lab4_Test3.m,编写如下代码,验证FT中旋转定理。代码如下: function Lab4_Test3()
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc;close all;clear all;
%说明:验证FT中旋转不变定理,即二维离散傅里叶变换的旋转性。 %1 构造原始图像 I=zeros (256, 256); I(28:228, 108:148)=1;
figure,subplot(2,2,1),imshow(I),title('原图像'); %2 求原始图像的傅里叶频谱 F1=fft2(I); F1=abs(F1); F1=fftshift(F1);
subplot(2,2,2), imshow (F1,[5 50]),title('原图像频谱') %3 对原始图像进行旋转 J=imrotate(I,315,'bilinear','crop'); subplot(2,2,3),imshow(J),title('旋转图像') %求旋转后图像的傅里叶频 J1=fft2(J); F=abs(J1); J2=fftshift(F);
subplot(2,2,4),imshow(J2,[5 50]),title('旋转图像频谱') %主程序到此结束,
图3 实验结果
注:根据上述方式,自己编程验证“平移”、“尺度”等定理。
4、基于DCT的图像数据压缩实验。
n 在Matlab中,建立M文件Lab4_Test4.m,编写如下代码,对图像进行DCT变换,然后将四分三的系
数变为0(相当于丢弃),再进行IDCT恢复。代码如下:
function Lab4_Test4()
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc;close all;clear all;
24
I= imread('lena.bmp'); J=dct2(I); %进行余弦变换 figure,
subplot(1,3,1),imshow(I),title('原图像')
subplot(1,3,2),imshow(log(abs(J)),[]),title('DCT频谱') [H W]=size(J);
J(H/2:H,:)=0; %下半部分变为0 J(:,W/2:W)=0; %右半部分变为0 K=idct2(J)/255; %进行余弦反变换 subplot(1,3,3),imshow(K),title('压缩后的恢复') %主程序到此结束,
图4 实验结果
五、实验内容及要求
1、在MATLAB中,严格完成上述实验内容,且分析比较实验结果; 2.参照上述程序,自己编程实现:
1)编写函数,实现图像的FT与DCT频谱分析功能;
2)编写函数,实现图像的FT定理(平稳与卷积定位)进行验证;
3.查找资料,在VS2010环境中,掌握OpenCV图像变换(如:FT,DCT)函数的用法,用其对对图像进行变换,观察图像频谱。
25
实验五:频域滤波图像增强实验
一、实验目的
1、掌握常用频域低、高通滤波器的设计;
2、理解图像频谱的特点和频域低、高通滤波的原理; 3、理解周期噪声图像的频谱规律、掌握亮度成像原理; 4、掌握交互消噪及光照校正滤波器设计方法;
5、利用MATLAB语言自己实现相关算法,熟悉用于图像消噪及光照不匀校正处理,提高学生编程动手能力,培养学生分析解决问题的能力。
二、实验设备:
1、PC机或笔记本电脑,Windows操作系统; 2、安装Matlab软件,准备实验相关图像或M文件;
3、按照如下实验内容与步骤,编写相应Matlab程序,完成实验任务。 三、实验原理
1、低通滤波器
二维理想低通滤波器的传递函数为:
H(u,v)=í
ì1.D(u,v)£D0
0.D(u,v)>D?0
D0是指定非负数值,D(u,v)是(u,v)点距频率中心的距离。如果要研究的图像尺寸为M X N,则
它的变换也有相同的尺寸。在半径为D0的圆内,所有频率无衰减地通过滤波器,而在此半径之外的所有频率完全被衰减掉。
巴特沃斯低通滤波器的传递函数为: H(u,v)=
1
D(u,v)2n1+[]
D0
式中D0为截止频率距远点距离。一阶巴特沃斯滤波器没有振铃。在二阶中振铃通常很微小,但在阶数增高时振铃便成为一个重要因素。
2、高通滤波器
二维理想高通滤波器的传递函数为:
H(u,v)=í
ì0.D(u,v)£D0
1.D(u,v)>D?0
D0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过
圆周外的任何频率。但其物理上是不可实现的。
巴特沃斯高通滤波器的传递函数为: H(u,v)=
1
D02n
1+[]
D(u,v)
式中D0为截止频率距远点距离。与低通滤波器的情况一样,可认为巴特沃斯高通型滤波器比IHPF更平滑。
高斯高通滤波器传递函数为:
26
H(u,v)=1-e-D
2
2
(u,v)/2D0
高通滤波器能够用高斯型低通滤波器的差构成。这些不同的滤波器有更多的参数,因此能够对滤波器的形状进行更多的控制。
1、带阻滤波器:阻止一定频率范围内的信号通过,而允许其它频率范围内的信号通过; 放射对称的理想带阻滤波器,它的转移函数是:
ì1if?
H(u,v)=í0if
?1if?
其中:W为带宽,D0为放射中心。
D(u,v) D0-W2£D(u,v)£D0-W2 D(u,v) 2、带通滤波器:带通滤波器和带阻滤波器是互补的。带通滤波器只需对带阻滤波器翻转即可,即: HP(u,v)=-[HR(u,v)-1]=1-HR(u,v) 如果利用带通滤波器把某个带中频率分量提取出来,然后将其从图像中减去,也可获得消除或减弱图像中某个频率范围内的分量的效果。 3、同态滤波:同态滤波过程的完整框图如下所示: 四、练习内容 启动电脑,打开MATLAB编程编程环境,依次完成下列所有实验: 1、理想低通滤波实验。 n 在Matlab中,建立M文件Lab5_Test1.m,编写如下代码,实现理想低通滤波图像平滑。代码如下: function Lab5_Test1_ILPF() %功能:理想低通滤波对带噪图像进行平滑处理 clc;close all;clear all; I1=imread('lena.jpg'); I1=rgb2gray(I1); %转化为灰度图像 I2=imnoise(I1,'salt & pepper'); %加上椒盐噪声 figure, subplot(1,3,1),imshow(I1),title('原图') subplot(1,3,2),imshow(I2),title('加噪声的图像') %1 对图像进行FFT变换 F=fftshift(fft2(I2)); %2 生成滤波函数H [M,N]=size(F); %分别返回s的行数到M中,列数到N中 n1=floor(M/2); %对M/2进行取整 n2=floor(N/2); %对N/2进行取整 %ILPF滤波,d0=5,20,50 (程序中以d0=5为例) d0=50; %初始化d0 for i=1:M for j=1:N 27