天天看点

图像处理(Matlab)-再次学习如何使用Matlab

一、一些注意事项 (1)任何在Matlab中运行的文件必须驻留在当前目录或在搜索路径的目录中。 (2)Matlab和MathWorks工具箱提供的文件包含在搜索路径中。 (3)如果想知道哪些目录位于搜索路径中,或者添加或修改所搜路径,最简单的方法是在桌面上从File菜单中选择Set Path,然后使用Set Path对话框

二、matlab中的数字图像      概念:一幅图像被定义为一个而为函数f(x,y),其中,x和y是空间(平面)坐标,f在任何坐标点(x,y)处的振幅称为图像在该点的亮度。当f的分量x,y分量和振幅都是有限且离散的变量时,称该图像为数字图像。      坐标表示:设对一幅图像f(x,y)采样后,得到了一幅有着M行N列的图像,我们称其大小为M x N。       大多数书中图像原点定义在(x,y)=(0,0)处,沿图像第一行的下一坐标值为(x,y)=(0,1);然而,工具箱中有两处不同:      (1)工具箱使用(r,c)而不是(x,y)来表示行和列;      (2)坐标系统的原点在(r,c)=(0,0)处。      特别注意:IPT文档中将工具箱中的坐标称为像素坐标,IPT还采用一种较少使用的坐标约定,称为空间坐标,这种坐标用x表示列,使用y来表示行。

图像处理(Matlab)-再次学习如何使用Matlab

     图像表示:      上图中a坐标对应的图像表示为:

图像处理(Matlab)-再次学习如何使用Matlab

     上图中b坐标对应的图像表示为:

图像处理(Matlab)-再次学习如何使用Matlab

     上述两种表示形式中的任意一个元素都称为像元、图元或像素。在Matlab中,图像将用矩阵来表示,矩阵以变量形式存储,变量只能以字母开头,且只能由字母、数字和下划线组成。

三、在Matlab中关于图像的基本操作      (1)读取图像imread,其语法为                 imread('filename')      说明:filename是一个含有图像文件全名的字符串(包含任何可用的扩展名)

图像处理(Matlab)-再次学习如何使用Matlab

示例: >> f=imread('Fig0203(a)(chest-xray).tif');

>> imshow(f); 注:将图像读入矩阵f,且参数中使用‘’单引号定界字符串,命令结尾的分号在Matlab中是决定是否输出运行该命令后的结果。

图像处理(Matlab)-再次学习如何使用Matlab

>> size(f)

该命令可以得到图像的行数和列数

>> whos f 该命令可显示一个数组的附加信息。

  Name        Size              Bytes  Class    Attributes

  f         494x600            296400  uint8             

示例:

图像处理(Matlab)-再次学习如何使用Matlab

     (2)显示图像imshow      语法1:imshow(f,G)      其中,f是一个图像数组,G是显示该图像的灰度技术,若G为缺省,灰度级数为256。      语法2:imshow(f,[low high])      会将所有小于或等于low的值都显示为黑色,所有大于或等于high的值都显示为白色。介于low和high之间的值将以默认的级数显示为中等亮度值。      语法3:imshow(f,[ ])      可以将变量low设置为数组f的最小值,将变量high设置为数组f的最大值。

     (3)保存图像imwrite      语法:imwrite(f,'filename')      注意:filename中包含的字符串必须是一种可识别的文件格式扩展名,如,      imwrite(f,'iamge','tif')      或      imwrite(f,'image.tif')      若filename无路径信息,则默认保存到当前工作目录中,imwrite还可以有其他参数,具体取决于所选的文件格式。      一种只适用于JPEG图像的函数是imwrite,其语法为,           imwrite(f,'filename.jpg','quality', q)      其中,q是一个0-100之间的整数,由于JPEG压缩,q越小,图像的退化越严重。      另一种只适用于tif图像的语法为,           imwrite(g,'filename.tif','compression','parameter',...,'resolution',[colres rowres])      其中,parameter可以有如下的值之一:           none:表示无压缩           packbits:表示比特包压缩(非二值图像的默认参数)           citt:citt压缩(二值图像的默认参数)           1 x 2矩阵[colres rowres]包含两个参数,分别以每单位中的点数给出图像的列分辨率和行分辨率

     保存图像到硬盘,      (1)使用图像窗口中的File菜单中的save as即可      (2)命令行存储,语法为:      print -fno -dfileformat -rresno filename

