matlab医学影响数字处理.ppt

上传人:牧羊曲112 文档编号:5438969 上传时间:2023-07-07 格式:PPT 页数:26 大小:332KB
返回 下载 相关 举报
matlab医学影响数字处理.ppt_第1页
第1页 / 共26页
matlab医学影响数字处理.ppt_第2页
第2页 / 共26页
matlab医学影响数字处理.ppt_第3页
第3页 / 共26页
matlab医学影响数字处理.ppt_第4页
第4页 / 共26页
matlab医学影响数字处理.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《matlab医学影响数字处理.ppt》由会员分享,可在线阅读,更多相关《matlab医学影响数字处理.ppt(26页珍藏版)》请在三一办公上搜索。

1、医学影像数字处理,MATLAB简介,MATLAB简介,MATLAB对于计算技术来说是一种高性能的语言。它以易于应用的环境集成了计算、可视化和编程,在该环境下,问题及其解以我们熟悉的数学表示法来表示。典型的应用包括如下方面:数学和计算 算法开发 数据获取 建模、模拟和原型计算 数据分析、研究和可视化 科学和工程图形 应用开发,包括图像永华 界面构建,MATLAB图像处理工具箱,MATLAB和图像处理工具箱是一个MATLAB函数(称为M函数或M文件)集,它扩展了MATLAB解决图像处理问题的能力。,MATLAB工作环境,MATLAB桌面,基本原理之数字图像的表示,一幅图像可以被定义为一个二维函数f

2、(x,y),其中x和y是空间(平面)坐标,f在任何坐标点(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红绿蓝)组成的。因此,许多黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三幅独立的分量图像即可。图像关于x和y坐标及振幅连续。要讲这样的一幅图像转换成数字形式,就要求数字化坐标和振幅。将坐标值数字化称为取样;将振幅数字化称为量化。因此,当f的x,y分量和振幅都是有限且离散的量时,称该图像为数字图像。,坐标约定,取样和量化的结果十亿个实数矩阵。在本课程中,

3、假设对于一幅图像f(x,y)取样后,的到了一幅有着M行和N列的图像。我们称这幅图像的大小为MxN。坐标(x,y)的值是离散量。为使符号表示清晰方便,我们为这些离散坐标使用整数值。在很多图像处理书籍中,图像的原点定义在(x,y)=(0,0)处。沿图像第一行的下一个坐标值为(x,y)=(0,1).注意符号(0,1)用来表示沿第一行的第二个取样,而不表示图像在取样时的实际物理坐标值。而在MATLAB图像处理工具箱(IPT Image process tools)中使用(r,c)而不是(x,y)来表示行与列,但坐标顺序与前段所描述的坐标顺序一致。此外,在IPT中该坐标系统的原点在(r,c)=(1,1)

4、处。,坐标约定,读取图像,读取图像语法:imread(filename)例:f=imread(例1脑CT.jpg)f=imread(C:MATLAB6p5work例1脑CT.jpg)f=imread(.例1脑CT.jpg),图像大小:size(f)给出一幅图像的行数和列数或者用M,N=size(f)size()返回行数给M,列数给N 附加信息:whos f whos 显示一个数组的附加信息,显示图像,imshow(f)基本语法:imshow(f,G)其中,f是一个图像数组,G是显示该图像的灰度级数。若G省略,则默认的灰度级数是256.imshow(f,low high)会将所有小雨或等于low

5、的值都显示为黑色,所有大雨或等于high的值都显示为白色。介于low high之间的值将以默认的级数显示为中等亮度。imshow(f,)可以将变量low设置为数组f的最小值,将变量high设置为数组f的最大值。函数imshow的这一形式在显示一幅动态范围较小的图像或既有正直又有负值的图像时非常有用。,Pixval函数,格式:pixval功能:经常用来交互地显示单个像素的亮度值。该函数可以显示覆盖在图像上的光标。当光标随着鼠标在图像上移动时,光标所在的位置的坐标和该店的亮度值会在该图形窗口的下方显示出来。处理彩色图像时,红绿蓝分量的坐标也会显示出来。若按下鼠标左键不放,则pixval将显示光标初

6、始位置和当前位置间的欧几里德距离。,Figure函数,Fingure.当用imshow显示另一幅图像时,MATLAB会在屏幕上用新的图像替换旧图像。为了保持第一幅图像并同时显示多幅图像可以使用figure如:imshow(f)figure,imshow(g),保存图像,格式:imwrite(f,filename)在该语法结构中,filename中包含的字符串必须是一种可是别的文件格式扩展名。换言之,所要使用的文件格式要有第三个输入参量明确指定。例如:imwrite(f,example1,tif)或者:imwrite(f,example1.tif)另一种常用但只适用于JPEG图像的函数语法为:i

7、mwrite(f,filename.jpg,quality,q)其中,q是一个在0到100之间的整数(由于JPEG的压缩,q越小,图像退化就越严重)。imwrite(f,exampleq25.jpg,quality,25),Imfinfo函数,格式:imfinfo filenamefilename 是存储在磁盘中的图像的全名。例如:imfinfo 例1脑CT.jpg输出信息如下:ans=Filename:例1脑CT.jpg FileModDate:11-Oct-2011 10:28:34 FileSize:24294 Format:jpg FormatVersion:Width:240 Hei

