当前位置: 首页 > news >正文

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,并在后面用到的时候进行声明就可以实现参数的传递。还有在程序的运行过程中,在命令行窗口出现了运行的中间结果,检查程序发现一些语句的结尾没加分号,加上后问题得到了解决,提高了程序的运行速率。

七、 参考文献

[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.


http://www.mrgr.cn/news/65845.html

相关文章:

  • 如何生成 PEM 格式的 SSH 密钥 ?
  • 推荐一款高级的安装程序打包工具:Advanced Installer Architect
  • 5G时代已来:我们该如何迎接超高速网络?
  • Vue学习记录之二十七 路由router的使用
  • 苹果安装python环境
  • 自定义规则配置教程
  • 掌握 In-Context Learning (ICL):构建高效 Prompt 的技巧与调优策略
  • Java | Leetcode Java题解之第539题最小时间差
  • 使用QtWebEngine的Mac应用如何发布App Store
  • 文件操作和 IO(二):文件内容操作 => 流对象
  • 小北的字节跳动青训营与LangChain实战课:深入解析模型I/O与提示模板(持续更新中~~~)
  • Java 入门
  • DFS求解迷宫最长移动路线
  • 助力风力发电风机设备智能化巡检,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建无人机巡检场景下风机叶片缺陷问题智能化检测预警模型
  • Java基础06(代码运行时的内存图)
  • 基于matlab的图像形状与分类的方法比较
  • Windows基础2(病毒编写)
  • WordPress站点网站名称、logo设置
  • C语言 | Leetcode C语言题解之第538题把二叉搜索树转换为累加树
  • 科研绘图系列:R语言圆堆积图(circle stacked plot)
  • Nginx线程模型
  • 【AIGC】如何通过ChatGPT轻松打造个性化GPTs应用
  • 【数据结构- 合法括号字符串】力扣1190. 反转每对括号间的子串
  • 代码训练营 day55|卡码网98
  • Linux:网络协议socket
  • 高频面试题基本总结(含笔试高频算法整理)回顾44