四、数据类型

图像处理(Matlab)-再次学习如何使用Matlab

五、图像类型

(1)亮度图像(Intensity) (2)二值图像(Binary images) (3)索引图像(Indexed images) (4)RGB图像(RGB images)      注意:其中的二值图像是一个取值只有0和1的逻辑数组,一个取值只包含0和1的uint8类数组,在matlab中不认为是二值图像。      在提到一幅图像时,是指一幅“data_class image_type图像”,数据类型+图像类型

六、类型转换      (1)数据类型之间的转换           B = data_class(A)      (2)图像类型之间的转换

图像处理(Matlab)-再次学习如何使用Matlab

     im2uint8将输入中所有小于0的值设置为0,而将输入中所有大于1的值设置为255,再将所有的其他值乘以255,将得到的结果四舍五入为最接近的整数后,完成转换。      要把一个都变了类的任意数组转换成取值范围为[0,1]的归一化double类数组,可以通过mat2gray完成,其基本语法为:      g = mat2gray(A,[Amin,Amax])      其中,g的取值范围是0~1,参数是为了在转换时将A中小于Amin的值在g中转换为0,将A中大于Amax的值在g中转换为1,语句:      g = mat2gray(A);      将A中实际的最小值和最大值分别赋给Amin,Amax。若输入为double类,输出也为double类。      函数im2double将输入转换为double类,若输入是uint8类,uint6 类或logical类,则函数im2double将其转换为范围[0,1]间的double类,若输入已经是double类,则该函数返回一个与输入相等的数组。      亮度图像和二值图像之间的转换,函数im2bw的语法为,           g = im2bw(f,T)      该函数通过阈值处理,将一幅亮度图像f转换为一幅二值图像g,该函数自动将输出二值图像声明为一个logical数组,T的取值范围是[0,1]内。

七、Matlab中的索引      (1)数组索引      维数为1 x N的数组称为行向量,使用转置符(.')可将行向量转换为列向量,Matlab 中向量的元素使用方括号括起,并由空格或逗号隔开。      V = [1 3 5 7 9] 或 V = [1,3,5,7,9]      存取数据块,使用冒号(:),如要存取v的前三个元素,可以使用语句           V(1:3)      使用如下语句存取第三个到最后一个元素:           V(3:end)      其中,end表示向量中的最后一个元素,若V是一个向量,则V(:)产生一个列向量,而语句V(1:end)产生一个行向量;索引并不限于连续的元素,如:V(1:2:end)      函数linspace的语法为           x = linspace(a,b,n)      该语句产生一个n个元素的行向量x,这n个元素之间线性地隔开并且包含a与b。      一个向量也可以作为另一个向量的索引,如:           V([1 4 5])

(2)矩阵索引      矩阵索引与数组索引类似,只是从一维变为二维索引

八、M函数编程简介      M文件可以是简单执行一系列Matlab语句的脚本,也可以是接收变量并产生一个或多个输出的函数;M文件由文本编辑器创建,并以filename.m形式的文件名存储,M文件函数的组成部分为:      函数定义行      H1行      帮助文本      函数体      命令

     函数定义形式为           function [outputs] = name(inputs)      函数名必须以字母开头,后面可以跟字母、数字、下划线的任意组合,但不允许有空格。函数名最长不能超过63个字符,超过此长度将被忽略。      H1行是第一个文本行,他是当个注释行,其前面为函数定义行,H1行与函数定义行间无空行或前导空格,一般是对函数的高度摘要,以便于快速了解函数功能。      帮助文本是紧跟在H1行后面的文本块,二者之间无空行,提供注释或在线帮助。      函数体包含了所有执行计算并给出输出变量赋值的Matlab代码。      符号'%'后面非H1行或帮助文本的所有行可看做函数注释行。

九、运算符

图像处理(Matlab)-再次学习如何使用Matlab
图像处理(Matlab)-再次学习如何使用Matlab
图像处理(Matlab)-再次学习如何使用Matlab
图像处理(Matlab)-再次学习如何使用Matlab
图像处理(Matlab)-再次学习如何使用Matlab
图像处理(Matlab)-再次学习如何使用Matlab