第1章 绪言
1.1 课题背景
图像处理技术起源于20世纪20年代,至今已有90多年的历史,从最初的简单处理到现在在医学、工程学、计算机科学、信息科学、统计学、生物学、等各领域的应用,给人类带来了巨大的经济和社会效益,不久的将来会有更深入的发展及应用,成为科学研究、社会生产及人类生活不可缺少的强有力工具。
早期的图像处理主要是为了改善图像的质量。它以人为对象,来改善人的视觉效果。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门科学的诞生。数字图像处理技术取得的另一个巨大成就就是在医学上获得的成果。1972年英国EMI公司工程师发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(Computer Tomograph)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。
医学图像处理从根本上改变了医务人员进行诊断的传统方式。医学上的诊断很多时候需要借助对于医疗图像的判断来作为依据,比如CT、X光、B超等医学图像,但有的拍片没有达到标准要求的清晰度,往往造成重拍或诊断结果的不准确。实践证明,充分地利用这些技术可以提高诊断的正确性和准确性,提高诊断效率,降低医疗成本,可以更加充分地发挥各种医疗设备的功能。而且,随着数字化、智能化进程的深入,医学图像处理技术在医疗卫生领域将会有更加广阔的应用前景。
1.2 本文研究目的和意义
医学图像处理技术由于与具体的应用密切相关,因此每个研究人员介入的
角度及采用的研究方法和设计策略也各不相同,但都是围绕着实现图像处理的各种基本特征进行设计,这也决定了医学图像处理技术研究成果的多样性及不完善性,仍有许多技术问题需要解决。同时,医学图像处理发展到今天,还是没有形成完整的理论体系,因而对研究人员来说这是一个挑战性的课题。由于目前国际上的医学图像处理尚未形成一个统一的标准,许多技术难题需要研究医学图像处理者的突破,该技术必须有其优越性、通用性和有效性并得到大家的一至认同也是一项艰巨的任务。本论文研究基于MATLAB医学图像处理的目的是通过用MATLAB对医学界的图像处理使这些图像变得更清晰,使医生更容易诊断和治疗病情。数字图像处理在医学界领域的应用是目前的热点,所以本论文研究基于MATLAB的医学图像处理具有重要意义。
1.3本文主要研究工作
MATLAB是集数值分析、矩阵运算、信号处理和图形显示于一体的高性能数学软件,将其强大的计算功能实现应用系统的无缝集成,对于有效缩短开发周期、优化系统性能是十分有意义的,那将大大地提高编程者的工作效率。本文介绍操作MATLAB的方法。MATLAB作为自动化服务器,在进行Windows编程中,充分发挥MATLAB在图形图像处理等方面的优势,论文的具体结够如下:
第一章 主要介绍本文的研究背景及意义目的。
第二章 具体介绍几种实现MATLAB调用设计原理及编程方法。 第三章 详细介绍本文中要实现的几种图像处理功能以及实现原理。 第四章 总结。
第2章 MATLAB技术
2.1 调用程序设计原理
在控制器中创建和获取自动化对象的一般过程
一、初始化并创建一个自动化对象,创建后,可以在代码中使用对象变量引用的对象。
二、操作方法和属性;获取对象方法和信息,激活属性和方法。 三、完成代码编写后释放对象。
四、BSTR Execute([in]BSTR Command)
此函数以命令字符串为MATLAB参数,将其运行结果以字符串返回。所有
在MATLAB命令窗口键 入的可执行的命令行都可在此使用,这样,我们就能在代码中使用命令行,象在MATLAB窗口 中一样自如。
五、VOID GetFullMatix([in]BSTR Name,[in]BSTR Workspace, [in out]SAFEARRAY(double)*Pr, [in out]SAFEARRAY(double)*pi)
该函数从指定的MATLAB工作空间中获取一维或二维数组。其中,Name是提取数组的名称,Workspace表示包含数组的工作空间,一般指定为“base”,即MATLAB默认工作空间。Pr和Pi分 别是包含所提取数组的实部和虚部。
六、VOID GetFullMatrix([in]BSTR Name,[in]BSTR Workspace, [in out]SAFEARRAY(double)*pr [in out]SAFEAPRAY(double).pi)
该函数向指定的MATLAB工作空间中设置一维或二维数组。其中,Name是设置输入数组的名称,其它同前。
七、VOID MinimizeConnandWindow() 该函数将未最小化的MATLAB窗口最小化。 八、VOID MaximizeConnandWindow() 该函数将未最大化的MATLAB窗口最大化。 九、VOID Quit()
该函数关闭并退出MATLAB。
2.2 调用MATLAB程序的实现
2.2.1 图片的缩放处理
图像缩放(image scaling)是指对数字图像的大小进行调整的过程。对图像的缩放可以直接调用MATLAB工具箱函数imresize【1】来进行图像的缩放处理。常用调用格式为:
B = imresize(A,m,method)
其中A表示要进行缩放处理的图像;m表示放大倍数,m必须大于0,如果m>1则表示对图像进行放大处理,如果m<1则表示对图像进行缩小处理;method表示对图像处理的插值算法,有三个可选值:‘nearest’、‘ bilinear’和‘bicubic’分别表示最近邻插值,双线性插值,双三次卷积法,默认值为‘nearest’。 [2]
此函数采用bicubic方法对图像I进行2倍的放大。
2.2.2 图片的旋转处理
图像的旋转处理是指对图像的水平垂直方向进行调整的过程。对图像的旋转处理可以调用MATLAB的图像工具箱函数imrotate来进行旋转处理,此函数采用bicubic方法对图像I进行逆时针180度方向的旋转。转处理可以调用MATLAB的图像工具箱函数imrotate来进行旋转处理。常用调用格式为:
B = imrotate(A,angle,method)
其中A表示要进行旋转处理的图像;“angle”表示为要旋转的角度数,如果angle大于0,表示对图像进行逆时针旋转,若angle小于0则表示对图像进行顺时针旋转, “method”表示对图像处理的插值算法,同上。默认值为‘nearest’。 2.2.3 图像的负片效果
在医学图像中,为了较好显示病变区域的边缘脉络或者病变区域大小,常常对图像进行负片显示,从而达到更好的观测效果。 2.2.4 图像的剪切处理
在进行图像处理时,有时只要对图像中某个特定区域或感兴趣的区域进行处理,并不需要对整个图像进行处理。为此我们可以将我们感兴趣的图像区域先剪切出来,再对图像进行处理,不仅可以收到良好的效果而且可以节约图像存储空间大小。
2.2.5 图像的灰度变换
灰度变换是图像增强的另一种重要手段,它可使用权图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。 2.2.6 图像的对比度增强
在图像处理中,我们可以将一幅低灰度值图像的灰度值调整到一个指定的范围。在MATLAB图像处理函数中对数变换常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清。MATLAB中对数变换的表达式【3】为:
f=im2double(I); g=log(1+double(f)); imshow(g)
在对图像进行对数变换时,首先要将图像转换为双精度图像,这样在对数变换超过整型范围的元素不会被截断,且小数部分不会四舍五入,则输出图像具有更高的精度。
2.2.7 图像显示直方图
图像直方图是一种显示索引图像或灰度图像亮度分布图形。用imhist函数创建图像直方图。该图首先将数据分成N个等间距的条形,每个条形表示一个数据范围,然后计算落在这个范围内像素的个数。
例如下面的命令显示一个心脏图像和一个直方图。 x=-5:0.1:5; y=randn(1000,1); Hist(y,x) 如图所示: