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.mzph.cn/bicheng/59367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python毕业设计选题:基于django+vue的4S店客户管理系统

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 员工信息管理 个人中心 车辆信息管理 售后服务管理 售后安排管理 车辆信…

Java基础06(代码运行时的内存图)

目录 一、引入 二、Java下的内存分配 1.类信息常量池和静态常量池 2. 栈和字符串常量池 (引进)线程 3.⭐程序计数器作用⭐(程序计数器配合栈使用) 总结Java内存: (引进)驱动 三、引用传…

论文阅读-用于点云分析的自组织网络

目前存在的问题: 原始的SOM(1)训练结果与初始节点高度相关(2)样本更新规则取决于输入点的顺序3D 卷积神经网络(需要将数据转换为体素,存在分辨率损失和计算成本上涨的问题)、PointN…

数据结构之二叉树前序,中序,后序习题分析(递归图)

1.比较相同的树 二叉树不能轻易用断言,因为树一定有空 2.找结点值 3.单值二叉树 4.对称二叉树 5.前序遍历

【JavaScript】JavaScript开篇基础(4)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

运动控制 直流有刷电机

文章目录 一、简介二、组成三、特点四、电机参数4.1 额定电压4.2 额定电流4.3 额定转速4.4 额定扭矩4.5 减速比 五、工作原理5.1 左手定则5.2 工作原理 六、测速原理6.1 磁电式编码器6.2 光电式编码器 一、简介 直流有刷电机是一种内含电刷装置能将直流电转换为机械能的电机&a…

关于模拟方法建模的一份介绍

有些时候,我们无法直接收集大量数据,即对于对象的行为直接观测或重复实验可能是不行的,所以此时就需要通过模拟的技术来收集数据,然后建模。这样的一种策略就是模拟方法建模,而模拟方法建模中最常用的一种方法就是蒙特…

Java 入门

目录 Java简介 Java JDK开发环境配置 第一个Java程序 Java标识符与关键字 Java注释 Java常量 Java变量的定义和使用 Java简介 Java简介: Java是由Sun Microsystems公司于1995年推出的一门面向对象的高级程序设计语言,可以运行于多个平台,其…

CSS--两列网页布局,三列布局和多行多列布局

两列网页布局 两列网页布局实验 先将一个未运用浮动效果的网页结构写出来 <style>header{/* 给页眉设置宽高和样式 */width:1000px;height: 40px;background-color: gray;border: 3px brown solid;margin-bottom: 5px;}article{width:1000px;height: 600px;background-c…

开源与商业的碰撞TPFLOW与Gadmin低代码的商业合作

随着数字化转型的浪潮席卷全球&#xff0c;企业对于高效、灵活的软件开发需求愈发迫切。低代码开发平台应运而生&#xff0c;为企业提供了简化开发流程、缩短开发周期的解决方案。在众多低代码开发平台中&#xff0c;Gadmin企业级低代码平台、TPFLOW工作流和SFDP超级表单脱颖而…

Edge浏览器提示“无法安全下载”

Edge浏览器在下载某些文件时&#xff0c;会提示“无法安全下载”。 注意事项&#xff1a;如果确实需要下载该文件&#xff0c;首先核对网址&#xff0c;确保下载文件的安全性&#xff0c;并在下载完成后进行必要的病毒查杀。 解决方法&#xff1a; 点击右侧的3个点&#xff0…

微服务系列三:微服务核心——网关路由

目录 前言 一、登录存在的问题归纳 二、*微服务网关整体方案 三、认识微服务网关 四、网关鉴权实现 五、OpenFeign微服务间用户标识信息传递实现 六、微服务网关知识追问巩固 前言 本篇文章具体讲解微服务中网关的实现逻辑、用于解决什么样的问题。其中标题中标注* 涉…

Docker入门系列——网络

Docker 通过容器化应用程序&#xff0c;彻底改变了我们构建、分发和运行应用程序的方式。然而&#xff0c;有效使用 Docker 的一个关键方面是理解容器如何相互通信以及与外界通信。 1. 什么是 Docker 网络&#xff1f; Docker 网络允许容器相互通信以及与外部资源通信。默认情况…

2024年大厂AI大模型面试题精选与答案解析

前言 随着AI市场&#xff0c;人工智能的爆火&#xff0c;在接下来的金九银十招聘高峰期&#xff0c;各大科技巨头和国有企业将会对AGI人才的争夺展开一场大战&#xff0c;为求职市场注入了新的活力。 为了助力求职者在面试中展现最佳状态&#xff0c;深入理解行业巨头的选拔标…

Nico,从零开始干掉Appium,移动端自动化测试框架实现

开头先让我碎碎念一波~去年差不多时间发布了一篇《 UiAutomator Nico&#xff0c;一个基于纯 adb 命令实现的安卓自动化测试框》&#xff08;https://testerhome.com/topics/37042&#xff09;&#xff0c; 由于种种原因 (详见此篇帖子) 当时选择了用纯 adb 命令来实现安卓自动…

RTP和RTCP的详细介绍及其C代码示例

RTP和RTCP的详细介绍及其C代码示例 RTP和RTCP简介RTP协议详解RTCP协议详解RTP和RTCP之间的关系C代码示例RTP和RTCP简介 RTP(Real-time Transport Protocol,实时传输协议)和RTCP(Real-time Transport Control Protocol,实时传输控制协议)是流媒体传输中常用的两个协议。R…

国内能用的Docker镜像源【2024最新持续更新】

国内能用的Docker镜像源【2024最新持续更新】 Docker 镜像加速列表&#xff08;2024年11月已更新&#xff09;配置方式1&#xff1a;临时使用配置方式2&#xff1a;长久有效 在国内使用 Docker 的朋友们&#xff0c;可能都遇到过配置镜像源来加速镜像拉取的操作。然而&#xff…

队列(Queue)的介绍与实现

文章目录 队列队列的概念及结构 队列的实现初始化队列销毁队列队尾入队列队头出队列获取队列头部元素检测队列是否为空获取队列中有效元素个数 队列 队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表。队列遵…

3.1 快速启动Flink集群

文章目录 1. 环境配置2. 本地启动3. 集群启动4. 向集群提交作业4.1 提交作业概述4.2 添加打包插件4.3 将项目打包4.4 在Web UI上提交作业4.5 命令行提交作业 在本实战中&#xff0c;我们将快速启动Apache Flink 1.13.0集群&#xff0c;并在Hadoop集群环境中提交作业。首先&…

[sa-token]StpUtil.getLoginId

闲聊 一般情况下&#xff0c;我们想用uid&#xff0c;可能需要前端将uid传过来&#xff0c;或者将token传来&#xff0c;然后我们进行识别。 用了sa-token之后&#xff0c;可以使用StpUtil.getLoginId()方法获取当前会话的用户id 代码展示 例如以下代码&#xff1a; public Res…