MATLAB实现图像恢复设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB实现图像恢复设计报告
一、设计目标及需求分析
设计目标:希望通过matlab设计一个软件来实现对CT图像的模糊再恢复的过程,是对现实中CT图像复原的一个简单仿真。
需求分析:随着网络和通信技术的发展,数字图像处理与分析技术已经在科学研究、工业生产、医疗卫生、教育等领域得到了广泛应用,对推动社会的发展和提高人们的生活水平都起到了重要作用[1]。而在医学CT影像中,CT图像的影响因素众多,包括部分容积效应,空间分辨力,密度分辨力,相机条件设定和噪声等[2]。这些因素会造成CT 图像模糊失真,需要对图像进行恢复,才能满足对临床诊断的要求。
二、设计概要
图像退化
三、详细设计
在GUI界面设计中选取三个静态文本分别叫“原始图像”、“模糊加噪图像”、“恢复图像”,添加三个坐标轴,三个按钮分别用于“读入原始图像”、“模糊和加噪”、“恢复”。
图一 GUI界面设计
①点击按钮“读入图像”,将选取的原始肺部CT图像导入第一个坐标轴中。
②点击按钮“模糊和加噪”,对原始CT图像进行运动模糊,加入高斯噪声,生成的图像显示在第二个坐标轴中。
图二模糊和加噪
在这里用MATLAB图像处理工具函数fspecial生成了一个运动模糊的点扩展函数PSF,PSF 再与原图卷积得到模糊图像,这一步操作是为了模拟现实CT图像中由于病人身体的移动,心脏搏动和胃肠蠕动这些不自主的运动造成的伪影。在CT图像中的噪声有多种类型,有高斯噪声,椒盐噪声,泊松噪声,斑点噪声等。这里只引入了高斯噪声是由于通过查阅文献得知,CT图像中的噪声主要是高斯噪声[3],是一个抽象简化的退化模型。
③点击按钮“恢复”,对模糊和加噪的图像进行图像复原,将复原后的图像显示在第三个坐标轴上。
图三约束最小二乘滤波恢复
在这里使用的图像恢复方法为约束最小二乘滤波恢复,利用deconvreg函数实现约束最小均方误差恢复。在使用deconvreg时,通过对输出图像采取某些约束,如默认光滑性约束等,实现对模糊图像的约束最小二乘滤波恢复。J=deconvreg(I,PSF,NP),其中I表示输入图像,PSF表示点扩展函数,NP表示图像的噪声强度,函数调用后的返回值J 表示恢复后的输出图像[4]。过高的估计噪声强度会导致恢复效果大大下降,而对噪声估计不足导致噪声的放大效果,并且产生了振铃现象。针对噪声放大效应和振铃现象,通过调用edgetaper函数,对图像边缘信息进行提取,然后作为deconvreg函数的参数进行图像恢复,在这种情况下,恢复的效果将对噪声强度不敏感,以此来抑制振铃现象和噪声,提高图像的恢复质量。
四、运行结果及分析
图四程序运行结果
程序的运行结果如图四所示,在对导入的原始CT图像进行模糊和加噪后,可以明显的看出图像变得模糊不清晰,再用约束最小二乘滤波进行图像复原后的图像与模糊加噪的图像对
比起来清晰了许多,与原图已经更接近了,但还是有一定程度的失真,说明了这个恢复模型还有一定的局限。
在图像恢复过程中,是在缺乏图像先验知识的情况下,对退化过程建立模型进行描述,进而寻找一种削弱其影响的过程,是一种估计方法。在设计过程中对MATLAB提供的四个图像恢复函数都进行了尝试,对比了维纳滤波恢复,约束最小二乘滤波恢复,Luy-Richardson恢复,盲解卷积算法恢复这四种方法对CT图像的恢复效果发现,约束最小二乘滤波恢复的恢复效果最好,最终选定了这种方法。由于影响CT图像的因素是多种多样的,本次设计只是进行了一个简化的模拟,并且在恢复过程中还会引入新的噪声,这个模型还不能实现100%的复原。
五、调试
在软件系统设计过程中,要经常用到MATLAB中的调试功能,可以帮助我们及时的发现错误并纠正。通过设置和清除断点,来使程序运行到断点的位置,观察命令行窗口的提示,来发现错误。我在程序调试的过程中除了发现一些基本的拼写错误外,还发现了一些程序编写过程中的问题。一开始在CT原始图像的导入过程中发现导入的图像只出现在最新创建的axes3上,通过添入语句axes(handles.axes1)得到了解决。在变量的设置上也出现了问题,在前面设置的变量没有实现参数的传递,在后面的程序运行中提示变量未定义,通过设置全局变量global I,并在后面用到的时候进行声明就可以实现参数的传递。还有在程序的运行过程中,在命令行窗口出现了运行的中间结果,检查程序发现一些语句的结尾没加分号,加上后问题得到了解决,提高了程序的运行速率。
六、总结
在本次小学期的医疗仪器设计——MATLAB软件设计中,我收获了许多知识。在上学期的信号与系统实验中有接触到MATLAB,但那只是对已有程序的一个验证,并没有学习程序的编写。这次的软件设计从假期的自学入门知识,到自主选定课题设计,再到最后的设计成果,展示这些从头到尾都是需要自己去查找资料,文献进行学习来完成的。这过程中也遇到了许多问题,一开始想要做一个CT图像的恢复,打算把所有的影响因素都考虑进去,但现实是能力不足,没办法全都考虑,一再缩水,最后只考虑了伪影和噪声进行简化。在刚开始编写程序时,连全局变量都不会设,只能一点点的去查资料学习,在这个过程中学会了很多matlab 的使用方法,如何调用函数,调参数,help等等。也学会了利用程序调试来发现错误,编写的过程是辛苦的,但到最后有一个成果也是很有成就感的,虽然简单,但毕竟是自己亲手做的。
七、参考文献
[1]龚声蓉,刘纯平,王强.数字图像处理[M].北京:清华大学出版社,2006.46-84,123-144
[2]安瑞金,黄岗.CT图像质量和辐射剂量的影响因素研究[J].生物医学工程与临
床,2009,13(02):92-95.
[3]张元科,张军英,卢虹冰.低剂量CT投影图像噪声分析及去噪算法研究[J].光电子.激光,2010,21(07):1073-1078.
[4]罗军辉,冯平,哈力旦.A.MATLAB7.0在图像处理中的应用.北京:机械工业出版社,2005.268-271
[5]杨宝会. 基于Matlab GUI的医学图像处理系统[D].暨南大学,2014.