首页|课程介绍|师资队伍|课程资源|网上教学|学习园地|在线自测|在线答疑|帮助|管理登陆网上教学实验一、直方图处理与模板运算1、实验内容内容1:打开lenna.bmp图象:(1)指出其类型;(2)重命名为lenna1.bmp;(3)显示出直方图;(4)显示出累积直方图;(5)显示出直方图均衡结果;(6)计算负图,保存为lennan.jpg内容2:打开图象lenna_noise1.bmp:(1)用均值滤波其对其进行平滑处理;(2)选择不同尺寸的卷积核,查看其对结果的影响。(3)对平滑后的图像执行直方图均衡,查看其对结果的影响。(4)做习题3.18内容3:混合空间增强法是一种有效的方法,比单独采用其中任一种方法产生的效果好。现有图像pout.bmp,其边缘及对比度度很差,请设计一种算法加以增强。注意各种方法组合的顺序。2、基本原理(1)直方图与累积直方图直方图:直方图是灰度级的函数,描述的是图像中具有该灰度级的象素的个数:横坐标是灰度级,纵坐标是该灰度出现的频率(象素的个数)。用公式可表示为:,其中表示某个灰度级,表示图像中具有灰度级的象素的个数;其规一化就是概率密度函数(PDF):,为灰度级数。而累积直方图是小于某个灰度级的象素个数:,其规一化就是累积分布函数(CDF)。(2)直方图均衡直方图均衡是希望输出图像的每一灰度级都有相同的象素点(即输出的直方图是平的)而进行的灰度级变换,其变换函数就是其CDF。离散情况的实现步骤为:a、计算输入图像的CDFb、输出最大灰度值乘以CDFc、对结果b进行量化因为这是近似实现,请注意输出图像的直方图的特点。数字图像实验◇实验教材◇实验条件◇实验内容◇实验报告课堂教学课件郑州大学《Matlab应用图像处理》课程实验指导书1(3)邻域处理邻域(局部)处理是空间滤波的基础,是一个被称为掩模、核、模板或窗口的子图像在待处理图像中逐点移动,在每一点处,滤波器在该点的响应通过事先定义的关系计算,如下图:输出图像在坐标的值计算为:3、相关的Matlab函数imread,imwrite:图像读写iminfo:图像信息imshow:图像显示imhist:图像直方图histeq:直方图均衡fspecial:产生卷积滤波器conv2:二维卷积滤波mat2gray:将矩阵转换为图像im2double:将图像转换为双精度类型实验二、图像空间域复原1、实验内容内容1:打开brain.bmp图像:(1)估计噪声(提示:mri图像中的噪声一般认为是Gaussian的。先选择一个感兴趣区域,然后估计它的均值和方差,见书p.182);(2)选择一种最适当的滤波器进行滤波,并将结果保存为debrain.jpg;并说明你选择的理由。内容2:打开图像debrain.jpg,对其添加噪声亮度为0.25的salt&pepper,用自适应中值滤波器(7*7)进行滤波2、基本原理a)估计噪声估计噪声的方法很多,这里参考的方法是教材p.182提示的方法,即:选择一个感兴趣区域,然后估计它的均值和方差。书中列举了许多噪声空间滤波器:均值滤波器(算术均值、几何均值、谐波均值和逆谐波均值)和顺序统计滤器(中值、最大最小、中点和修正后的阿尔法均值),而对于含Gaussian型噪声的mri图像使用谐波均值最好。b)自适应中值滤波器(参考教材P192)3、相关的Matlab函数fspecial:产生滤波器imfilter:图像滤波filter2:二维滤波mean:均值median:中值max:最大值min:最小值imnoise:添加噪声medfilt2:二维中值滤波郑州大学《Matlab应用图像处理》课程实验指导书2实验三、几何变换1、实验内容内容:编写用双线性插值进行几何变换的函数:out=TranLinear(In,//输入图像sx,//x方向缩放比例sy,//y方向缩放比例theta,//旋转角度x,y,//缩放基点)2、基本原理a)插值插值:确定非整数位置象素值的过程。如下图所示,处的值用插值来求。实现方法采用逆映射。最近邻域插值:输出象素的灰度值等于离它所映射到的位置最近的输入图像的灰度值。如上图,如果点离最近,则。该方法的特点是速度快,但结果图像带有锯齿边。广泛应用的是双线性插值,如上图,求值的过程如下:b)几何变换1)、简单平移:输出=输入2)、简单缩放:输出=输入3)、简单旋转:输出=输入4)、绕基准点的缩放=平移(+)×缩放×平移(-),即:输出=输入5)、绕基准点的旋转=平移(+)×旋转×平移(-),即:输出=输入3、相关的Matlab函数TFORM:空间变换结构体immakeform:建立空间变换结构体imtransform:空间变换imresize:改变图像大小imrotate:图像旋转imcrop:图像剪切实验四、阈值分割及形态学处理1、实验内容内容(算法设计):打开head.bmp图像,请你实现一种算法以去除脑的外围组织,如图brain.bmp。提示:(1)进行阈值分割(p.485);(2)选择适当大小的核对(1)的结果进行开运算。郑州大学《Matlab应用图像处理》课程实验指导书3(3)对(2)的结果进行最大连通成分提取。(4)将结果(3)与原图进行与运算可得最终结果。2、基本原理为了提取大脑,观察MRI脑图可以看出它由一个重要的特征,如下图,就是大脑与它周围的组织之间是由低亮度的细小的结构连接起来的,如果将这些连接断开,并假设大脑是最大的连通成份,那么用最大连通成分分析就可分离出大脑。其基本步骤可概括为:(1)进行阈值分割(p.485);(2)选择适当大小的核对(1)的结果进行开运算。(3)对(2)的结果进行最大连通成分提取。(4)将结果(3)与原图进行与运算可得最终结果。在这一算法中所采用的主要算法有:a)试探法阈值选择算法1、择一个T的初始估计值2、分割图像。这样做会生成两组象素:G1由所有灰度值大于T的象素组成,而G2由所有灰度值小于或等于T的象素组成3、对区域G1和G2中的所有象素计算平均灰度值m1和m24、计算新的阈值:T=(m1+m2)/25、重复步骤2到4,直到逐次迭代所得的T值之差小于事先定义的误差。b)形态学开运算形态学开运算一般是对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。本实验的目标是去除大脑的外围组织,采用开运算是合理的,就是让它去掉大脑与外围组织间的细小连接。注意的地方是核的大小选择。c)最大连通成分分析二值图像中连通成份分析应用是自动图像分析中的核心任务。教材P435介绍了连通成份的提取算法,那么什么是最大连通成份分析呢?实际上取所有连通成份中象素最多的连通成份作为输出就是最大连通成份分析。因为我们假设大脑是其中的最大连通成份,因此对于开运算的结果要采用最大连通成分分析,就去掉了外围组织。3、相关的Matlab函数graythresh:计算阈值im2bw:阈值分割imerode:形态学腐蚀imdilate:形态学膨胀imopen:形态学开运算imclose:形态学闭运算bwlabel:连通成份分析Copyright©电子科技大学生命科学与技术学院版权所有AllRightsReserved维护制作:生命科学与技术学院信息中心PowerdBy冰点火焰郑州大学《Matlab应用图像处理》课程实验指导书4郑州大学《Matlab应用图像处理》课程实验指导书电气工程学院·生物医学工程系2006年11月郑州大学《Matlab应用图像处理》课程实验指导书5实验一Matlab图像显示方法一、实验目的1.了解Matlab的基本功能及操作方法2.练习图像读写和显示函数的使用方法3.掌握Matlab支持的五类图像的显示方法二、实验内容1.图像的读写A)图像读RGB=imread('ngc6543a.jpg');B)图像写先从一个.mat文件中载入一幅图像,然后利用图像写函数imwrite,创建一个.bmp文件,并将图像存入其中。loadclownwhosimwrite(X,map,'clown.bmp')C)图像文件格式转换bitmap=imread('clown.bmp','bmp');imwrite(bitmap,'clown.png','png');2.图像显示A)二进制图像的显示BW1=zeros(20,20);%创建仅包含0/1的双精度图像BW1(2:2:18,2:2:18)=1;imshow(BW1,'notruesize');whosBW2=uint8(BW1);figure,imshow(BW2,'notruesize')BW3=BW2~=0;%逻辑标志置为onfigure,imshow(BW3,'notruesize')whos郑州大学《Matlab应用图像处理》课程实验指导书6BW=imread('circles.tif');imshow(BW);figure,imshow(~BW);figure,imshow(BW,[100;001]);B)灰度图像的显示I=imread('testpat1.tif');J=filter2([12;-1-2],I);imshow(I)figure,imshow(J,[])C)索引图像的显示loadclown%装载一幅图像imwrite(X,map,'clown.bmp');%保存为bmp文件imshow(X)imshow(X,map)D)RGB图像的显示I=imread('flowers.tif');imshow(I)RGB=imread('ngc6543a.jpg');figure,imshow(RGB)imshow(I(:,:,3)%显示第3个颜色分量E)多帧图像的显示mri=uint8(zeros(128,128,1,27));%27帧文件mri.tif初始化forframe=1:27[mri(:,:,:,frame),map]=imread('mri.tif',frame);%读入每一帧endimshow(mri(:,:,:,3),map);%显示第3帧figure,imshow(mri(:,:,:,6),map);%显示第6帧figure,imshow(mri(:,:,:,10),map);%显示第10帧figure,imshow(mri(:,:,:,20),map);%显示第20帧F)显示多幅图像[X1,map1]=imread('forest.tif');[X2,map2]=imread('trees.tif');subplot(1,2,1),imshow(X1,map1)郑州大学《Matlab应用图像处理》课程实验指导书7subplot(1,2,2),imshow(X2,map2)subplot(1,2,1),subimage(X1,map1)subplot(1,2,2),subimage(X2,map2)三、思考题:1.图像显示时,若不带参数’notruesize’,显示效果如何?2.如何显示RGB图像的某一个颜色分量?3.如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?郑州大学《Matlab应用图像处理》课程实验指导书8实验二图像运算一、实验目的1.熟悉图像点运算和代数运算的实现方法2.了解图像几何运算的简单应用3.了解图像的邻域操作二、实验内容1.图像点运算读入图像‘rice.tif’,通过图像点运算改变对比度。rice=imread('rice.tif');subplot(131),imshow(rice)I=double(rice);%转换为双精度类型J=I*0.43+60;rice2=uint8(J);%转换为uint8subplot(132),imshow(rice2)J=I*1.5-60;rice3=uint8(J);%转换为uint8subplot(133),imshow(rice3)2.图像的代数运算A)图像加法运算I=imread('rice.tif');imshow(I)J=imread('cameraman.tif');figure,imshow(J)K=imadd(I,J);figur