8、ght:286 BitDepth:24 ColorType:truecolor FormatSignature:Comment:,Imfinfo函数,其中,FileSize以字节为单位。原图像字节数=width x height x bitdepth/8压缩比=原图像字节数/filesze由函数Imfinfo显示的信息域可以捕获至所谓的结构变量当中,以便于后续的计算。如:K=imfinfo(例1脑CT.jpg)K=Filename:例1脑CT.jpg FileModDate:11-Oct-2011 10:28:34 FileSize:24294 Format:jpg FormatVersion

9、:Width:240 Height:286 BitDepth:24 ColorType:truecolor FormatSignature:Comment:,保存图像,imwrite 适用于tif图像的语法为:Imwrite(g,filename.tif,compression,parameter,resolution,colres rowres)其中,parameter可以是如下的主要的值之一:none表示无压缩;packbits 表示比特包压缩(非二值图像的默认参数);ccitt表示ccitt压缩(二值图像的默认参数)。1X2矩阵colres rowres包含两个整数,分别以每单位中的点数

10、给出图像的列分辨率和行分辨率(默认值为72 72).Colres是垂直方向上每英寸的点数dpi(像素)。Rowres是水平方向上每英寸的点数。,数据类,虽然我们处理的是整数坐标。但matlab中的像素本身并不是整数。如下表:,MATLAB中所有的数值计算都可以用double类来进行,所以他也是图像处理中最常使用的数据类。Uint8数据类也是频繁使用的数据类,尤其实在从存储中读取数据时,因为8比特图像是实际中最常用的图像。,图像类型,亮度图像(Intensity images)二值图像(Binary images)索引图像(Index images)RGB图像(RGB images)亮度图像是一

11、个数据矩阵,其归一化的取值表示亮度。若亮度图像的像素都是uint8类或者uint16类,则它们的整数值范围分别是0-255和0-65535。如果是double类,则像素的取值是浮点数。规定双精度型归一化亮度图像的取值范围是0-1。二值图像 在matlab中具有非常特殊的意义。一幅二值图像是一个取值只有0和1的逻辑数组。因而,一个取值包含0和1的uint8类数组,在matlab中并不认为是二值图像。使用loglcal函数可以把数值数组转换为二值数组。因此,若A是一个由0和1构成的数值数组,则可以使用如下的语句常见一个逻辑数组B:B=logical(A)若A中包含除了0和1之外的其他元素,则log

12、ical函数就可以将所有的非零的量变换为逻辑1而将所有的0值变成逻辑0。要测试一个数组是否为逻辑数组可以使用函数 islogical。如islogical(B)。B是逻辑数组返回1,否则返回0。,数据类及其相互转换,数据类型间的转换很直接。通用的语法为:B=data_class_name(A)其中,data_class_name是数据类型的任何一种。例如:假设A是一个uint8类型数组,则命令B=double(A)会产生一个双精度数组B。假设C是一个0-255(很有可能包含小数)的双精度类数组,则命令D=uint8(C)可以将其转换为一个uint8类数组。若一个double类数组包含有0-25

13、5之外的值,则在使用上述方法将其转化为uint8数组时,matlab会将所有的小于0的值转换为0,所有大于255的值转换为255,而在0-255之间的值将舍去其小数部分转换为整数。因此,在double转换为uint8之前有必要对其进行适当的缩放,以便其元素取值尽量在0-255内。同时再将任何数据类转换为logicl类时,数组中所有的非0值将转换成逻辑1,0值将转换成逻辑0。,图像类和类型间的转换,IPT中用于图像类和类型间转换的函数如下表:,im2uint8,例如:f=-0.5 0.5;0.75 1.5f=-0.5000 0.5000 0.7500 1.5000 g=im2uint8(f)g=

14、0 128 191 255,函数im2uint8将输入中所有小于0的设置为0,而将输入中所有大于1的值设为255,再讲所有其他的值乘以255.将得到的结果四舍五入为最接近的整数后就完成转换。,mat2gray,要把一个double类的任意数组转换成取值范围为0-1的归一化double类数组,可以通过函数mat2gray完成,语法为:g=mat2gray(A,Amin,Amax)其中,图像g的取值范围在0(黑色)-1(白色)之间。规定参数Amin和Amax,是为了在转换是将A中小于Amin的值在g中转换为0,将g中大于Amax的值在g中转换为1。语句g=mat2gray(A);将矩阵中实际最小值

15、和最大值分别赋给Amin和Amax。,im2double,Im2double将输入转换为double类。如输入的是uint8,uint16,logical则函数im2double将其转换为0-1范围内。若输入是double类,则函数im2double将返回一个与输入相等的数组。,h=uint8(25 50;128 200)h=25 50 128 200 g=im2double(h)g=0.0980 0.1961 0.5020 0.7843,二值和亮度图像类间转换:im2bw,函数im2bw的语法为:g=im2bw(f,T)该函数通过阀值处理将一幅亮度图像f转换为一幅二值图像g。输出二值图像g

16、中值为0的像素对应于亮度图像f中值小于阀值T的像素点,亮度图像中其它点在g中值为逻辑1。不管输入是何种数据类,T的取值都必须在区间0-1内。Im2bw自动将输出二值图像声明为一个logical数组。若我们写为g=im2bw(f),则阀值默认为0.5.如输入是一幅uint8类图像,则im2bw会将该图像所有像素点除以255,然后使用默认阀值或给定阀值。若为uint16 则除以65535。若输入是double类图像,则会直接使用阀值。,举例:,f=1 2;3 4f=1 2 3 4 g=mat2gray(f)g=0 0.3333 0.6667 1.0000 gb=im2bw(g,0.6)gb=0 0 1 1 gbv=islogical(gb)gbv=1,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号