图像运算 实验报告
- 格式:doc
- 大小:2.63 MB
- 文档页数:10
评分 实验报告
课程名称 医学图像处理 实验名称 图像运算 专业班级 姓 名 学 号 实验日期 实验地点
2015—2016学年度第 2 学期 医学图像处理
第2页 共10页 一、 实验目的 MATLAB的图像处理工具箱提供了图像运算函数。本实验将具体介绍Matlab中的图像点运算、代数运算、几何和邻域操作运算。
二、实验环境 1、硬件配置:处理器:Intel(R) Core(TM) i7-3770 CPU @3.40GHz 3.40GHz 安装内存(RAM):4.00GB 系统类型:64位操作系统 2、 软件环境:MATLAB R2013b软件
三、实验内容 利用Matlab对图像进行点运算、加法运算、减法运算、乘法运算、除法运算、改变图像的大小、旋转图像、图像的剪切、图像的邻域操作。 四、实验结果与分析 (包括实验原理、数据的准备、运行过程分析、源程序(代码)、图形图象界面等) 注:本项可以增加页数
例1 图像点运算 skull=imread('skull.tif'); %读取图像 subplot(131),imshow(skull) %生成一行三列三块区域,并在第一块区域绘制图像 I=double(skull); %转换为双精度类型 J=I*0.43+60; %利用该函数对输出图像进行压缩,使其对比度减小,图像变暗 skull2=uint8(J); %转换为uint8 subplot(132),imshow(skull2) %在第二块区域绘制图像 J=I*1.5-60; %利用该函数对输出图像进行对比度级数拓展,使其对比度增强,图像变亮 skull3=uint8(J); %转换为uint8 subplot(133),imshow(skull3) %在第三块区域绘制图像
运行结果:
图1 原图像 图2 对比度减小的图像 图3 对比度增强的图像
分析:1)subplot是用于将多个图像画到一个平面上的函数。subplot(m,n,p,)中的m表示m行,n表示n列,p表示从左到右的第几块区域; 2)uint8表示8位无符号的整型数据类型,以此方式存储的图像称作8位图像;而Matlab中数值一般采用double型的存储和运算,因此在进行本题的灰度变换运算时,应先把skull图像转化为double格式; 医学图像处理 第3页 共10页 3)线性灰度变换函数 当a=1,b=0时,输出图像像素不发生变化;当a=1,0b时,输出图像所有灰度值上移或下移;当10a时,输出图像灰度级压缩,对比度减小,如图2所示;当1a时,输出图像灰度级拓展,对比度增强,如图3所示;当0a 时,输出图像暗区域变亮,亮区域变暗,图像求反。
2、图像的代数运算 例2 图像加法运算 skull=imread('skull.tif'); %读取图像 imshow(skull) %显示图像 J=imread('cameraman.tif'); %读取图像 figure,imshow(J) %显示图像 I=imresize(skull,[256,256]); %将skull图像转换为256256的大小 K=imadd(I,J); %对两幅图像的灰度值进行加法运算 figure,imshow(K) %显示图像 K2=imadd(I,J,'uint16'); %对两幅图像的灰度值进行加法运算,并转化为uint16 figure,imshow(K2,[]) %显示图像
RGB=imread('skull.tif'); %读取图像 RGB2=imadd(RGB,50); %将图像skull与常数50相加 imshow(RGB) %显示RGB图像 figure,imshow(RGB2) %显示亮度增强50的RGB图像 RGB3=imadd(RGB,100); %将图像skull与常数100相加 figure,imshow(RGB3) %显示亮度增强100的RGB图像
运行结果:
图4 skull原图像 图5 cameraman原图像 图6 两幅相加后的图像 医学图像处理
第4页 共10页 图7 转化为uint16的图像 图8 RGB原图 图9 亮度增强50后的图像
图10 亮度增强100后的图像 分析:1)imadd是用于实现两图像灰度值相加的函数,imadd(I,J)中的I和J要求大小相等,由于我读取的skull图像的尺寸为10241280,因此在进行I和J的加法运算前须利用imresize函数把skull图像转换为256256的大小; 2)I和J进行相加后的图像如图6所示,而在I和J相加的基础上将其转换为uint16的图像如图7所示,我们可以清楚的发现图6比图7的更亮,但细节比图7的模糊,这是由于Matlab在运算后会自动将图像转换为double型,因此uint16的图像是比double型的图像更清晰; 3)imadd(RGB,50)是将一个常数50加到RGB图像上,即使图像的灰度级增强了50,如图9所示,以此类推,图10为灰度级增强了100的图像。
例3 图像减法运算 I=imread('skull.tif'); %读取图像 imshow(I) %显示图像 background=imopen(I,strel('disk',15)); %估计圆盘半径为15的背景图像 figure,imshow(background); %显示背景图 I2=imsubtract(I,background); %从原始图像中减去不均匀的背景图
运行结果:
图11 skull原图 图12 背景图 图13 减去背景图后的图像 分析:1)imopen开运算属于形态图像处理,是先腐蚀后膨胀,可以使边界平滑,消除尖刺,断开窄小的连接,保持面积大小不变;strel是用于构建结构元素对象,imopen(I,strel('disk',15))就是构建圆盘半径为15的背景图,如图12所示; 2)imsubtract函数是用于两幅图像的相减运算,如图13所示,减去不均匀的部分后,医学图像处理 第5页 共10页 图像变得更加平滑。 例4 图像的乘法运算 I=imread('skull.tif'); %读取图像 J=immultiply(I,1.2); %图像的乘法,缩放因子是1.2>1,增强图像的亮度 K=immultiply(I,0.5); %图像的乘法,缩放因子是0.5<1,减小图像的亮度 imshow(I) %显示原图像 figure,imshow(J) %显示亮度增强图像 figure,imshow(K) %显示亮度减小图像
运行结果:
图14 skull原图 图15 亮度增强后的图像 图16 亮度减小后的图像 分析:1)乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分 2)一幅图像乘以一个常数通常被称为缩放。immultiply(I,1.2),使用的缩放因数大于1,那么将增强图像的亮度,如图15所示;immultiply(I,0.5)中的因数小于1则会使图像变暗,如图16所示。
例5 图像除法运算 I=imread('skull.tif'); %读取原图像 J=double(I)*0.43+80; %利用该函数对输出图像进行处理,是对比度减小,图像变暗 J=uint8(J); %转换成uint8 K=imdivide(I,J); %除法运算 imshow(I) %显示原图像 figure,imshow(J) %显示对比度减小的图像 figure,imshow(K) %显示灰度级相除后的图片
运行结果: 医学图像处理
第6页 共10页 图17 skull原图 图18 对比度减小的图片 图19 灰度级相除后的图片 分析:1)J=double(I)*0.43+80是将skull图像转换为double型再对其进行灰度变换运算,使其灰度级减小,如图18所示; 2)imdivide(I,J)要求I和J数据类型一致,因此在进行此运算时,须先将double型的J转换为uint8,两幅图像的灰度级相除后的到的结果为[0,1],因为其灰度级极其相近且小,肉眼无法分辨,故我们所看到的输出图像几近与纯黑色,如图19所示; 3)除法运算是用于校正成像设备的非线性影响。
例6 图像的几何运算 I=imread('skull.tif'); %读取图像 J=imresize(I,1.25); %返回图像J,其长宽是图像I的长宽的1.25倍,即放大图像 K=imresize(I,0.8); %返回图像K,其长宽是图像I的长宽的0.8倍,即缩小图像 imshow(I) %显示原图 figure,imshow(J) %显示尺寸放大的图像 figure,imshow(K) %显示尺寸减小的图像
Y=imresize(I,[100,150]); %返回图像Y,高度为100,宽度为150 figure,imshow(Y) %显示150100的图像
运行结果:
图20 skull的原图像 图21 尺寸放大的图像 图22 尺寸减小的图像 图23 150100的图像 分析:1)imresize函数可改变图像输出图像的大小,J=imresize(I,1.25)为返回图像J,其长宽是
图像I的长宽的1.25倍,即放大图像,如图21所示;K=imresize(I,0.8)为返回图像K,其长宽是图像I的长宽的0.8倍,即缩小图像,如图22所示; 2)Y=imresize(I,[100,150])是直接指定输出图像真实的大小,即返回图像Y,高度为100,