matlab图像处理各种程序代码要点

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

图像变换(傅立叶变换),图像增强,边缘检测,滤波,图像压缩等.实验工具:MATLAB软件课程设计时间:2008年12月实验部分1.图像变换程序代码及说明clearallN=100;f=zeros(50,50);%产生一个50*50的全0数组f(15:35,23:28)=1;%定义图像数组,从15行到35行,23列到28列附值为1,为白色,其他区域为黑色figure(1)%创建窗口的图形对象,句柄为1imshow(f,'notruesize')%显示图像fF=fft2(f,N,N);%在二维傅立叶变换前把f截断或者添加0,使其成为N*N的数组F2=fftshift(abs(F));%把傅立叶变换的零频率部分移到频谱的中间figure(2)x=1:N;y=1:N;%定义x和y的范围mesh(x,y,F2(x,y));colormap(gray);colorbar%绘制立体网状图,将图形对象的色度改为灰度图像,colorbar给坐标轴添加色彩条%构建一个类似于figure(1)的矩形函数N=200;f=zeros(100,100);f(30:70,45:55)=1;%定义图像数组,从30行到70行,45列到55列附值为1,为白色,其他区域为黑色imshow(f,'notruesize');%然后对f进行二维快速傅立叶变换:以下列出你自己编写的代码…N=200;f=zeros(100,100);f(30:70,45:55)=1;imshow(f,'notruesize');title('原始图像');F=fft2(f,N,N);%对图像f进行二维快速傅立叶变换gridon%打开网格线axison%打开坐标轴imshow(F,[-1,5],'notruesize');%显示傅立叶变换后的图像,图像数据的值域为[-1,5]x=1:N;y=1:N;title('二维快速傅立叶变换后的图像');mesh(abs(F));%绘制F的频谱图title('傅立叶变换后的频谱图');%然后对上述二维快速傅立叶变换提高分辨率:要提高二维快速傅立叶变换的分辨率,在采样率一定的情况下,增大采样点数N即可。对应的频谱图见测试结果。N=300;f=zeros(100,100);f(30:70,45:55)=1;figure(1)imshow(f,'notruesize');title('原始图像');F=fft2(f,N,N);axisonfigure(2)imshow(F,[-1,5],'notruesize');title('二维快速傅立叶变换后的图像');x=1:N;y=1:N;figure(3)mesh(abs(F));title('傅立叶变换后的频谱图');N=400;f=zeros(100,100);f(30:70,45:55)=1;figure(1)imshow(f,'notruesize');title('原始图像');F=fft2(f,N,N);axisonfigure(2)imshow(F,[-1,5],'notruesize');title('二维快速傅立叶变换后的图像');x=1:N;y=1:N;figure(3)mesh(abs(F));title('傅立叶变换后的频谱图');�系数移动(使用函数fftshift)N=200;f=zeros(100,100);f(30:70,45:55)=1;figure(1)imshow(f,'notruesize');title('原始图像');F=fft2(f,N,N);axisonfigure(2)imshow(F,[-1,5],'notruesize');title('二维快速傅立叶变换后的图像');x=1:N;y=1:N;figure(3)mesh(fftshift(abs(F)));%把零频率部分移到频谱的中间title('傅立叶变换后的频谱图');%滤波器频率响应x=1:N;y=1:N;mesh(x,y,F2(x,y));colormap(gray);colorbar%绘制立体网状图,将图形对象的色度改为灰度图像,colorbar给坐标轴添加色彩条测试结果图:1》对f进行二维快速傅立叶变换(请自己运行查看)2》对上述二维快速傅立叶变换提高分辨率N=300时:N=400时:N=800时:N=1000时:(请自己运行查看)从傅立叶变换的频谱图中可以看出,提高分辨率以后,其边缘更加平滑,锯齿状明显减弱。但其傅立叶变换后的图像没有明显改变。3》DC系数移动其系数移动以后,频谱分量都集中到了频谱的中间。4》滤波器频率响应(请自己运行查看)2.图像增强图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是使处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要包含直方图修改处理、图像平滑化处理、图像尖锐化处理、和彩色处理技术等。图像增强有图像对比度增强、亮度增强,轮廓增强等等。下面利用直方图统计算法对灰度图像进行增强:程序代码:I=imread('cameraman.tif');subplot(121)imshow(I);title('原始图像');subplot(122)imhist(I,64)%绘制图像的直方图,n=64为灰度图像灰度级,若I为灰度图像,默认n=256;若I为二值图像,默认n=2。title('图像的直方图');(请自己运行查看)n=256时:(请自己运行查看)下面利用直方图均衡化增强图像的对比度:I=imread('cameraman.tif');J=histeq(I);%将灰度图像转换成具有64(默认)个离散灰度级的灰度图像imshow(I)title('原始图像')figure,imshow(J)title('直方图均衡化后的图像')figure(1)subplot(121);imhist(I,64)title('原始图像的直方图')subplot(122);imhist(J,64)title('均衡化的直方图')(请自己运行查看)分析:从上图中可以看出,用直方图均衡化后,图像的直方图的灰度间隔被拉大了,均衡化的图像的一些细节显示了出来,这有利于图像的分析和识别。直方图均衡化就是通过变换函数histeq将原图的直方图调整为具有“平坦”倾向的直方图,然后用均衡直方图校正图像。下面利用直方图规定化对图像进行增强:I=imread('cameraman.tif');figure,imshow(I);title('原始图像');hgram=50:2:250;%规定化函数J=histeq(I,hgram);figure,imshow(J);title('直方图规定化后的图像');figure,imhist(I,64);title('原始图像的直方图');figure,imhist(J,64);title('直方图规定化后的直方图');运行结果:(请自己运行查看)变换灰度间隔后的图像和直方图:hgram=50:1:250;hgram=50:5:250;3.图像重建图像重建的最典型的应用是医学上的计算机断层摄影技术(CT技术)。它用于人体头部、腹部等内部器官的无损伤诊断,其基本方法就是根据人体截面投影,经过计算机处理来重建截面图像。在人体中把需要扫描的部分取出一定厚度的断层面,再把断层面分成许多小的方块。当一束较窄的射线通过每个方块后强度就有一定程度的衰减,衰减的量由此方块的分子构成和组织密度决定。如果通过各种角度重复上述过程以获得一系列强度分布曲线,就有可能从这些数据中计算每一方块的衰减量。这样就能够重建断层或三维图像。目前提出的图像重建方法有以下五种:(1)联立方程法(也称矩阵法);(2)逆投影法;(3)付立叶变换法;(4)滤波──逆投影法(也称卷积法);(5)逐次逼近法。滤波──逆投影法是当前用得较多的一种图像重建方法,在当代射线CT系统中几乎都用这种方法构成系统。它的特点是精度高,能快速实现。在图像处理的工具箱中,MATLAB提供了一个计算图像沿着指定方向上的投影的函数——radon函数。iradon函数可以实现radon逆变换,radon逆变换通常应用于X线断层摄影术中,可以从投影数据中重构图像。下面利用radon函数和iradon函数计算图像的投影并从投影中重建图像,将Shepp-Logan的大脑图作为测试图。函数radon和函数iradon的调用格式:[R,xp]=radon(I,theta)计算图像I在theta向量所指定的方向上的radon变换,I表示待处理的图像,theta表示radon变换的方向角度,可以是标量或向量值,返回值R的每一列对应图像I在theta某一角度的radon变换值,xp向量表示沿着x'轴对应的坐标值。IR=iradon(R,theta)利用R各列中投影值来构造图像I的近似值。投影数越多,获得的图像越接近原始图像,角度theta必须是固定增量的均匀向量。程序代码:P=phantom(256);%用phantom函数产生Sheep-Logan的大脑图,n为图像p中的行列数,默认为256imshow(P)title('原始图像')%以下为三种不同角度的投影模式theta1=0:10:170;[R1,xp]=radon(P,theta1);%存在18个角度投影theta2=0:5:175;[R2,xp]=radon(P,theta2);%存在36个角度投影theta3=0:2:178;[R3,xp]=radon(P,theta3);%存在90个角度投影figure,imagesc(theta3,xp,R3);colormap(hot);colorbar;%显示图像Sheep-Logan的radon变换title('经radon变换后的图像')xlabel('\theta');ylabel('x\prime');%定义坐标轴%用三种情况的逆radon变换来重建图像I1=iradon(R1,10);I2=iradon(R2,5);I3=iradon(R3,2);figure,imshow(I1)title('角度增值为10时的iradon变换图像')figure,imshow(I2)title('角度增值为5时的iradon变换图像')figure,imshow(I3)title('角度增值为2时的iradon变换图像')运行结果图:(请自己运行查看)由上面重建的图像中可以看出,只用18个投影来重建图像效果很差,而36个投影来重建的图像要好的多,90个投影来重建的图像质量更好,失真也很小,由于R1重建图像的投影太少,所以存在许多虚假点,重建的效果与投影数目相关,投影数目越多图像重建的效果越好,所以要提高重建图像的质量,就需要增加投影角度的数目。除此之外,还可以在Fan-Beam变换数据中用ifaanbeam函数重建图像。4.滤波4.1目的运用中值滤波克服线性滤波器所带来的图像细节模糊。4.2使用设备PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000)4.3使用滤波对图像进行增强4.3.1线性滤波(邻域平均)线性低通滤波器最常用的是线性平滑滤波器,这种滤波器的所有系数都是正的,也称邻域平均。邻域平均减弱或消除了傅立叶变换的高频分量,对噪声的消除有所增强,但是由于平均而使图像变得更为模糊,细节的锐化程度逐渐减弱。下面使用不同的平滑模板对图像进行滤波:(二维线性滤波fliter2)程序代码:I=imread('cameraman.tif');imshow(I)title('原始图像')J=imnoise(I,'salt&pepper');%添加盐椒噪声,噪声密度为默认值0.05figure,imshow(J)title('添加盐椒噪声后的图像')K1=filter2(fspecial('average',3),J)/255;%应用3×3邻域窗口法figure,imshow(K1)title('3×3窗的邻域平

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功