实验三、图像的傅立叶变换一、实验目的1、了解图像变换的意义和手段;2、熟悉傅里叶变换的性质;3、熟练掌握FFT变换及其应用;4、通过实验了解二维频谱的分布特点;5、通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。二、实验设备1、计算机;2、MATLAB软件;3、记录用的笔、纸。4、移动式存储器(软盘、U盘等)。三、实验原理1、应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。2、傅立叶(Fourier)变换的定义二维Fourier变换和二维离散傅立叶变换为:图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见相关书目,有关傅立叶变换的快速算法的程序不难找到。实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。四、实验步骤1、打开计算机,启动MATLAB程序;2、利用MatLab工具箱中的函数编制FFT频谱显示的函数;3、a).调入、显示“实验一”获得的图像;图像存储格式应为“.gif”;b)对这幅图像做FFT并利用自编的函数显示其频谱;4、实现数字图像傅立叶变换的部分参考程序:I=imread(‘原图像名.gif’);%读入原图像文件imshow(I);%显示原图像fftI=fft2(I);%二维离散傅立叶变换sfftI=fftshift(fftI);%直流分量移到频谱中心RR=real(sfftI);%取傅立叶变换的实部II=imag(sfftI);%取傅立叶变换的虚部A=sqrt(RR.^2+II.^2);%计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;%归一化figure;%设定窗口imshow(A);%显示原图像的频谱五、实验数据记录输入数字图像傅立叶变换的代码如下:I=imread(‘fengshu.gif’);imshow(I);fftI=fft2(I);sfftI=fftshift(fftI);RR=real(sfftI);II=imag(sfftI);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;figure;imshow(A);运行以上程序原图像经傅立叶变换后的图像实验四、图像的离散余弦变换和哈达玛变换一、实验目的1、了解图像离散余弦变换和逆变换的原理;2、理解离散余弦变换系数的特点;3、理解离散余弦变换在图像数据压缩中的应用;4、理解哈达玛变换的原理。二、实验设备1、计算机;2、MATLAB软件;3、记录用的笔、纸。4、移动式存储器(软盘、U盘等)。三、实验原理1.离散余弦变换离散余弦变换的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。在大多数情况下,DCT主要用于图像的压缩操作中,静态图像压缩标准JPEG就是采用的DCT变换。二维离散余弦变换的正反变换为:2.离散哈达玛变换哈达玛变换本质上是一种特殊排序的沃尔什变换,哈达玛变换矩阵也是一个方阵,只包括+1和-1两个矩阵元素,各行或各列之间彼此是正交的,即任意二行相乘或二列相乘后的各数之间必定为零。哈达玛变换的最大优点在于它的变换核矩阵具有简单的递推关系,即高阶矩阵可以用两个低阶矩阵求得。最低阶(N=2)的哈达玛矩阵为:2N阶哈达玛矩阵H2N与N阶哈达玛矩阵HN之间的递推关系为:四、实验步骤1、打开计算机,启动MATLAB程序;2、对一幅图像进行离散余弦变换和反变换。部分参考代码:RGB=imread('autumn.tif');%loadimagefigure(1),imshow(RGB);I=rgb2gray(RGB);%将RGB图像转化为灰度图像figure(2),imshow(I);%显示灰度图像J=dct2(I);%余弦变换figure(3),imshow(log(abs(J)),[]),colormap(jet(64)),colorbar;J(abs(J)10)=0;%将DCT变换值小于10的元素设为0K=idct2(J)/255;figure(4),imshow(K);3、对一幅图像进行哈达玛变换。部分参考程序(以一幅256×256的图像为例,首先将其分割为1024个8×8的子图像块后,然后对每个图像块进行变换,再按照每个系数的方差来排次序,保留方差较大的系数,舍去方差较小的系数。保留原系数的二分之一,即32个系数,进行2:1的压缩。)cr=0.5;%设置压缩比sig=imread('cameraman.tif');sig=double(sig)/255;%归一化图像figure(1),imshow(sig);[m_sig,n_sig]=size(sig);%求出图像大小sizi=8;%给出图像分快尺寸和保留系数的个数snum=64;t=hadamard(sizi);%分块和进行哈达玛变换hdcoe=blkproc(sig,[sizisizi],'P1*x*P2',t,t');coe=im2col(hdcoe,[sizisizi],'distinct');%重新排列系数coe_temp=coe;[YInd]=sort(coe);[m,n]=size(coe);%舍去具有较小方差的系数snum=snum-snum*cr;fori=1:ncoe_temp(Ind(1:snum),i)=0;endre_hdcoe=col2im(coe_temp,[sizisizi],[m_sign_sig],'distinct');%重建图像re_sig=blkproc(re_hdcoe,[sizisizi],'P1*x*P2',t',t);re_sig=double(re_sig)/64;%系数归一化figure(2);imshow(re_sig);error=sig.^2-re_sig.^2;%计算归一化图像的均方差MSE=sum(error(:))/prod(size(re_sig));五、实验数据记录1、输入对一幅图像进行离散余弦变换和反变换的代码如下:RGB=imread('autumn.tif');figure(1),imshow(RGB);I=rgb2gray(RGB);figure(2),imshow(I);J=dct2(I);figure(3),imshow(log(abs(J)),[]),colormap(jet(64)),colorbar;J(abs(J)10)=0;K=idct2(J)/255;figure(4),imshow(K);运行以上程序原图像原图像的灰度图像经离散余弦变换经反变换2、输入对一幅图像进行哈达玛变换的代码如下:cr=0.5;sig=imread('cameraman.tif');sig=double(sig)/255;figure(1),imshow(sig);[m_sig,n_sig]=size(sig);sizi=8;snum=64;t=hadamard(sizi);hdcoe=blkproc(sig,[sizisizi],'P1*x*P2',t,t');coe=im2col(hdcoe,[sizisizi],'distinct');coe_temp=coe;[YInd]=sort(coe);[m,n]=size(coe);snum=snum-snum*cr;fori=1:ncoe_temp(Ind(1:snum),i)=0;endre_hdcoe=col2im(coe_temp,[sizisizi],[m_sign_sig],'distinct');re_sig=blkproc(re_hdcoe,[sizisizi],'P1*x*P2',t',t);re_sig=double(re_sig)/64;figure(2);imshow(re_sig);error=sig.^2-re_sig.^2;MSE=sum(error(:))/prod(size(re_sig));运行以上程序原图像经哈达玛变换后的图像实验五、图像的空域变换增强一、实验目的1、掌握灰度直方图的概念及其计算方法;2、掌握直方图均衡化和直方图规定化的计算过程;3、熟悉MATLAB中图像增强的相关函数;二、实验设备1、计算机;2、MATLAB软件;3、记录用的笔、纸。4、移动式存储器(软盘、U盘等)。三、实验原理灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率。一般说来,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图像的最基本的统计特性。从概率论的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数PDF(ProbabilityDensityFunction),而概率分布函数就是直方图的累积和,即概率密度函数的积分。1.直方图均衡化直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。设灰度变换s=T(r)为斜率有限的非减连续可微函数,它将输入图像A(x,y)转换为输出图像B(x,y),输入图像的直方图为Ha(r),输出图像的直方图为Hb(s),它们的关系如下:直方图均衡化的基本思想是把原始图像的直方图变换成均匀分布的形式图像灰度值的动态范围,从而达到了增强图像整体对比度的效果。具体方法1)列出原始图像的灰度级Sk,k=0,1…L-1;其中L是灰度级的个2)统计原始图像各灰度级的象素数目nk.。3)计算原始图像直方图各灰度级的频率数。4)计算原始图像的累计直方图。5)取整计算。6)确定映射关系。7)统计新直方图各个灰度级的象素数目nk。8)计算新的直方图。2.灰度变换灰度变换是图像增强的另一种重要手段,它可使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。1)线性灰度变换(1)曝光不足的图像增强变换关系为:(2)灰度级集中的图像增强变换关系为:2)分段线性灰度变换为了突出图像中感兴趣的目标或者灰度区间,相对抑制那些不感兴趣的灰度区域,而不牺牲其他灰度级上的细节。例如:设图像中有30个灰度级,分别为1,2,…30,增强灰度级为(10,20)区域的图像细节。变换关系为:四、实验步骤1、打开计算机,启动MATLAB程序;2、调入数字图像,并进行计算机均衡化处理;(1)直方图均衡化增强图像对比度的部分参考程序:I=imread(‘原图像名.gif);%读入原图像J=histeq(I);%对原图像进行直方图均衡化处理Imshow(I);%显示原图像Title(‘原图像’);%给原图像加标题名Figure;imshow(J);%对原图像进行屏幕控制;显示直方图均衡化后的图像Title(‘直方图均衡化后的图像’);%给直方图均衡化后的图像加标题名Figure;subplot(1,2,1);%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图Imhist(I,64);%将原图像直方图显示为64级灰度Title(‘原图像直方图’);%给原图像直方图加标题名Subplot(1,2,2);%作第2幅子图Imhist(J,64);%将均衡化后图像的直方图显示为64级灰度Title(‘均衡变换后的直方图’);%给均衡化后图像直方图加标题名(2)通过灰度变换调整图像对比度部分参考程序:I=imread('tire.tif');J=imadjust(I,[0.2,0.4],[]);subplot(2,2,1),imshow(I);subplot(2,2,2),imshow(J);subplot(2,2,3),imhist(I);subplot(2,2,4),imhist(J);3、显示原图像的直方图和经过均衡化处理过的图像直方图。4、记录和整理实验报告五、实验数据记录1、输入直方图均衡化增强图像对比度的代码如下:I=imr