【文档说明】matlab医学影响数字处理课件.ppt,共(25)页,167.317 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-245383.html
以下为本文档部分文字说明:
医学影像数字处理MATLAB简介matlab医学影响数字处理1MATLAB简介MATLAB对于计算技术来说是一种高性能的语言。它以易于应用的环境集成了计算、可视化和编程,在该环境下,问题及其解以我们熟悉的数学表示法来表示。典型的应用包括如下方面:数学和计算
算法开发数据获取建模、模拟和原型计算数据分析、研究和可视化科学和工程图形应用开发,包括图像永华界面构建matlab医学影响数字处理2MATLAB图像处理工具箱MATLAB和图像处理工具箱是一个MATLAB函数(称为M函数或M文件
)集,它扩展了MATLAB解决图像处理问题的能力。matlab医学影响数字处理3MATLAB工作环境•MATLAB桌面matlab医学影响数字处理4基本原理之数字图像的表示一幅图像可以被定义为一个二维函数f(x,
y),其中x和y是空间(平面)坐标,f在任何坐标点(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独
立的分量图像(红绿蓝)组成的。因此,许多黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三幅独立的分量图像即可。图像关于x和y坐标及振幅连续。要讲这样的一幅图像转换成数字形式,就要求数字化坐标和振幅。将坐标值数字化称为取样;将振
幅数字化称为量化。因此,当f的x,y分量和振幅都是有限且离散的量时,称该图像为数字图像。matlab医学影响数字处理5坐标约定取样和量化的结果十亿个实数矩阵。在本课程中,假设对于一幅图像f(x,y)取样后,的到
了一幅有着M行和N列的图像。我们称这幅图像的大小为MxN。坐标(x,y)的值是离散量。为使符号表示清晰方便,我们为这些离散坐标使用整数值。在很多图像处理书籍中,图像的原点定义在(x,y)=(0,0)处。沿图像第一行的下一个坐标值为(x,y)=(0,1
).注意符号(0,1)用来表示沿第一行的第二个取样,而不表示图像在取样时的实际物理坐标值。而在MATLAB图像处理工具箱(IPTImageprocesstools)中使用(r,c)而不是(x,y)来表示行与列,但坐标顺序与前段所描述的坐标顺序一致。此
外,在IPT中该坐标系统的原点在(r,c)=(1,1)处。matlab医学影响数字处理6坐标约定matlab医学影响数字处理7读取图像读取图像语法:imread(‘’)例:f=imread('例1脑CT.jpg')f=imread(‘C:\MATLAB6p5\work\
例1脑CT.jpg')f=imread(‘.\例1脑CT.jpg')matlab医学影响数字处理8图像大小:size(f)给出一幅图像的行数和列数或者用>>[M,N]=size(f)size()返回行数给M,列数给N附加信息:whosfwhos显示一个数组的附加信息matlab医学影响数字处理9
显示图像imshow(f)基本语法:imshow(f,G)其中,f是一个图像数组,G是显示该图像的灰度级数。若G省略,则默认的灰度级数是256.imshow(f,[lowhigh])会将所有小雨或等于low的值都显示为黑色,所有大雨或等于high的值都显示为白色。
介于lowhigh之间的值将以默认的级数显示为中等亮度。imshow(f,[])可以将变量low设置为数组f的最小值,将变量high设置为数组f的最大值。函数imshow的这一形式在显示一幅动态范围较小的图像或既有正直又有负值的图像时非常有用。matlab医学影
响数字处理10Pixval函数格式:pixval功能:经常用来交互地显示单个像素的亮度值。该函数可以显示覆盖在图像上的光标。当光标随着鼠标在图像上移动时,光标所在的位置的坐标和该店的亮度值会在该图形窗口的下方显示出来。处理彩色图像时,红绿蓝
分量的坐标也会显示出来。若按下鼠标左键不放,则pixval将显示光标初始位置和当前位置间的欧几里德距离。matlab医学影响数字处理11Figure函数Fingure.当用imshow显示另一幅图像时,MATLAB会在屏幕上用新的图像
替换旧图像。为了保持第一幅图像并同时显示多幅图像可以使用figure如:>>imshow(f)>>figure,imshow(g)matlab医学影响数字处理12保存图像格式:imwrite(f,’’)在该语法结构中,中包含的字符串必须是一种可是别的文件格式扩展名。换言之,所要使用的文件
格式要有第三个输入参量明确指定。例如:>>imwrite(f,’example1’,’tif’)或者:>>imwrite(f,’example1.tif’)另一种常用但只适用于JPEG图像的函数语法为:imwrite(f,’’,’quality’,q)其中,q是一个在0到100之间的整
数(由于JPEG的压缩,q越小,图像退化就越严重)。>>imwrite(f,’exampleq25.jpg’,’quality’,25)matlab医学影响数字处理13Imfinfo函数格式:imfinfo是存储在磁盘中的图像的全名。例如:>>imfinf
o例1脑CT.jpg•输出信息如下:ans=•:'例1脑CT.jpg'•:'11-Oct-201110:28:34'•:24294•Format:'jpg'•FormatVersion:''•Width:240•He
ight:286•BitDepth:24•ColorType:'truecolor'•FormatSignature:''•Comment:{}matlab医学影响数字处理14Imfinfo函数其中,以字节为单位。原图像字节数=widthxheightxbitde
pth/8压缩比=原图像字节数/由函数Imfinfo显示的信息域可以捕获至所谓的结构变量当中,以便于后续的计算。•如:>>K=imfinfo('例1脑CT.jpg')•K=•:'例1脑CT.jpg'•:'11-Oct-201110:28:34'•:24294•Format:'jp
g'•FormatVersion:''•Width:240•Height:286•BitDepth:24•ColorType:'truecolor'•FormatSignature:''•Comment:{}matlab医学影响数字处理15保存图像imwrite适用于ti
f图像的语法为:Imwrite(g,’’,’compression’,’parameter’,…‘resolution’,[colresrowres])其中,’parameter‘可以是如下的主要的值之一:’none’表示无压缩;’packbits’表示比特包压缩(非二值图像的默认参
数);’ccitt’表示ccitt压缩(二值图像的默认参数)。1X2矩阵[colresrowres]包含两个整数,分别以每单位中的点数给出图像的列分辨率和行分辨率(默认值为[7272]).Colres是垂直方向上每英寸的点数dpi(像
素)。Rowres是水平方向上每英寸的点数。matlab医学影响数字处理16数据类虽然我们处理的是整数坐标。但matlab中的像素本身并不是整数。如下表:名称描述double双精度浮点数(8比特每像素)unit8无符号8比特整数,0-255(1比特每
像素)unit16无符号16比特整数,0-65535(2比特每像素)unit32无符号32比特整数,0-4294967295(4比特每像素)int8有符号8比特整数,-128到127(1比特每像素)int16有符号16比特整数,-32768到32767(2比特每像素)int3
2有符号32比特整数,(4比特每像素)single单精度浮点数(4比特每像素)char字符(2比特每像素)logical值为0或1(1比特每像素)MATLAB中所有的数值计算都可以用double类来进行,所以他也是图像处理中最常使用的数据类。Uint8数据类也是频
繁使用的数据类,尤其实在从存储中读取数据时,因为8比特图像是实际中最常用的图像。matlab医学影响数字处理17图像类型•亮度图像(Intensityimages)•二值图像(Binaryimages)•索引图像(Indeximages)•RGB图像(RGBimages)
亮度图像是一个数据矩阵,其归一化的取值表示亮度。若亮度图像的像素都是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之外的其他元素,则logical函数就可以将所有的非零的量变换为逻辑1而将所有的0值变成逻辑0。要测试一个数组是否为逻辑数组可以使用函数islogical。如islogical(B)。B是逻辑数组返回1,否则返回0。matlab医学
影响数字处理18数据类及其相互转换数据类型间的转换很直接。通用的语法为:B=data_class_name(A)其中,data_class_name是数据类型的任何一种。例如:假设A是一个uint8类型数组,则命令B=doubl
e(A)会产生一个双精度数组B。假设C是一个0-255(很有可能包含小数)的双精度类数组,则命令D=uint8(C)可以将其转换为一个uint8类数组。若一个double类数组包含有0-255之外的值,则在使用上述方法将其转化为uint8数组时,matlab会将所有的小于0的值转换为0,所有大于
255的值转换为255,而在0-255之间的值将舍去其小数部分转换为整数。因此,在double转换为uint8之前有必要对其进行适当的缩放,以便其元素取值尽量在0-255内。同时再将任何数据类转换为lo
gicl类时,数组中所有的非0值将转换成逻辑1,0值将转换成逻辑0。matlab医学影响数字处理19图像类和类型间的转换IPT中用于图像类和类型间转换的函数如下表:名称将输入转换为有效的输入图像数据类im2uint8uint8logical,uint8,uint16,doubl
eim2uint16uint16logical,uint8,uint16,doublemat2graydouble,范围0-1doubleim2doubledoublelogical,uint8,uint16,doubleim2bwlogicaluint8,uint16,double
matlab医学影响数字处理20im2uint8•例如:>>f=[-0.50.5;0.751.5]•f=•-0.50000.5000•0.75001.5000•>>g=im2uint8(f)•g=•0128•191255函数im2uint8将输入中所有小于0的设置为0,而
将输入中所有大于1的值设为255,再讲所有其他的值乘以255.将得到的结果四舍五入为最接近的整数后就完成转换。matlab医学影响数字处理21mat2gray要把一个double类的任意数组转换成取值范围为0-1的归一化double类
数组,可以通过函数mat2gray完成,语法为:g=mat2gray(A,[Amin,Amax])其中,图像g的取值范围在0(黑色)-1(白色)之间。规定参数Amin和Amax,是为了在转换是将A中小于Amin的值在g中转换为0,将g中大于Amax的值在g中转换为1。语句>>g=mat2g
ray(A);将矩阵中实际最小值和最大值分别赋给Amin和Amax。matlab医学影响数字处理22im2doubleIm2double将输入转换为double类。如输入的是uint8,uint16,logical则函数im2
double将其转换为0-1范围内。若输入是double类,则函数im2double将返回一个与输入相等的数组。>>h=uint8([2550;128200])h=2550128200>>g=im2double(h)g=0.09800.19610.
50200.7843matlab医学影响数字处理23二值和亮度图像类间转换:im2bw函数im2bw的语法为:g=im2bw(f,T)该函数通过阀值处理将一幅亮度图像f转换为一幅二值图像g。输出二值图像g中值为0的像素对应于亮度图像f中值小于阀值T的像素点,亮度图像中其它点在g中值为逻辑1。不管输
入是何种数据类,T的取值都必须在区间0-1内。Im2bw自动将输出二值图像声明为一个logical数组。若我们写为g=im2bw(f),则阀值默认为0.5.如输入是一幅uint8类图像,则im2bw会将该图像所有像素点除以255,然后使用默认阀值或给定阀值。若为uint16则
除以65535。若输入是double类图像,则会直接使用阀值。matlab医学影响数字处理24举例:•>f=[12;34]•f=•12•34•>>g=mat2gray(f)•g=•00.3333•0.66671.0000•>>gb=im2bw(g,0.6)
•gb=•00•11•>>gbv=islogical(gb)•gbv=•1matlab医学影响数字处理25