医学图像处理实验指南精品资料.doc





《医学图像处理实验指南精品资料.doc》由会员分享,可在线阅读,更多相关《医学图像处理实验指南精品资料.doc(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六节 医学图像处理一、位图文件的读取、显示以及存储【实验目的】1. 掌握标准C及C+编程语言,熟悉Visual C+编程环境。2. 了解数字图像的表示。3. 了解位图文件的格式。【实验内容】1. 使用Visual C+编写程序,读取标准图像lena.bmp,并将数据存入到一个二维数组中。2. 在用户视图区正确显示该图像。3. 将图像数据行首尾倒置,并保存到一个新的位图文件中。用图像浏览器(如ACDSee、PhotoShop等)验证新写入的位图文件是否正确。【实验原理】偏移量域的名称大小内容图像文件头0000.h标识符(Identifier)2bytes两字节的内容用来识别位图的类型:BM:
2、Windows 3.1x, 95, NTBA: OS/2 Bitmap ArrayCI: OS/2 Color IconCP: OS/2 Color PointerIC: OS/2 IconPT: OS/2 Pointer0002hFile Size1 dword用字节表示的整个文件的大小0006hReserved1 dword保留,设置为0000AhBitmap Data Offset1 dword从文件开始到位图数据开始之间的数据(bitmap data)偏移量000EhBitmap Header Size1 dword位图信息头(Bitmap Info Head)的长度,用来描述位图的颜
3、色、压缩方法等,下面的长度表示:28h - Windows 3.1x, 95, NT0Ch OS/2 1.xF0h - OS/2 2.x0012hWidth1 dword位图的宽度,以像素为单位0016hHeight1 dword位图的高度,以像素为单位001AhPlanes1 word位图的位面数图像信息头001ChBits Per Pixel1 word每个像素的位数1 - Monochrome bitmap4 16 color bitmap8 256 color bitmap16 16bit(high color) bitmap24 24bit(high color) bitmap32
4、32bit(high color) bitmap001EhCompression1 dword压缩说明:0 none (也使用BI_RGB表示)1 - RLE 8-bit/pixel(也使用BI_RLE8表示)2 - RLE 4-bit/pixel(也使用BI_RLE4表示)3 - Bitfields(也使用BI_BITFIELDS表示)0022hBitmap Data Size1 dword用字节数表示的位图数据的大小。该数必须是4的倍数0026hHResolution1 dword用像素/米表示的水平分辨率002AhVResolution1 dword用像素/米表示的垂直分辨率002EhC
5、olors1 dword位图是用的颜色数。如8-位/像素表示为100h或者2560032hImportant Colors1 dword指定重要的颜色数。当该域的值等于颜色数时,表示所有颜色都一样重要调色板数据0036hPaletteN*4 byte调色板规范。对于调色板中的每个表项,这4个字节用下述方法来描述RGB的值:1字节用于蓝色分量1字节用于绿色分量1字节用于红色分量1字节用于填充符(设置为0)图像数据0436hBitmap Datax byte该域的大小取决于压缩方法,他包含所有的位图数据字节,这些数据实际就是彩色调色板的索引号表6-1 位图文件格式位图文件(Bitmap_File,
6、BMP)格式是Windows所采用的图像文件存储格式。一般来说,位图文件由四个部分组成:位图文件头(bitmap_header)、位图信息头(bitmap_information header)、调色板以及位图数据区(字节阵列)。【实验内容】1. 图像数据读取(1) 在Windows下打开Visual C+ 6.0,建立工程readbmp,并将该工程保存在自定义的目录下。(2) 在视图类的头文件readbmpView.h中定义位图文件头、信息头、调色板数据类型,并声明该类型的变量。文件头:struct bmicolor WORD bftype; DWORD bfsize; DWORD bfre
7、served; DWORD bfoffbits; fh;信息头: struct infohead DWORD bisize; DWORD biwidth; DWORD biheight; WORD biplanes; WORD bibitcount; DWORD bicompression; DWORD bisizeimage; DWORD bixpelspermeter; DWORD biypelspermeter; DWORD biclrused; DWORD biclrimportant; ih;调色板: struct bmpcolor BYTE blue; BYTE green; BY
8、TE red; BYTE reserved; pallete256;(3) 在视图类文件readbmpView.cpp中的OnDraw( )函数里定义一个二维数组,用来保存图像像素的灰度值。(4) 声明一个文件类对象,CFile fp; (5) 打开图像文件,fp.Open(c:ddd.bmp,0);(6) 读取图像中文件头、信息头和调色板信息。fp.Read(&fh,sizeof(fh);fp.Read(&ih,sizeof(ih);for (i=0;iSetPixel(j+50,i+50,RGB(a,a,a);3. 图像存储(1) 将图像的行首尾倒置。(2) 以写方式来打开一个bmp文件。
9、(3) 依次将文件头、信息头、调色板、图像数据写入该文件中。(4) 用图像浏览器验证结果。【实验报告】1. 实验目的、实验内容、实验原理、实验内容。2. 实验源代码。3. 实验结果(在屏幕上显示的图像和行颠倒后的图像)。【实验思考】256色彩色图像和256灰度图像的有哪些区别?二、数字图像的几何变换【实验目的】1. 了解图像几何变换的类型和相应方法。2. 掌握图像比例缩放的原理和方法。3. 掌握图像旋转变换的原理和方法。4. 熟悉最近邻域插值、双线性插值的特点和方法。【实验内容】1. 使用Visual C+编写程序,读取标准图像lena.bmp,采用双线性插值算法将其放大2.5倍,并在屏幕上显
10、示。2. 对读出的lena图像进行任意角度的旋转,并将结果在屏幕上显示。【实验原理】1. 图像的比例缩放数字图像的比例缩放是指将给定的图像在x方向和y方向按相同的比例缩放a倍,从而获得一幅新的图像。比例缩放的实质是为新图像中的每个像素分配合适的灰度值,其过程是将新图像看作是一个能够伸缩的橡皮网格,将其缩放a倍后,求其每个坐标点在原始图像中的位置。设(x0, y0)是新图像中的一点,缩放后其在原图像中的位置为(x, y),则通过上述坐标变换获得x和y很有可能都是非整数值,也就是点(x, y)在原图像中没有对应的像素点,因此需要通过灰度级插值的方法获取改点的灰度值。2. 图像的旋转图像的旋转变换是
11、几何学中研究的重要内容之一。旋转是需要围绕一个中心点来进行的,若没有指定旋转变换的中心,一般来说,可以围绕图像的左上角或者图像的中心来进行。数字图像中的二维矩阵是以第一个像素为原点,图像的旋转变换是将图像上的所有像素都旋转同一个角度的变换。本实验是围绕图像左上角进行旋转的操作。经过旋转变换后,图像中每个像素的坐标位置都会发生变化,同时图像的尺寸也会改变。因此,对图像的旋转操作也可以分为两个步骤,即坐标的变换以及灰度级插值。设原始图像的任意点(x0, y0)经旋转角后新坐标为(x, y),则最后,x和y很有可能都是非整数值,因此也需要通过灰度级插值的方法获取改点的灰度值。 若实现围绕图像中心或者
12、任意点的旋转变换,首先要将进行平移操作,将原点位置由原来的首个像素平移到中心点位置,在按照上述的旋转公式进行坐标变换,灰度级差值,最后将旋转后图像的中心再平移回到首个像素的位置,以实现图像的正常显示与存储。由于时间关系,绕任意点的旋转变换由学生自行完成。3. 灰度级插值在对图像进行几何变换时,原始图像的像素坐标(x, y)为整数,而坐标变换后目标图像的位置坐标并非整数,因此该点的灰度值应由其附近的整数坐标点的灰度值来决定,这个操作称为灰度级插值处理。常用的方法有最近邻法和双线性插值法。(1) 最近邻法。设(x, y)为通过坐标变换得到的新坐标位置,在原图中寻找与(x, y)临近的四个整数坐标点
13、,并将与其距离最近的整数坐标点的灰度值作为点(x,y)近似灰度值。(2) 双线性插值法。用线性内插的方法,根据点(x, y)临近的四个整数坐标点的灰度值,通过两次插值计算出(x, y)的灰度值。如图6-1所示。图6-1 双线性差值法 设A、B、C、D分别为与(x, y)临近的四个整数坐标点,其坐标为别为(x, y)、(x+1, y)、(x+1, y+1)、(x, y+1),灰度值分别为fA、fB、fC、fD。首先根据A点和D点的灰度值求出E点灰度值fE,即同理,F点的灰度值fF为那么,根据E和F两点的灰度值便可求出点(x, y)的灰度值f,即【实验内容】1. 图像的比例缩放(1) 读取尺寸为m
14、n位图文件lena.bmp;(2) 计算放大后图像的尺寸,M=2.5m,N=2.5n(3) 为放大后的图像分配内存空间,即g=(unsigned char *) malloc(sizeof(unsigned char)*M*N);(4) 对放大后图像的每一个点(i, j) ()进行坐标变换,变换后的坐标为别为;(5) 利用双线性插值法计算点的灰度值,即放大后图像(i, j)处的灰度值。(6) 在屏幕上显示放大后的图像2. 图像旋转(1) 读取尺寸为mn位图文件lena.bmp;(2) 计算放大后图像的尺寸(3) 为放大后的图像分配内存空间,即g=(unsigned char *) malloc
15、(sizeof(unsigned char)*M*N);(4) 对旋转后图像中的每一个像素点(i, j) ()进行坐标变换,变换后的坐标为别为;(5) 利用最近邻法或双线性差值法计算点的灰度值,即放大后图像(i, j)处的灰度值。(6) 在屏幕上显示放大后的图像。【实验报告】1. 实验目的、实验内容、实验原理、实验内容。2. 程序源代码。要求程序可读性好,重要的程序段或变量须加注释。3. 实验结果(缩放后的图像和旋转后的图像)。【实验思考】比较两种插值方法对实验结果的影响?三、 直方图均衡【实验目的】1. 了解图像直方图的概念。2. 了解直方图均衡的目的和用途。3. 掌握直方图均衡的原理和方法
16、。【实验内容】1. 使用Visual C+编写程序,读取图像,并将数据存入到一个二维数组中。2. 对图像进行直方图均衡,并将处理后的图像显示在用户视图区。【实验原理】图像的灰度直方图是一种表示数字图像中各级灰度值及其出现频率关系的函数,通常用二维坐标来描述直方图,其横坐标表示像素的灰度级别,纵坐标表示该灰度出现的频数或概率。灰度直方图从整体上描述了一幅图像的概貌特征,如果一幅图像的直方图覆盖了灰度级很宽的范围,而且灰度级的分布很均匀,那么这幅图像就会具有高的对比度和多变的灰度色调,因此我们可以通过修改直方图的方法来调整图像的灰度分布。直方图均衡主要是用来增强动态范围偏小的图像的反差,从而提高图
17、像的灰度对比度。其主要思想是把一已知灰度概率分布的图像,经过某种变换,变成一幅具有均匀灰度概率分布的图像。由此可以看出,直方图均衡的关键就是寻求一个灰度变换函数,使得变换后的图像具有均匀的灰度概率分布。若用和分别表示原图像和变换后图像的灰度概率密度函数,根据概率论的知识,其中,为单调递增函数如果我们将原图像的灰度概率分布函数作为变换函数,即那么,因此 。 可见,当取变换函数为原图像的灰度概率分布函数作为变换函数时,变换后图像的灰度概率密度是均匀的。【实验内容】1. 利用实验一的程序代码读出待增强的原图像。2. 定义大小为256的一维数组p,用来保存每个灰度级出现的概率密度。3. 统计原图像中每
18、个灰度级的像素数目,并保存在数组p中。4. 计算每个灰度级出现的概率密度,即用数组p中的每个元素除以图像总的像素数目。5. 计算图象各个灰度级的累计分布概率,记为,即6. 计算变换前后灰度级的对应关系,即7. 灰度级变换,对原图像中每一个像素的灰度级用来代替。【实验报告】1. 实验目的、实验内容、实验原理、实验内容。2. 实验源代码。3. 实验结果(在屏幕上显示直方图均衡后的图像)。【实验思考】1. 为什么一般情况下对离散图像进行均衡化并不能产生完全平坦的直方图?2. 直方图均衡适用于对什么样的图像进行增强?实验四 空间域平滑和锐化【实验目的】1. 学会模板操作方法;2. 了解平滑和锐化的意义
19、和用途;3. 熟练掌握均值滤波和中值滤波方法;4. 熟练掌握梯度算子和拉普拉斯算子。【实验内容】1. 使用Visual C+编写程序,读取图像,并将数据存入到一个二维数组中。2. 使用不同尺寸的模板对图像进行均值滤波,并将处理后的图像显示在用户视图区。3. 对图像进行中值滤波,并将处理后的图像显示在用户视图区。4. 使用拉普拉斯算子对图像进行锐化;5. 使用sobel算子对图像进行锐化。【实验原理】平滑滤波一般用于消除图像中的随机噪声,从而起到图像平滑的作用。图像噪声在视觉上通常与它们相邻的像素明显不同,通常为孤立点,表现形式为黑区域上的白点或白区域上的黑点。根据随机噪声的特点,在进行平滑滤波
20、时,通常用噪声点周围临近像素点的灰度值来作为其新的灰度值。均值滤波和中值滤波是最常用的平滑滤波方法,其中均值滤波是线性运算,而中值滤波是非线性运算。均值滤波法是将一个像素点及其邻域中的所有像素点的平均值赋值给输出图像中相应的像素点,从而达到平滑的目的。最简单的均值滤波法采用系数取值都为1的模板,如33、55,以及更大尺度的模板。采用邻域平均法进行平滑滤波能够有效去除噪声,但同时也会使图像中的细节及目标边缘变模糊,而且模板尺寸越大,模糊现象越严重。中值滤波法则在消除噪声的同时还能保持图像中的细节部分。中值滤波是一种非线性滤波,它将邻域内(或模板覆盖下)所有像素点的灰度值从小到大排序,去中间值作为
21、中心像素点的输出值。图像锐化主要用于加强图像中景物的边缘和轮廓,突出图像中的细节部分。由于边缘和轮廓处于灰度突变的地方,因此可以通过微分算子来突出或强调这些突然的变化。图像锐化最常用的是基于仪阶微分的“梯度法”和基于二阶微分的“拉普拉斯算子“。对于一幅图像,它的梯度是一个向量,可以表示为:梯度向量的模值因具有各向同性,因此可以作为锐化滤波器。由于数字图像是离散量,无法采用微分运算,因此用差分运算来代替。同时,由于在求取梯度模值时,需要进行平方和开放运算,运算量大,因此用绝对值来代替。这样,梯度算子可以表示为:除梯度算子外,还可以采用Prewitt算子和Sobel算子,其对应模板如图6-2所示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医学图像处理实验指南 精品资料 医学 图像 处理 实验 指南 精品 资料

限制150内