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

来源:互联网 发布:nginx命令启动服务 编辑:程序博客网 时间:2024/05/21 12:45
一、一些注意事项
(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来表示行。
     图像表示:
     上图中a坐标对应的图像表示为:
     上图中b坐标对应的图像表示为:
     上述两种表示形式中的任意一个元素都称为像元、图元或像素。在Matlab中,图像将用矩阵来表示,矩阵以变量形式存储,变量只能以字母开头,且只能由字母、数字和下划线组成。

三、在Matlab中关于图像的基本操作
     (1)读取图像imread,其语法为      
          imread('filename')
     说明:filename是一个含有图像文件全名的字符串(包含任何可用的扩展名)
示例:
>> f=imread('Fig0203(a)(chest-xray).tif');
>> imshow(f);
注:将图像读入矩阵f,且参数中使用‘’单引号定界字符串,命令结尾的分号在Matlab中是决定是否输出运行该命令后的结果。

>> size(f)
该命令可以得到图像的行数和列数

>> whos f
该命令可显示一个数组的附加信息。
  Name        Size              Bytes  Class    Attributes

  f         494x600            296400  uint8             

示例:

     (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

四、数据类型

五、图像类型

(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)图像类型之间的转换
     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行或帮助文本的所有行可看做函数注释行。

九、运算符















0 0
原创粉丝点击