最新Matlab图像处理命令和教程.ppt
《最新Matlab图像处理命令和教程.ppt》由会员分享,可在线阅读,更多相关《最新Matlab图像处理命令和教程.ppt(377页珍藏版)》请在三一文库上搜索。
1、图 像 处 理,2010. 9,课程介绍 MATLAB工具介绍 图像处理的内容 复习总结,2019/5/20,图像处理的研究内容 学习目的与学习方法 教材与参考书,课程介绍,1.图像 2.图像几何操作 3.图像代数运算与逻辑运算 4.图像变换 5.图像分析 6.图像应用研究,2019/5/20,4,图像处理的研究内容,2019/5/20,5,学习目的: 使用MATLAB这个工具学习图像处理技术。 了解图像的计算机表示方法,掌握图像的各种加减乘除运算 及一些经典的处理方法,例如:各种图像变换、图像逻辑运算、数学形态学运算、图像编码与压缩、四叉树分解、纹理分析以及视频图像等内容。 通过学习使学生能
2、够对图像有比较全面深刻的了解,为以后从事图像方面的研究作好准备。 学习方法: 听教师讲解,把思考与上机操作结合起来,其中上机操作 很重要。,学习目的与学习方法,2019/5/20,6,基于Matlab的图像处理 清华大学出版社 2008年,教材与参考书,2019/5/20,7,第一章 图像,1.1 Matlab的命令使用与程序设计 1.2 图像表示方法 1.3 基于图像的动画制作,2019/5/20,8,1.1 Matlab的命令使用与程序设计,命令窗口的使用 许多简单的计算工作都可以在命令窗口中完成,例如:数的运算,向量与矩阵计算,符号运算等。 在命令窗口中执行命令语句可以一句一句执行,清晰
3、方便。但是,有很多复杂的工作还是需要进行程序设计。,2019/5/20,9,M-File程序设计,使用菜单项中的文件选项,选择FilenewM-File菜单,在弹出的窗口中编辑与运行程序。 运行程序使用Debug菜单中的Run命令,或者直接点击工具条中的按钮(Save and Run)。程序的运行结果显示在命令窗口中图形输出在图形窗口中。 程序中的变量以及变量的维数等信息可以在命令窗口左上部的workspace中找到。,2019/5/20,10,【例1-2】 使用程序,绘制颜色渐变的图形(图像)。 使用下面程序段,绘制出图1-1(a)所示图形。 for i=1:20 for j=1:30 a(
4、i,j)=i end end image(a) 在程序的循环过程中,数组a中的第一行所有列的元素的值都设为1,第二行所有列的元素的值都设为2,第二十行所有列的元素都设为20。所以图1-1(a)呈现出行渐变的效果。,图1-1(a),使用下面程序段,绘制出图1-1(b)所示图形。 for j=1:30 for i=1:20 a(i,j)=j end end image(a) 在程序的循环过程中,数组a中的第一列所有行的元素的值都设为1,第二列所有行的元素的值都设为2,第三十列所有行的元素都设为30。所以图1-1(b)呈现出列渐变的效果。 函数image(a)是利用矩阵(二维数组)a中的数值绘制图像
5、,数值越大,对应点的颜色越亮;数值越小,对应点的颜色越暗。,图1-1(b),2019/5/20,12,Figure窗口的图形操作功能,Figure窗口主要功能是输出图形或显示图像。 Figure窗口的菜单包括:File菜单,Edit菜单,Insert菜单,Tools菜单,View菜单。 Figure窗口的工具条与菜单的一些常用功能对应。,2019/5/20,13,单元数组与结构体,单元数组中的每个元素称为单元(cell),单元可以包含任何类型的数据。可以使用两种方法创建一个单元数组,一个是通过赋值语句直接创建;一个是利用cell函数先为单元数组开辟一个内存空间,然后再给各个单元赋值。 结构体与
6、单元数组非常相似,与单元数组不同的是,结构体的组成成员称为字段(fields),结构体采用点号来调用(访问)字段中的数据。,【例1-4】 结构体的创建、显示与调用。 circle1.r=0:0.1:1; circle1.center=rand(2,11); circle1.color=red,green,yellow circle1 = r: 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1 center: 2x11 double color: red green yellow,2019/5/20,15,上述命
7、令创建了一个结构体并且赋值。下面是对结构体成员的调用: circle1.center ans = 0.7919 0.7382 0.4057 0.9169 0.8936 0.3529 0.0099 0.2028 0.6038 0.1988 0.7468 0.9218 0.1763 0.9355 0.4103 0.0579 0.8132 0.1389 0.1987 0.2722 0.0153 0.4451, circle1.color(1) ans = red circle1.center(5,8) ? Index exceeds matrix dimensions. circle1.center
8、(2,8) ans = 0.1987,自定义函数,Matlab拥有大量的库函数,也允许用户自己定义函数。 与其他语言一样,Matlab中的函数具有通用性,给定参数就能输出函数值,或者执行一定的工作; 函数具有重用价值,有些经常使用的程序段都可以作成函数,以备调用。与有些语言不同,Matlab中函数的制作与调用更加简单。,【例1-5】修改函数polt2D,使其能够输入参数控制曲线的绘制区间,然后使用subplot命令在一个图形窗口中绘制多条曲线。 修改polt2D如下: function plot2Dnew(a,b) x=a:0.1:b; y1=sin(x); y2=cos(x); y=y1-y
9、2; plot(x,y) 保存这个函数名为plot2Dnew。在调用这个函数的时候可以利用a,b的值控制曲线的绘制区间。,编写如下程序: subplot(1,4,1);plot2Dnew(2,7) subplot(1,4,2);plot2Dnew(2,6) subplot(1,4,3);plot2Dnew(-10,10) subplot(1,4,4);plot2Dnew(5,7) 该程序段绘制出的图象如下图所示。,2019/5/20,20,Matlab的矩阵操作,Matlab提供了许多函数用来生成工具矩阵。 【例1-6】 使用函数生成工具矩阵,并把这些矩阵绘制成图形。 a(1,:,:)=zer
10、os(64); a(2,:,:)=eye(64); a(3,:,:)=rand(64); a(4,:,:)=randn(64); a(5,:,:)=hilb(64); for i=1:5 subplot(1,5,i) b=a(i) image(b*255) end,2019/5/20,21,程序中的image函数是用来根据矩阵绘制图像的,该函数把二维矩阵绘制成为灰度图像,默认时要求参数矩阵的值位于0到255之间,值越大,颜色越接近白色。矩阵b的值是0到1之间的数,乘以255后,变成了0到255之间的数。,(1) zeros,(2) eye,(3) rand,(4) randn,(5) hilb
11、,常用的矩阵操作函数 矩阵翻转函数 Fliplr()是矩阵左右翻转函数,flipud() 是矩阵上下翻转函数,rot90()是把矩阵逆时针旋转90度。 求矩阵的最值与均值 Max()取最大分量,min()取最小分量,mean()求均值,median()求中值。 矩阵元素的选取 用a(i, j)可以实现数组元素的调用,除了这种基本的调用外,Matlab还提供了“:”方法。 reshape函数、repmat函数与cat函数,【例1-9】计算矩阵的最值与均值。 在命令窗口输入h=rand(6),按Enter键,得到矩阵入下: h = 0.1210 0.8656 0.0498 0.1708 0.393
12、2 0.9342 0.4508 0.2324 0.0784 0.9943 0.5915 0.2644 0.7159 0.8049 0.6408 0.4398 0.1197 0.1603 0.8928 0.9084 0.1909 0.3400 0.0381 0.8729 0.2731 0.2319 0.8439 0.3142 0.4586 0.2379 0.2548 0.2393 0.1739 0.3651 0.8699 0.6458 输入m,i=max(h),按Enter键,有结果: m = 0.8928 0.9084 0.8439 0.9943 0.8699 0.9342 i = 4 4 5
13、 2 6 1 返回的结果是每列最大值以及最大值所在的行标。,输入m1,j=max(m),按Enter键,有结果 m1 = 0.9943 j = 4 上面结果说明矩阵h的最大值在第2行,第4列。 求一个矩阵的最值,一般都是使用两次max(或min)函数。很多矩阵操作函数都是先对每列操作,然后再对行操作,例如: 对于函数表达式k=mean(h),返回值是每列的平均值。,【例1-10】使用“:”调用数组元素。 还使用上面的数组a,输入命令b=a(3, :),按Enter键,有结果 b = 3 4 5 语句b=a(3, :)的功能是把数组a的第三行所有元素调用出来赋给数组b。如果输入命令b=a(:,3
14、),按Enter键,有结果 b = 3 4 5 6 7 语句b=a(:, 3)的作用是把数组a的第三列所有元素赋给数组b,b是5行1列的数组。,“:”在Matlab中的作用就是从到,例如for i=1:6,这里面的“:”就是从1到6的意思。 b=a(:,3)中的“:”也是从到的意思,只有一个冒号,省略了冒号前后的数,含义是从矩阵的第1行到最后一行的意思。既在上面的实验中b=a(:, 3)与b=a(1:5, 3)结果是一样的。 如果输入命令b=a(1:2,3); b,按Enter键,则有结果 b = 3 4 语句b=a(1:2,3)的含义是取第1行到第2行,并且在第3列上的所有元素赋给数组b。
15、【思考题】 b=a(1:2,2:3)能够得到一个什么样的矩阵?,多维数组与图象矩阵,多维数组 :可以用工具矩阵创建多维数组可以利用索引方法生成多维数组,可以利用函数reshape生成多维数组。 图象矩阵:图象在计算机中就可以看作是以矩阵的方式存储与操作的,【例1-11】使用imread( )函数读取序列图像。,在命令窗口中输入语句A=imread(d:12.gif),执行后在命令窗口显示出图象12.gif的数据(如图1-7所示)。 图象文件12.gif存储在D盘根目录下,图象12.gif是宽高均为20的彩色图象,是QQ中的表情:。 从读出的数据分布能够看出眼睛与嘴的位置。,图1-7 图像与数据
16、,实际上,12.gif是个序列图象,可是用imread(d:12.gif)函数只是返回了一个静态的图象的数据。12.gif是一个小动画,一共有7幅图片(象)组成,使用下面的程序段可以把这个序列图像都读出来,变成一个4维数组。 m=uint8(zeros(20,20,1,7); for i=1:7 m(:,:,:,i),map=imread(d:12.gif,i); end 这个程序段得到了4维数组m,一共7页,第一页就是图1-7中显示的矩阵。4维数组m表示图象的大小是(20,20,1,7),20、20表示图像的宽与高,1表示用一组(0到255的)数表示颜色(而不是象RGB图象那样用三组0到25
17、5种颜色表示),7表示页数。 序列图像是有联系的一些图像的集合。从上面例题可以初步得到结论:序列图像对应着4维数组。,1.2 图像表示方法,图像的数字化 图像:每个图像本质上是一个非常复杂的数学函数,这个数学函数一般是不能用解析式子表示的。图像具有不规则性、自然性、复杂性。 图像的数字化:随着数字摄像技术的诞生,数字图像成为科学研究及应用领域的研究重点。在计算机中,图象被看作是一些数字矩阵。,图像的读取与显示,图像的读取:函数imread()用来读取图像,把图像数据读出以后,可以赋给一个变量。 图像数据的调用:既然图像数据是存储在数组中,那么调用图像数据就变成了操作数组元素。 图像的显示:函数
18、imshow( )用来显示图像,函数imview( )、image( )、imagesc( )也可以用来显示图像。函数montage( )用来在一个窗口中显示多帧图像。,M=uint8(zeros(128,128,1,27); for i=1:27 M(:,:,:,i),map=imread(D:Program FilesMATLAB71toolboximagesimdemosmri.tif,i); end montage(M, map),【例1-12】函数montage( )的使用方法。 使用下面程序可以读出mri图像数据并且绘制出图1-12所示图形。,图1-12 使用函数montage显示
19、图像,函数montage(M, map)在一个图形窗口中显示M内的多帧索引图像。如果不是索引图像,去掉参数map就可以了。 索引图像mri.tif颜色表实际上只有89种颜色,颜色强度都已经转化为0到1之间。,下面5行3列数据是颜色表的前5种颜色: 0 0 0 0.0078 0.0078 0.0078 0.0196 0.0196 0.0196 0.0314 0.0314 0.0314 0.0431 0.0431 0.0431,下面5行3列数据是颜色表的最后5种颜色: 0.9569 0.9569 0.9569 0.9686 0.9686 0.9686 0.9804 0.9804 0.9804 0.
20、9922 0.9922 0.9922 1.0000 1.0000 1.0000,下面数据截取自M中的一帧,从数据可以看到数值都介于0到88之间。,这些数值分别映射到颜色表中,对应着颜色表中的颜色。例如数值是88的像素颜色值为1.0000 1.0000 1.0000,数值是85的像素颜色值为0.9569 0.9569 0.9569。,图像的分类,图像的分类: 灰度图像,二值图像,RGB图像,HSV图像,索引图像 【例1-14】HSV图像的3个分量显示。 设计下面程序,显示一幅图像的H、S、V分量。 B=imread(D:117.jpg); B2=rgb2hsv(B); B11=B2(:,:,1)
21、; B12=B2(:,:,2); B13=B2(:,:,3); subplot(1,4,1); imshow(B) subplot(1,4,2); imshow(B11) subplot(1,4,3); imshow(B12) subplot(1,4,4); imshow(B13) 程序运行结果如图1-16所示。,原图像 (b) H阵 (c) S阵 (d) V阵 图像类型的转换: Matlab提供了图像类型转换函数,可以完成图像在各个类型之 间的转换。 Matlab的数据文件: save函数,load函数,exist命令与delete命令,另外,Matlab中 还有其他很多操作文件的命令函数,
22、可以参考相关资料。,1.3 基于图像的动画制作,序列图像 序列图像,JPG图像格式,GIF图像(静态 GIF和动画GIF),MPEG图像(包括 MPEG-1 、 MPEG-2 、 MPEG-4 、MPEG-7等 ),图1-19 逐幅显示的GIF图像,【例1-15】读取GIF动画图像并逐幅显示出来。 GIF动画图像lanqiu.gif存储在D盘根目录下,编写如下程序,读取该图像并逐幅显示,显示的结果在图1-19中。 m=uint8(zeros(127,91,4); for fr=1:4 m(:, :, fr),map=imread(d:lanqiu.gif,fr); m1(:, :, :, fr
23、)=ind2rgb(m(:, :, fr),map); subplot(1,4,fr) imshow(m1(:, :, :, fr) axis off end,该程序首先使用uint8(zeros(127,91,1,4)创建了一个四维全零数组,数据类型为无符号整型,数组名为m。 在编写程序前,事先查看图像lanqiu.gif的属性,得知该图像的高为127,宽为91,一共四幅,所以创建的数组大小为(127,91,4)。 在循环语句中,顺序读出四幅图像的数据,然后使用subplot(1,4,fr) 把四幅图像显示在一个图形窗口中。 语句m(:, :, fr),map=imread(d:lanqiu
24、.gif,fr)读出每一幅图像的数据矩阵与映射矩阵。 语句m1(:, :, :, fr)=ind2rgb(m(:, :, fr),map)是把读出的索引图像变为RGB彩色图像。 axis off是不显示坐标轴。,图像播放,使用图像显示函数播放图像 使用pause函数与image函数等顺次播放图像。 使用movie函数播放图像 【例1-17】使用movie函数播放图像。 编写如下程序,能够实现图像播放 for i=1:4 k=int2str(i); k1=strcat(e:ziranjingguan,k,.bmp); a1=imread(k1); image(a1); m(:,i)=getfra
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 Matlab 图像 处理 命令 教程
链接地址:https://www.31doc.com/p-2808117.html