实验3.1 CT计算机模拟实验——图像重建
实验目的
1.通过实验熟悉重建CT像的过程;
2.体会像素大小对图像质量的影响。
实验器材
计算机、VisualBasic6.0中文版、“CT实验课件”应用程序。
实验原理
医学CT像包括X-CT,MRCT,UCT,ECT四大类,通常所说的CT都是指X-CT影像。本实验(包括实验3.1、实验3.2、实验3.3、实验3.4)中所做的都是X-CT影像的模拟实验。后面提到的CT,如不做特别说明,均指X-CT。
CT图像重建是运用一定的物理技术,获取生物体某断层上的生物信息,采用一定的数学方法,求得该断层上的CT值分布,再应用计算机技术把此二维分布矩阵转变为灰度分布。重建过程用方框图表示如图3-1。

图3-1 重建过程
扫描是为获取投影(Projection)而采用的物理技术,是用近于单能窄束的X射线束以不同的方式、沿不同的方向、按一定的顺序对受检体体层进行投照。扫描的方式有平移扫描、旋转扫描、平移加旋转扫描等。
对生物体扫描后,获取足够的投影数据,然后采用一种数学算法,求得二维μ值分布μ(x,y),再将μ值分布转换成对应像素的CT值分布CT(x,y)。此后,通过电子计算机技术再把图像画面上的CT值分布转换为灰度图像。
本实验中用三维动画的方式模拟了对头部的平移扫描和旋转扫描,学生可以形象地感受这两种扫描的扫描方式及扫描过程。求解投影数据、像素矩阵分布、不同像素矩阵方式显示以及逐点成像等都是应用MicrosoftVisualBasic6.0软件编写完成。
软件介绍
MicrosoftVisualBasic6.0是美国微软(Microsoft)公司研制的Windows环境下的可视化高级程序设计语言,是在世界范围内广泛使用的一种强大的编程语言。它为Windows应用程序的开发提供了最迅速和便捷的方法。
VisualBasic是在原有Basic语言的基础上发展而来的。Basic语言是20世纪60年代美国达特茅斯学院(DartmouthCollege)的JohnKemeng和TomasKurtz两位教授创立的计算机程序设计语言,“Basic”是Beginner’sAll-Purpose SymbolicInstructionCode的缩写,其含义是“初学者通用的符号指令代码”。它是一种非常简单的语言。20世纪80年代,适应结构化程序设计的需要,出现了第二代的Basic语言版本,增加了许多数据类型和程序控制结构,其中较有影响的有TrueBasic,QuickBasic和TurboBasic等。发展至今,VisualBasic已包含了数百条语句、函数及关键词,其中很多和WindowsGUI(GraphicalUserInterface)有直接关系。专业人员可以用VisualBasic实现其他任何Windows编程语言所能实现的功能,而初学者只要掌握几个关键词就可以建立实用的Windows应用程序。需要说明的是,VisualBasic虽然是由早期Basic发展而来,但绝对不能简单地认为是一种升级版。因为在VisualBasic中,不仅实现了“可视化的程序设计”方法,“Visual”即可视化,是指开发图形用户界面(GUI)的方法。用户无需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象放置到窗体上的理想位置即可,更重要的是使用了面向对象的程序设计技术、ActiveX技术等。VisualBasic是一种具有全新形象的程序设计语言。
VisualBasic是事件驱动的程序设计语言。在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在响应不同的事件时执行不同的代码片段。事件可以由用户操作触发,也可以由来自操作系统或其他应用程序的消息触发,甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的代码的路径都可能是不同的。因为事件的顺序是无法预测的,所以在代码中必须对执行时的各种状态做一定的假设。当做出某些假设时,应该组织好应用程序的结构,以确保该假设始终有效。
在大多数语言里,开发程序分为三个明显的步骤:编码、编译和测试代码。如果编写代码时发生了错误,则在开始编译应用程序时该错误就会被编译器捕获,此时必须查找并改正该错误,然后再次进行编译,对每一个发现的错误都要重复这样的过程。VisualBasic使用交互式方法开发应用程序,使得三个步骤之间没有明显的界线。在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误,好像一位专家在实施检视代码的输入。除即时捕获错误外,VisualBasic也在输入代码时部分地编译该代码,当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误,则将错误突出显示于代码中,这时可以更正错误并继续编译,而不需从头开始。VisualBasic的交互特性,使得代码运行的效果可以在开发时进行测试,不必等到全部编译完成以后。
实验3.2,3.3,3.4所用应用程序都用VisualBasic编写而成,通过实验也可以体会它的可视性、事件驱动、交互性等特点。
实验内容与步骤
1.基本实验部分
(1)打开计算机,安装VisualBasic6.0,将教材附带光盘中的“ctsy”(CT实验)文件夹复制到硬盘下(C\或D:\或E:\...)。
(2)打开CTSY\CT实验课件,运行应用程序。
(3)在CT实验动画片头中,点击“开始”进入目录页,在目录页中点击“CT影像模拟重建”,出现重建实验介绍,再点击“进入实验”按钮进入实验环境,界面如图3-2所示。(https://www.daowen.com)

图3-2 模拟扫描进行中
(4)在Text框中输入物体名(a,b,c,d等,参见帮助),点击“旋转扫描”或“平移扫描”,再点击下排的向右箭头按钮,Picture框内开始扫描。图3-2中所示为旋转扫描正进行中。
(5)扫描结束,点击“关闭扫描”按钮,然后点击“对扫描数据进行运算”按钮,进入主窗体,如图3-3所示。

图3-3 图像重建主窗体
(6)点击“显示原物及重建图像”按钮,显示如图中所示(未运算)。
(7)点击“运行像素值求解程序求解像素”按钮,开始运算。状态栏内提示:“正在运行程序请稍等!”运算完毕,提示消失。
(8)再次点击“显示原物及重建图像”按钮,四幅图像分别显示在四个Picture框中。观察像素大小不同对应的图像质量的差别。
(9)单击“转‘画图’窗体”按钮,进入如图3-4窗体。
(10)点击“像素值逐点转灰度像”按钮,将在Picture框中从左下角开始按从左向右、由下而上的顺序逐点成像。图中所示为成像过程中。
(11)点击“重建图像清空”按钮,清空Picture框,再点击“返回主窗体”按钮,返回主窗体。
(12)为了更清楚地观察图像,请点击“转放大图像窗体”观看放大图像。
请注意:此处的放大图像只是图像尺寸的放大,图像矩阵不变,即不是数字图像本质上的放大,不是通过内插像素改变图像矩阵大小。

图3-4 逐点成像
(13)按同样方法观察其他图像成像过程,并体会图像矩阵、像素尺寸大小与图像质量之间的关系。
(14)回到“扫描”窗体,点按“返回目录页”回到目录窗体,单击“结束”按钮结束实验。
2.选做部分
根据学生掌握知识程度酌情进行:
在老师指导下,学生自己设计并编写一个“重建图像”应用软件。
注意事项
CTSY文件夹中包含的文件夹及所有文件属于“CT实验课件”的数据库,学生做实验时不要做任何修改,以保证实验顺利进行。