图像处理(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);
>> imshow(f);
注:将图像读入矩阵f,且参数中使用‘’单引号定界字符串,命令结尾的分号在Matlab中是决定是否输出运行该命令后的结果。
>> size(f)
该命令可以得到图像的行数和列数
>> whos f
该命令可以得到图像的行数和列数
>> whos f
该命令可显示一个数组的附加信息。
Name Size Bytes Class Attributes
f 494x600 296400 uint8
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
- 图像处理(Matlab)-再次学习如何使用Matlab
- matlab学习笔记:图像处理
- 【图像处理】Matlab使用技巧
- 图像处理中的matlab使用
- Matlab GUI图像学习图像处理进阶
- MATLAB图像处理基础知识学习总结(MATLAB操作命令)
- 关于MATLAB图像处理学习笔记20070929
- matlab进行图像处理学习笔记
- Matlab学习-图像处理工具箱函数
- MATLAB图像处理学习笔记之一
- MATLAB图像处理_学习笔记
- Matlab学习一 图像基本处理
- MATLAB学习笔记 彩色图像处理
- MATLAB图像处理_plot的使用详解
- MATLAB图像处理命令
- MATLAB 图像处理命令
- MATLAB图像处理基本知识
- Matlab 图像处理
- android.os.networkonmainthreadexception
- Office文档密码破解(如忘记 outlook pst文件的密码)
- FAST角点检测方法详解
- 学习java 一
- eclipse/myeclipse安装svn插件
- 图像处理(Matlab)-再次学习如何使用Matlab
- 关于luci的几个问题<二>
- struts2常用标签详解-在项目中使用struts2标签
- 高并发量网站解决方案
- Ubuntu中配置squid代理
- 黑马程序员——Java基础语法 之函数,数组
- 【线性代数公开课MIT Linear Algebra】 第九课 向量与矩阵的桥梁
- 深入理解Java的接口和抽象类
- 【算法设计与数据结构】三分法:求单峰函数的极值