医学图像处理实验报告
Lab Report of Medical Image Processing
系 部: 学 号: 姓 名: 指导教师:
实验1 MATLAB差不多操作及函数用法
1.1 实验原理介绍 1.1.1读取函数
函数imread能够将图像读入MATLAB环境,语法为: imread('filename')
其中filename是一个含有图像文件全名的字符串(包括任何可用的扩展名)。例如命令行
>>f = imread ( 'chestxray.jpg');
将JPEG图像chestxray读入图像数组f中。 函数size能够给出一副图像的行数和列数: >>size (f) ans- 1024
函数whos能够显示一个数组的差不多附加信息。例如,语句 >>whos f
whos行结尾处的分号对结果没有阻碍。 1.1.2 显示图像
一样使用函数imshow显示,其差不多语法为: imshow (f, G)
其中,f是一个图像数组,G是显示该图像的灰度级数。若G省略,默认为256。语法:
imshow {f, [low high]}
会将所有小于或等于low的值都显示为黑,所有大于或等于high的值都显示为白色。介于low和high之间的值将以默认的级数显示为中等亮度值。
当用imshow显示另外一幅图像时,MATLAB会在屏幕上用新图像替换旧图像,为保持第一幅图像并同时显示第二副图像,能够使用如下figure函数:
>>figure, imshow(g)
要了解图像文件的其他详细信息,能够使用imfinfo函数,其语法结构为:
imfinfo filename
其中,filename是储备在磁盘中的图像全名。 1.1.3 储存图像
使用函数imwrite能够将图像写在磁盘上,该函数语法为: imwrite (f, ‘filename’)
下面的命令能够把图像f写为TIFF格式,在默认情形下使用语句 >>imwrite (f,'patient10_run1', 'tif') 或
>>imwrite (f, 'patient10_run1.tif') 会将文件储存到当前的工作名目中。 另外,如果是JPEG图像,其语法能够为: imwrite (f, 'filename.jpg', 'quality', q)
其中q是一个在0到100之间的整数(q越小,图像退化越严峻)。 函数imwrite另一种常用但只用于tif图像的语法为:
imwrite (g, ‘filename.tif’, ‘compression’, ‘parameter’,… ‘resolution’, [colres rowres])
其中,‘parameter’有三种情形:为‘none’表示无压缩,‘packbits’表示比特压缩包压缩(非二值图像默认参数),‘ccitt’表示ccitt压缩(二值图像默认参数)。colres为列辨论率。
1.1.4 数据类型 见下表:
表格 错误!文档中没有指定样式的文字。-1 数据类型。前8项数值类,第9项字符类,第10项逻辑类。
名称 double unit8 unit16 unit32 int8 308308描述 双精度浮点数,范畴【-10,10】(8比特每像素) 无符号8比特整数,范畴【0,255】(1比特每像素) 无符号16比特整数,范畴【0,65535】(2比特每像素) 无符号32比特整数,范畴【0,4294967295】(4比特每像素) 有符号8比特整数,范畴【-128,127】(1比特每像素) int16 int32 single char logical 有符号16比特整数,范畴【-32768,32767】(2比特每像素) 有符号32比特整数,范畴【-2147483648,2147483647】(4比特每像素) 单精度浮点数,范畴【-10,10】(4比特每像素) 字符(2比特每像素) 值为0或者1(1比特每像素) 38381.1.5 图像类型 要紧分为4种:
亮度图像(Intensity image) 二值图像(Binary image) 索引图像(Indexed image) RGB图像(RGB image)
注意:一副图像的特点是由数据类和图像类这两者来表征的。例如,“unit8亮度图像”表示一副像素差不多上unit8数据类的亮度图像。
1.1.6 数据类与图像类型之间的转换 (1)数据类间的转换 通用语法为:
B=data_class_name(A)
其中,data_class_name能够为表1第一列中的任意一项。 (2)图像类和数据类型间的转换 见下表:
表格 错误!文档中没有指定样式的文字。-2 IPT中用于进行图像类和数据类转换的函数
名称 im2unint8 im2uint16 mat2gray im2double im2bw 将输入转换为 unit8 unit16 double,范畴【0,1】 double logical 有效的图像数据类 logical,uint8,uint16,double logical,uint8,uint16,double double logical,uint8,uint16,double uint8,uint16,double 要把一个double类的任意数组转换成取值范畴为[0,1]的归一化double类数组,能够通过函数mat2gray完成,其差不多语法为:
g=mat2gray(A, [Amin, Amax])
其中,图像g的取值范畴在0(黑色)到1(白色)之间。转换时,小于Amin的值在g中变为0,大于Amax的值变为1。
1.1.7 数组索引
在MATLAB中,v=[1 3 5 7 9]代表一维行向量,使用转置运算符(.’)能够把行向量转为列向量。
要存取元素数据块,能够使用冒号(:)。例如,下列语句代表存取第三个到最后一个元素:
>>v(3:end) ans=
5 7 9
注意:符号1:2:end表示索引从1开始计数,步长为2,直到终止。步长能够为负。
例如,求一个矩阵所有元素之和: >>s=sum(A(:)) 1.1.8 运算符
MATLAB运算符一样分为以下三种要紧类不: 执行数值运算的算术运算符 在数量上比较操作数的关系运算符
执行函数AND、OR和NOT的逻辑运算符 常用的运算符和算术函数如下面几个表所示:
表格 错误!文档中没有指定样式的文字。-3 数组和矩阵运算符
运算符 + - .* * ./ .\\ / \\ 名称 数组和矩阵加 数组和矩阵减 数组乘 矩阵乘 数组右除 数组左除 矩阵右除 矩阵左除 MATLAB函数 plus(A,B) minus(A,B) times(A,B) mtimes(A,B) rdivide(A,B) ldivide(A,B) 注释和示例 a+b,A+B或a+A a-b,A-B或a-A C=A.*B,C(I,J)=A(I,J)*B(I*J) 标准矩阵乘 C=A./B C=A.\\B mrdivide(A,B) mldivide(A,B)