首页 基于MATLAB的医学图像处理

基于MATLAB的医学图像处理

举报
开通vip

基于MATLAB的医学图像处理 届 别 2012届 学 号 200814350135 毕业设计(论文) 基于MATLAB的医学图像处理 姓   名 唐涛 系 别、 专 业 计算机科学系、通信工程专业 导 师 姓 名、职 称 ...

基于MATLAB的医学图像处理
届 别 2012届 学 号 200814350135 毕业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 (论文) 基于MATLAB的医学图像处理 姓   名 唐涛 系 别、 专 业 计算机科学系、通信 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 专业 导 师 姓 名、职 称 朱卫平、副教授 完 成 时 间 2012年5月1日 目 录 I摘 要 IIABSTRACT 11 绪论 11.1 课题背景 11.2 本文研究目的和意义 21.3本文主要研究工作 32 MATLAB技术 32.1 调用程序设计原理 42.2 调用MATLAB程序的实现 93 医学图像处理的具体过程 93.1 图像旋转的MATLAB实现 103.2 图像剪切的MATLAB实现 113.3 图像负片效果的MATLAB实现 123.4 灰度变换的MATLAB实现 143.5 直方图均衡化的MATLAB实现 173.6 锐化效果的MATLAB实现 193.7 边缘检测效果的MATLAB的实现 234 总结 24参考文献 25致 谢 26附 录 摘 要 随着人民的生活水平不断提高,人们越来越关注自身健康,提早、准确地发现疾病并予以及时地治疗,不但可以挽回病人的生命、减轻病人痛苦,还可以减轻病人的经济负担。医学影像技术以高效、经济、无创等优点在医疗活动中得到广泛应用。医学图像已经成为现代医学不可或缺的一部分,它的质量直接关系到医生诊断和治疗的准确性。然而,有时获得的医学图像并不是很理想,不能很好地突出病灶部位的信息,这就容易造成医生的误诊或漏诊。因此,对医学图像进行适当的增强处理,使其更能清晰、准确地反映出病灶是非常必要的。本文首先详细描述了MATLAB对医学图像处理的工作原理,指出了各种图像处理的特点和适用范围,并对图像锐化处理进行了改进,使图像增强的效果更好。然后,用MATLAB对医学图像处理进行了调试运行。最后,对本课题的研究进行了总结和展望,指出了本课题的成果和不足,指明了改进的方向。医学图像经过图像处理以后,图像质量得到了改善,图像细节更加突出,减少了误诊和漏诊的概率。 关键词:MATLAB;医学图像处理;图像处理;图像增强 ABSTRACT With the continuous improvement of people's living standards, people are increasingly concerned about their health, early and accurate detection of diseases and be timely treatment, can not only restore the patient's life, reduce patient pain, can also reduce the economic burden on the patient. Medical imaging technology has been widely used in medical activities to the advantages of efficient, economical, non-invasive. Medical images has become an indispensable part of modern medicine, its quality is directly related to the accuracy of the doctor's diagnosis and treatment. However, sometimes the medical image is not ideal, can highlight the information of the lesion site, which is likely to cause the doctor misdiagnosed. Therefore, the appropriate enhancement of medical images, to make it more clear and accurately reflect the lesion is very necessary.This article first detailed study of the medical image processing works, pointed out the characteristics and scope of the various image processing and image sharpening to improve, better image enhancement. Then, the medical image processing using MATLAB debugging run. Finally, research on this topic summary and outlook, and pointed out the achievements and shortcomings of this subject, and pointed out the direction of improvement. After the medical image after image processing, image quality has been improved, more image detail, reducing the probability of misdiagnosis and missed diagnosis KEYWORDS:MATLAB;medical image processing;image processing;image enhancement 第1章 绪言 1.1 课题背景 图像处理技术起源于20世纪20年代,至今已有90多年的历史,从最初的简单处理到现在在医学、工程学、计算机科学、信息科学、统计学、生物学、等各领域的应用,给人类带来了巨大的经济和社会效益,不久的将来会有更深入的发展及应用,成为科学研究、社会生产及人类生活不可缺少的强有力工具。 早期的图像处理主要是为了改善图像的质量。它以人为对象,来改善人的视觉效果。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门科学的诞生。数字图像处理技术取得的另一个巨大成就就是在医学上获得的成果。1972年英国EMI公司工程师发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(Computer Tomograph)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。 医学图像处理从根本上改变了医务人员进行诊断的传统方式。医学上的诊断很多时候需要借助对于医疗图像的判断来作为依据,比如CT、X光、B超等医学图像,但有的拍片没有达到 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 要求的清晰度,往往造成重拍或诊断结果的不准确。实践证明,充分地利用这些技术可以提高诊断的正确性和准确性,提高诊断效率,降低医疗成本,可以更加充分地发挥各种医疗设备的功能。而且,随着数字化、智能化进程的深入,医学图像处理技术在医疗卫生领域将会有更加广阔的应用前景。 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) 如图所示: 图2-1 灰度图像及其直方图 2.2.8 图像直方图均衡化 直方图均衡化是一种常用的灰度增强算法,是将原图像的直方图经过变换函数修整为均匀直方图,然后按均衡后的直方图修整原图像。 2.2.9 图像消噪 数字图像中往往存在各种类型的噪声。产生噪声的途径可以有几各种,与生成图像的方法有关。如: 一、如果图像是用照片扫描得到的,则胶卷上的灰尘是噪声源。胶卷损坏、扫描操作中都可以引起噪声。 二、如果图像直接来源于数字设备,则获取数据的设备可以引起噪声。 三、图像数据的电子传输可以引起噪声。 工具箱中提供了多个不同的方法来删除和减少图像中的噪声。不同方法对于不同类型的噪声具有更好的效果。可用的方法包括: (1)线性滤波 (2)中值滤波 (3)自适应滤波 常用的滤波器为中值滤波器。中值滤波器对异常值的敏感性比均值的小,所以,中值滤波器可以在不减小图像对比度的情况下剔除这些异常值。在MATLAB工具箱中medfilt2函数实现了中值滤波。 2.2.10 图像边缘检测 图像边缘对图像识别和计算机分析十分有用,边缘能勾画出目标物体,使观察者一目了然;边缘蕴含了丰富的内在信息(如方向、阶跃性质、形状等),是图像识别中重要的图像特征之一。 2.2.11 图像平滑处理 图像平滑主要目的是减少图像噪声。图像噪声来自于多方面,有来自于系统外部的干扰,也有来自于系统内部的干扰。实际获得的图像都因受到干扰而含有噪声,噪声产生的原因决定了噪声分布的特性及与图像信号的关系。减少噪声的方法可以在空间域或在频率域处理,基本方法就是求像素的平均值吉中值;在频域中则运用低通滤波技术【4】。 图像经过傅立叶变换以后,噪声频谱一般位于空间频率较高的区域,而图像本身的频率分量则处于空间频率较低的区域内,因此可以通过低通滤波的方法,使高频万分受到掏,而使低频成分顺利通过,从而实现图像的平滑。低通滤波可以在空间域和频域中进行。在此主要介绍巴特沃斯低通滤波器。 巴特沃斯低通滤波器又称为最大平坦滤波器。它的通带与阻带之间没有明显的不连续性,因此它的空域响应没有“振铃”现象发生,模糊程度减少。 D0是截止频率;n为阶数,取正整数,控制曲线的形状。由于巴特沃斯滤波器转移曲线较平滑,没有振铃效应,故图像的模糊将减少。一般说,常采用下降到H(u,v)最大值的 那一点为低通滤波器的截止频率点。 MATLAB提供的图像平滑函数conv2(二维卷积算法)。具体调用格式为: I=imread(‘xzt.png’); I1=imnoise(I,’salt&pepper’,0.05); I2=double(I1)/255; H1=[1/9 1/9 1/9; 1/9 1/9 1/9; 1/9 1/9 1/9]; J1=conv2(I2,h1,’same’);imshow(J1) 2.12 图像锐化处理 图像在传输和变换过程中会受到各种干扰而退化,比较典型的就是图像模糊,图像锐化的目的就是使边缘和轮廓线模糊的图像变得清晰,并使其细节清晰。 第3章 医学图像处理的具体过程 3.1 图像旋转的MATLAB实现 在图像处理中,有时需要将图像旋转以获得更好的观测角度,所以我们有必要在系统中添加图像旋转功能。 程序代码【5】如下: a=imread('C:\Users\zouyifeng\Desktop\论文图片\xzt.jpg'); imshow(a); b=a(:,:,1); imshow(flipud(b)); 测试结果如下: 图3-1 图3-2 图像旋转180度前后对比 3.2 图像剪切的MATLAB实现 对图像的剪切处理可以调用MATLAB的图像工具箱函数”imcrop”来进行旋转处理。调用格式如下: I2 = imcrop(I,rect) 其中I为进行剪切处理的图像,rect表示两个顶点坐标[(Xmin,Ymin),(Xmax,Ymax)],剪切后的图像大小为两顶点之间的矩形面积。 程序代码如下: I=imread('C:\Users\zouyifeng\Desktop\论文图片\xzt.jpg'); imshow(I); J=imcrop; figure,imshow(J) 测试结果如下: 图3-3 图像剪切前后对比 3.3 图像负片效果的MATLAB实现 在MATLAB的图像工具箱中有imcomplement函数可以对图像直接进行负片效果处理[9]。调用格式如下: IM2 = imcomplement(IM) 其中IM表示要进行负片处理的图像,IM2表示处理后的图像。 图像负片效果可以帮助我们在大片黑色区域中容易观察白色或灰色细节。 程序代码如下: I = imread('C:\Users\zouyifeng\Desktop\论文图片\shou.jpg'); switch class(I) case 'uint8' m = 2^8-1; I1 = m - I; case 'uint16' m = 2^16-1; I1 = m - I; case 'double' m = max(I(:)); I1 = m - I; end figure; subplot(1, 2, 1); imshow(I); title('Origin Image'); subplot(1, 2, 2); imshow(I1); title('Transfer Image'); 测试结果如下: 图3-4 图像负片效果对比 3.4 灰度变换的MATLAB实现 一般成像系统只具有一定的亮度响应范围,常出现对比度不足的弊病,使用权人眼观看图像时视觉效果很差;另外,在某些情况下,需要将图像的灰度级整个范围或者其中的某一段扩展或压缩到记录器件输入灰度动态范围之内。MATLAB图像处理工具箱中提供的imadjust函数,可以实现图像的灰度变换,使对比度增强[6]。其语法格式为: J=imadjust(I,[low,high],[bottom,top],gamma) 其功能是:返回图像I经过直方图调整后的图像J。[low,high]为原图像中要变换的灰度范围,[bottom,top]指定变换后的灰度范围,两者的默认值均为[0,1]。Gamma为矫正值,其取值决定了输入图像到输出图像的灰度映射方式,即决定了增强灰度还是增强高灰度。如果gamma等于1时,为线性变换;如果gamma小于1时,那么映射将会对图像的像素值加权,使输出像素灰度值比原来大;如果gamma大于1时,那么映射加权后的灰度值比原来小。 MATLAB图像处理工具箱中提供的imadjust函数,可以实现图像的灰度变换,使对比度增强。其语法格式为: J=imadjust(I,[0,0.2],[0.5,1]) 其功能是:返回图像I经过直方图调整后的图像J。将图像的低灰度级范围映射到高灰度级去,从而可以更清晰观察低灰度区域细节。 程序代码如下: x=imread('C:\Users\hujun\Desktop\论文图片\shou.jpg'); %读入一幅图片 y=255-x; %转化为反色图像 imshow(y) %显示反色图像 图3-5 图3-6 图像灰度变换前后对比 3.5 直方图均衡化的MATLAB实现 研究直方图均衡化,为了研究方便,首先将直方图归一化,即让原图像灰度范围[Z1,Zk]归一化为[0 1]。设其中任一灰度级Z归一化为r,变换后图像的任一灰度级Z‘归一化为s ,显然r、s应当满足: 因此直方图修正就是对下列公式的计算过程: 式中T(r)为变换函数,它必须满足下列条件[7]: 1.T(r)在0≤r≤1区间内是单值函数,且单调增加; 2.T(r)在0≤r≤1内满足0≤T(r)≤1。 在直方图均衡化时,有 ,这里L为均衡化后灰度变化范围,归一化表示时L=1,则 ,有 ,即: 两边取积分得: 这就是所求的变换函数,表明变换函数T(r)是原图像的累计分布函数,因此只要知道原图像的概率密度就能很容易地确定变换函数。 将上述结论推广到离散的情况。设一幅图像总像素为n,共分L个灰度级,nk代表第k个灰度级rk出现的频数(像素数),则第k灰度级出现的概率为: 此时变换函数可以表示为 其反变换函数为 因此,根据原图像的直方图统计值就可算出均衡后各像素的灰度值。 MATLAB图像处理工具箱提供了用于直方图均衡化的函数Histeq。Histeq语法格式为: J=histeq(I,n) 其功能是:指定直方图均衡化后的灰度级数n,默认值为64。 代码如下: I = imread('C:\Users\zouyifeng\Desktop\论文图片\shou.jpg'); I=rgb2gray(I); J = histeq(I); subplot(221);imshow(I); subplot(222); imshow(J); imwrite(I,'C:\Users\zouyifeng\Desktop\论文图片\shou.tif') imwrite(J,'C:\Users\zouyifeng\Desktop\论文图片\shou.tif') subplot(223); imhist(I,64) subplot(224); imhist(J,64) 效果图如下: 图3-7 图像直方图均衡化前后对比 3.6 锐化效果的MATLAB实现 锐化技术可以在空间域是进行,常用的方法是对图像进行微分处理,也可以在频域中运用高通滤波技术处理。但要注意的是,能够进行锐化处理的图像必须要求有较高的信噪比,否则,图像锐化后,信噪比更低。因为锐化将使噪声受到比信号还强的增强,故必须小心处理。一般是先去除或减轻干扰噪声后,才能进行锐化处理。梯度算子和拉普拉斯算子就是满足要求的线性微分算子,它们是常用和图像锐化运算方法。这里主要介绍梯度算子[8] 设图像为f(x,y),它在点(x,y)处的梯度是一个矢量G[f(x,y)],定义为 当梯度计算完之后,可以根据需要生成不同的梯度增强图像。 第一种是使各点的灰度g(x,y)等于该点的梯度幅度,即:g(x,y)= Gm[f(x,y)];此方法的缺点是增强的图像公显示灰度变化比较陡的边缘轮廓,而灰度变化平缓的区域则呈黑色。 MATLAB关键程序如下[11]: I=double(I); [IX,IY]=gradient(I); GM=sqrt(IX.*IX+IY.*IY); OUT=I; J=find(GM>=10); OUT(J)=GM(J); 程序如下: J=imread('C:\Users\zouyifeng\Desktop\论文图片\xzt.jpg') figure,imshow(J);title('原图像'); J=double(J); lapMatrix=[1 1 1;1 -8 1;1 1 1]; %拉普拉斯模板 J_tmp=imfilter(J,lapMatrix,'replicate');%滤波 I=imsubtract(J,J_tmp); %图像相减 figure,imshow(I),title('锐化图像'); 测试结果如下: 图3-8 图3-9 图像锐化前后对比 3.7 边缘检测效果的MATLAB的实现 从本质上说,图像边缘是图像局部特性不边连续性(灰度突变、颜色突变、纹理结构突变等)的反映,它标志着一个区域的终结和另一个区域的开始。为了计算方便起见,通常选择一阶和二阶导数来检测边界,利用求导方法可以很方便地检测到灰度值的不连续效果。边缘的检测可以借助空域微分算子利用总卷积来实现。常用的微分算子有梯度算子和拉普拉斯算子等,这些算子不但可以检测图像的二维边缘,还可检测图像序列的三维边缘。 一、MATLAB提供的用于灰度图像边缘的函数 在MATLAB中函数edge用来进行边缘检测。该函数的基本语法为: [g,t]=edge(f,’method’, parameters) 其中,f是输入图像,method是进行边缘检测的方法。g是一个逻辑数组,其值如下决定:在f 中检测到边缘的位置为1,在其他位置为0。参数t是可选的;它给出edge使用的阈值,以确定哪个梯度值足够大到可以称为边缘点。 在函数edge中可用的边缘检测器[12]: “sobel”边缘检测器对噪声具有一定的抑制能力、边缘定位效果好但是容易出现多像素边缘;“roberts”边缘检测器特点是边缘定位精度高、但不具备抑制噪声能力,只对具有陡峭边缘噪声少的图像效果好;“canny”边缘检测器通过寻找f(x,y)的梯度的最大值来查找边缘。梯度由高斯滤波器的导数来计算。该方法使用两个阈值检测强边缘和弱边缘,若它们连结到了强边缘,则输出中只包含弱边缘。因此这种方法更适合用于检测真正的弱边缘。它本身使用带有标准偏差 的高斯滤波器来平滑,从而可以减少噪声。 综上所述,我们采用sobel,roberts,prewitt,log,canny算子边缘检测器来对图像进行边缘检测。具体代码如下: M=imread('shou.jpg');% 提取图像 I=rgb2gray(M);    %转化成灰度图,必须先转化成灰度图,很多地方都没有这一步,其实是不对的 BW1=edge(I,'sobel'); %用SOBEL算子进行边缘检测 BW2=edge(I,'roberts');%用Roberts算子进行边缘检测 BW3=edge(I,'prewitt'); %用prewitt算子进行边缘检测 BW4=edge(I,'log'); %用log算子进行边缘检测 BW5=edge(I,'canny'); %用canny算子进行边缘检测 h=fspecial('gaussian',5);%高斯低通滤波器  BW6=edge(I,'canny'); %滤波之后的canny检测 subplot(2,3,1), imshow(BW1); title('sobel edge check'); subplot(2,3,2), imshow(BW2); title('sobel edge check'); subplot(2,3,3), imshow(BW3); title('prewitt edge check'); subplot(2,3,4), imshow(BW4); title('log edge check'); subplot(2,3,5), imshow(BW5); title('canny edge check'); subplot(2,3,6), imshow(BW6); title('gasussian&canny edge check');%此为用高斯滤波后Canny算子边缘检测结果;检测结果如下图 图3-10 图3-11 图像边缘检测前后对比 第4章 总结 本文主要内容是介绍了MATLAB在医学图像处理领域内的编程,由于时间仓促,笔者水平有限,导致本文还只是对图像进行简单的处理,并且只能进行一次简单的处理。编写更加复杂的算法、实现对图像多次连续处理是本次论文的一个发展方向;本文还不能脱离MATLAB环境运行,由于MATLAB程序功能复杂,占用系统空间资源较大,影响系统处理速度,所以可以添加插件,将本文脱离MATLAB环境运行将对本文运行速度有更大的提高;另外代码的编写风格虽然尽量依照软件工程的要求,但是仍然有不 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 、不严谨的情况存在。虽然在医学图像处理设计之初,就将面向实际应用作为预期目标,但是到目前为止其实际应用仍然十分有限,这也是本图像处理的一个进一步研究的方向。 参考文献 [1] 徐明远,刘增力. MATLAB仿真在信号处理中的应用[M].西安:电子科技大学出版社,2007. [2] 何锦平.图像增强及其应用研究[D].西北工业大学硕士学位论文.2003. [3] 章晋.图像处理与分析[M].北京:北京大学出版社,2004. [4] 张志涌.精通MATLAB6.5[M].北京:北航电子版,2002. [5] 张家广,杨长贵.计算机图像学[M].北京:清华大学出版社,1995. [6] 陈杨,陈荣娟.MATLAB60X图像编程与图像处理[M].西安:电子科技大学出版社,2002. [7] 闫敬文.数字图像处理MATLAB版[M].北京:国防工业出版社,2007. [8] 周新伦,柳建.数字图像处理[M].北京:国防工业出版社,1986. [9] 李信真,车明刚.计算方法[M].西安:西北工业大学出版社,2000. [10] 陈桂明,张明照.应用MATLAB语言处理信号与数字图像[M].北京:科学出版社,2000. [11] 高诸明.数字图像处理[J].计算机学报,1998,(3):256-278. [12] 于万波. 基于MATLAB的图像处理[M].北京:清华大学出版社,2008. 致 谢 为期十多周的毕业设计结束了,我的毕业设计能顺利完成多亏各位老师指导和周围同学的帮助,在此依依表示感谢。 首先,要感谢我的指导老师,朱卫平老师。朱老师在我的这次毕业设计中对我的指导和帮助至关重要。正是在朱老师的指导下,我逐步理清了设计思路,明白了设计目的。在毕业设计的完成过程中,朱老师给予了很多指点,帮助解决了很多难题,再此对朱老师表示深深的感谢! 此外,感谢在毕业设计中给予我帮助的老师、同学。在此,也向他们表示感谢! 附 录 本系统中所用到的相关代码: Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any) Public sfile As Variant Dim MATLAB As Object Public Path As Variant Public i As Variant Private Sub Form_Load() Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000) Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000) Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500) Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500) Picture1.Top = 900 Picture1.Left = 150 'picture1.Height = frmMain.Height - 1500 ' picture1.Width = frmMain.Width - 300 hsl.Visible = False vsl.Visible = False End Sub Private Sub Form_Unload(Cancel As Integer) Dim i As Integer 'close all sub forms For i = Forms.Count - 1 To 1 Step -1 Unload Forms(i) Next If Me.WindowState <> vbMinimized Then SaveSetting App.Title, "Settings", "MainLeft", Me.Left SaveSetting App.Title, "Settings", "MainTop", Me.Top SaveSetting App.Title, "Settings", "MainWidth", Me.Width SaveSetting App.Title, "Settings", "MainHeight", Me.Height End If End Sub Private Sub hsl_Change() Picture2.Left = -hsl.Value End Sub Private Sub light_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX自动化服务器 Result = MATLAB.execute("clear") Result = MATLAB.execute("STR=clipboard('paste');") Result = MATLAB.execute("I=imread(STR);") Result = MATLAB.execute("g=imadjust(I,[0.2 0.8],[0 1]);imshow(g),") Clipboard.Clear Result = MATLAB.execute("print -dbitmap -f1") Picture2.Picture = LoadPicture Picture2.Picture = Clipboard.GetData() MATLAB.execute ("close(gcf)") '功能是缩小图像 的动态范围 End Sub Private Sub mnutoolsadj_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX自动化服务器 Result = MATLAB.execute("clear") Result = MATLAB.execute("STR=clipboard('paste');") Result = MATLAB.execute("I=imread(STR);") Result = MATLAB.execute("J=imadjust(I,[0 0.2],[0.5 1]);imshow(J)") Clipboard.Clear Result = MATLAB.execute("print -dbitmap -f1") Picture2.Picture = LoadPicture Picture2.Picture = Clipboard.GetData() MATLAB.execute ("close(gcf)") End Sub Private Sub mnutoolscrop_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX自动化服务器 Result = MATLAB.execute("clear") Result = MATLAB.execute("STR=clipboard('paste');") Result = MATLAB.execute("I=imread(STR);") MATLAB.execute("imshow(I);J=imcrop;figure,imshow(J)") Clipboard.Clear Result = MATLAB.execute("print -dbitmap -f2") Picture2.Picture = LoadPicture Picture2.Picture = Clipboard.GetData() MATLAB.execute ("close all") End Sub Private Sub ToolBar_ButtonClick(ByVal Button As MSComctlLib.Button) On Error Resume Next Select Case Button.Key Case Is = "新建" mnuFileNew_Click Case Is = "打开" mnuFileOpen_Click Case Is = "保存" mnuFileSaveAs_Click Case Is = "撤消" Case Is = "重复" Case "打印" mnuFilePrint_Click Case "放大" mnuzoomfangda_Click Case "缩小" mnuzoomshuoxiao_Click Case "左旋转" mnurotaleftrota_Click Case "右旋转" mnurotarightrota_Click Case "上一张" mnuViewupnext_Click Case "下一张" mnuViewdownnext_Click Case "第一张" mnuViewfirst_Click End Select End Sub Private Sub mnulvjingedgetext_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX自动化服务器 Result = MATLAB.execute("clear") Result = MATLAB.execute("STR=clipboard('paste');") Result = MATLAB.execute("I=imread(STR);") Result = MATLAB.execute("g_canny=edge(I,'canny',[0.01 0.1],1.25);imshow(g_canny)") Clipboard.Clear Result = MATLAB.execute("print -dbitmap -f1") Picture2.Picture = LoadPicture Picture2.Picture = Clipboard.GetData() MATLAB.execute ("close(gcf)") End Sub Private Sub mnulvjingnoisefilt_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX自动化服务器 Result = MATLAB.execute("clear") Result = MATLAB.execute("STR=clipboard('paste');") Result = MATLAB.execute("I=imread(STR);") MATLAB.execute("fn=medfilt2(I,'symmetric');imshow(fn)") Clipboard.Clear Result = MATLAB.execute("print -dbitmap -f1") Picture2.Picture = LoadPicture Picture2.Picture = Clipboard.GetData() MATLAB.execute ("close(gcf)") '中值滤波器 End Sub Private Sub mnulvjingruihua_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX自动化服务器 Result = MATLAB.execute("clear") Result = MATLAB.execute("STR=clipboard('paste');") Result = MATLAB.execute("[I,map]=imread(STR);") MATLAB.execute("I=double(I);[IX,IY]=gradient(I);GM=sqrt(IX.*IX+IY.*IY);OUT=I;J=find(GM>=10);OUT(J)=GM(J);imshow(OUT,map)") Clipboard.Clear Result = MATLAB.execute("print -dbitmap -f1") Picture2.Picture = LoadPicture Picture2.Picture = Clipboard.GetData() MATLAB.execute ("close(gcf)") End Sub Private Sub mnulvjingsmooth_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX自动化服务器 Result = MATLAB.execute("clear") Result = MATLAB.execute("STR=clipboard('paste');") Result = MATLAB.execute("I=imread(STR);") MATLAB.execute ("Y=ordfilt2(I,5,ones(3,3));imshow(Y)") Clipboard.Clear Result = MATLAB.execute("print -dbitmap -f1") Picture2.Picture = Clipboard.GetData() MATLAB.execute ("close(gcf)") End Sub Private Sub mnuToolshist_Click() Dim Result As String Clipboard.Clear '清空剪贴板 Clipboard.SetText (Path) '将图像完整路径写入剪贴板 Set MATLAB = CreateObject("MATLAB.application") '启动ACTIVEX
本文档为【基于MATLAB的医学图像处理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_662808
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:41
分类:
上传时间:2013-11-12
浏览量:47