实验报告五姓名:学号:班级:实验日期:2016.5.13实验成绩:实验题目:图像变换技术一.实验目的(1)熟练掌握图像的快速傅里叶变换及其逆变换。(2)熟练掌握图像的radon变换及其逆变换。二.实验原理在空间域对原图像旋转theta角度的时候,对应其频域频谱函数角度也旋转theta角度,也就是说频域上其幅度谱不变。图像投影,就是说将图像在某一方向上做线性积分(或理解为累加求和)。如果将图像看成二维函数f(x,y),则其投影就是在特定方向上的线性积分,比如f(x,y)在垂直方向上的线性积分就是其在x轴上的投影;f(x,y)在水平方向上的线积分就是其在y轴上的投影,这就是雷登变换。通过这些投影,可以获取图像在指定方向上的突出特性,而这些具有特征的数据包含了原图像的信息,通过一定的反投影来又可以重建图像。三.实验内容及结果(1)任意选择一副图像,对图像进行旋转,显示原始图像和旋转后的图像,分别对其进行傅里叶变换,分析原图的傅里叶频谱与旋转后的傅里叶频谱的对应关系。图1图像的旋转及傅里叶谱(2)选择一副图像boy.jpg,使用radon函数和iradon函数构建一个简单图像的投影并重建图像。图2ModifiedShepp-Logan头模型图3变量工作区图4代表每个投影点的位置信息变量xp部分值图5原图像不同角度投影的正弦图(雷登变换)图6滤波反投影法重建图像(滤波函数为汉明窗)图7直接反投影法重建图像四.结果分析(1)观察图一,可以发现,原图像进行90度的旋转后,其旋转变换后的傅里叶幅度谱并没有改变,印证了空间域的旋转定理,即在空间域对原图像旋转theta角度的时候,对应其频域频谱函数角度也旋转theta角度。(2)观察图3工作变量区,雷登变换radon中的返回变量[R,xp]中xp此列向量大小为729,而xp代表每个投影点的位置信息变量,点进xp可以得到图4,看到其值从-364按照步长为1递增到364,这个不难理解,因为每按一个角度投影,数据不是一个,而是一列,它们按照一条线排布,步长为1恒定表示每个点是等距的,而且从xp值对称可以看出这个相对点是原点,R是一个二维矩阵,由于投影角度的个数不同,所以列的大小取决于投影角度的设定,观察图5设定的不同角度的正弦图,可以发现当投影角度个数过小时,正弦图会块状效应,这是因为取样率不够的原因,取样率大小不仅取决于所用射线个数(这里每个投影的取样数均保持为729),还旋转角度增量的数量(这里分别为18,36,90,180),当欠取样时就会发生块状效应,所以由R和角度投影个数信息重建图像,会发现角度增量数量越多,重建的图像就和原图像越相似,但同时观察图6和图7又会发现滤波反投影比直接反投影降低了图像的模糊度。五、实验总结本次实验主要是熟悉了傅里叶变换函数fft及傅里叶反变换函数ifft,理解了radon函数对原图像作出雷登变换后各部分信息的返回值的内容,同时了解了iradon函数在投影数据信息的基础上对图像的重建,这两个函数都隐约地做了傅里叶变换和反傅里叶变换。附录(程序)A=imread('F:\数字图像处理\图片\boy.jpg');A=rgb2gray(A);%彩色图像转化为灰度图像,公式为0.2989*R+0.5870*G+0.1140*BB=imrotate(A,90);FA=fftshift(fft(A));%fft2其实可以对三维的图像直接进行变换FB=fftshift(fft(B));subplot(2,2,1);imshow(A);title('原图');subplot(2,2,2);imshow(B);title('旋转90度后图');subplot(2,2,3);imshow(abs(FA),[0,100]);title('原图频谱');subplot(2,2,4);imshow(abs(FB),[0,100]);title('旋转90度后频谱');holdon;figure;P=phantom('ModifiedShepp-Logan',512);%产生ModifiedShepp-Logan头模型imshow(P),title('ModifiedShepp-Logan头模型');theta1=0:20:340;[R1,xp]=radon(P,theta1);%radon函数计算18个角度的投影数据,每个角度为20度theta2=0:10:350;[R2,xp]=radon(P,theta2);%radon函数计算36个角度的投影数据theta4=0:4:356;[R4,xp]=radon(P,theta4);%radon函数计算90个角度的投影数据theta5=0:2:358;[R5,xp]=radon(P,theta5);%radon函数计算180个角度的投影数据figure,holdon;subplot(2,2,1);imagesc(theta1,xp,R1);xlabel('\theta');ylabel('x\prime'),title('18个角度');%显示18个角度的投影数据subplot(2,2,2);imagesc(theta2,xp,R2);xlabel('\theta');ylabel('x\prime'),title('36个角度');%显示36个角度的投影数据subplot(2,2,3);imagesc(theta4,xp,R4);xlabel('\theta');ylabel('x\prime'),title('90个角度');%显示90个角度的投影数据subplot(2,2,4);imagesc(theta5,xp,R5);xlabel('\theta');ylabel('x\prime'),title('180个角度');%显示180个角度的投影数据%滤波反投影法重建图像,滤波函数选择汉明窗I1=iradon(R1,20,'hamming');%isadon函数滤波反投影重建18个角度的投影数据I2=iradon(R2,10,'hamming');%isadon函数滤波反投影重建36个角度的投影数据I4=iradon(R4,4,'hamming');%isadon函数滤波反投影重建90个角度的投影数据I5=iradon(R5,2,'hamming');%isadon函数滤波反投影重建180个角度的投影数据figuresubplot(2,2,1);imshow(I1);title('18个角度');%显示18个角度的重建图像subplot(2,2,2);imshow(I2);title('36个角度');%显示36个角度的重建图像subplot(2,2,3);imshow(I4);title('90个角度');%显示90个角度的重建图像subplot(2,2,4);imshow(I5);title('180个角度');%显示180个角度的重建图像%直接反投影法重建图像,不加滤波函数I11=iradon(R1,20,'None');I22=iradon(R2,10,'None');I44=iradon(R4,4,'None');I55=iradon(R5,2,'None');figuresubplot(2,2,1);imshow(I11,[]);title('18个角度')%显示18个角度的重建图像subplot(2,2,2);imshow(I22,[]);title('36个角度')%显示36个角度的重建图像subplot(2,2,3);imshow(I44,[]);title('90个角度')%显示90个角度的重建图像subplot(2,2,4);imshow(I55,[]);title('180个角度')%显示180个角度的重建图像