一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种交互式2D与3D医学图像配准参数自动生成方法

2022-04-30 17:44:17 来源:中国专利 TAG:

一种交互式2d与3d医学图像配准参数自动生成方法
技术领域
1.本发明涉及医学图像处理技术领域,具体来说是一种交互式2d与3d医学图像配准参数自动生成方法。


背景技术:

2.随着医学成像设备的进步,对于同一患者,可以采集含有准确解剖信息的图像诸如ct,mri;同时,也可以采集到含有功能信息的图像诸如spect。然而,通过观察不同的图像进行诊断需要凭着空间想象和医生的主观经验。采用正确的图像配准方法则可以将多种多样的信息准确地融合到同一图像中,使医生更方便更精确地从各个角度观察病灶和结构。同时,通过对不同时刻采集的动态图像的配准,可以定量分析病灶和器官的变化情况,使得医疗诊断、制定手术计划、放射治疗计划更准确可靠。所以对于不同模态不同维度的医学图像进行配准,成为了当前医学图像信息学研究的热点和前言课题。
3.在医学图像配准处理应用过程中,寻找一组最优的初始配准参数能够为后续的配准过程带来极大的便利,医学图像的初始配准,即医学图像的粗配准,粗配准就是大致的使图像对齐,以方便下一步精细配准的环节,但是如何寻找一组合适的初始配准参数一直是个难题所在,因此寻求合适的方法来高质量、高效地进行初始配准参数的寻优具有重要的意义。
4.前针对2d与3d医学图像配准的研究,主要的配准方法大体分为两种:基于特征的配准方法和基于灰度的配准方法。
5.基于特征的配准方法。基于特征是配准方法首先要对待配准图像进行预处理,也就是特征提取的过程。然后利用提取到的特征完成两幅图像特征之间的匹配。由于图像中有很多种可以利用特征,因而产生了多种基于特征的方法:(1)基于点特征的配准,点特征是图像配准中最为常用的图像特征之一,分为外部征点和内部特征点两种。(2)基于直线特征的配准,线段是图像中另一个易于提取的特征。hough变换是提取图像中直线的有效方法。hough变换可以将原始图像中给定形状的曲线或直线变换得到变换空间域的一个点位置。它使得原始图像给定形状的曲线或直线上所有的点都集中到变换域上的某一个点位置从而形成峰值。这样,原始图像中的直线或曲线的检测问题就变成寻找变换空间中的峰点问题。正确建立两幅图像中分别提取的直线段的对应关系依然是该方法的重点和难点。综合考虑直线段的斜率和端点的位置关系,可以够造成一个这些信息指标的直方图,并通过寻找直方图的聚集束到达直线段的匹配。(3)基于轮廓和曲线特征的配准。(4)基于面特征的配准。最典型的算法是“头帽法”,即从图像中提取一个表面模型称为“头”,从另外一幅图像轮廓上提取的点集称为:“帽子”。用刚体变换或选择性的仿射变换将“帽子”的点集变换到“头”上,然后采用优化算法使得“帽子”的各点到“头”表面的均方根据距离最小。
6.基于灰度的配准方法。它直接利用图像的灰度信息进行配准,从而避免了因分割带来的误差,因而具有精度高、稳健性强、不需要预处理而能实现自动配准的特点。基于灰度处理的配准方法主要有:一类是通过图像灰度直接计算出代表性的比例和方向等要素;
另一类是配准过程中使用全部的灰度信息。第一种方法以力矩和主轴法为代表,第二种方法一般称为体素形式性。(1) 力矩和主轴法,力矩和主轴法是指先用经典力学物体质量分布的原理计算出两幅图像的质心和主轴,再通过平移和旋转等变换是两幅图像达到配准。利用此方法,图像可以模型化为椭圆形区域的点分布。这样的分布可以用这些点的位置的一阶矩和二级矩描述。该方法对数据的缺失比较敏感,要求整个物体必须完成的出现在两幅图像中。从整体上来说,配准精度较差,所以目前它更多的用来进行粗配准,使两幅图像初步对齐,以减少后续主要配准方法的搜索步骤。(2)体素相似性法,体素相似性法是目前研究较多的一类方法。由于它利用了图像中的所有灰度信息,一次这种方法一般都比较为稳定,并能获得相当准确的结果。该方法还有一个优点是它完全自动的,且不需要特殊的预处理。但这种方法由于需要大量的复杂计算,因此近几年才转入实际应用。
7.因此,在2d与3d医学图像配准的领域中,基于灰度信息的配准方法已经成为当下研究的热门方向,其精度已经超越了基于特征的配准方法。在基于灰度信息的配准过程中,如何能够在短时间内寻找一组合适的初始配准参数,方便后续进行精细配准已经成为了急需解决的技术问题。


技术实现要素:

8.本发明的目的是为了解决现有技术中初始配准参数搜索精度差、搜索效率低的缺陷,提供一种交互式2d与3d医学图像配准参数自动生成方法来解决上述问题。
9.为了实现上述目的,本发明的技术方案如下:
10.一种交互式2d与3d医学图像配准参数自动生成方法,,包括以下步骤:
11.11)载入三维图像数据:获取交互式医学图像待配准的三维图像数据;
12.12)在窗口上实现三维模型渲染重建、对三维模型进行二维映射、实时映射后的图像与待配准的x光图像对齐显示;
13.13)载入待配准的二维图像以二维纹理的形式绘制在窗口上:读取相应的二维图像,利用纹理映射的方法将其转换成二维纹理数据,将纹理空间中的纹理像素映射到窗口空间中的像素,将图像绘制在渲染窗口上;
14.14)拖动鼠标实现三维模型与二维图像的对齐从而获得合适的配准参数:利用鼠标交互,拖动三维模型进行旋转平移操作,使三维模型能与二维图像在视觉观察下达到对齐的程度,从而自动生成一组配准参数。
15.所述在窗口上实现三维模型渲染重建、对三维模型进行二维映射、实时映射后的图像与待配准的x光图像对齐显示包括以下步骤:
16.21)将三维图像数据处理成适用于opengl渲染管线的数据:针对输入的若干个三维切片图像序列即dicom数据,利用python的pydicom库编写python 脚本,将dicom数据转换成适用于系统的二进制文件,然后利用c 的容器存储二进制文件中的其余dicom数据;
17.22)将数据加载到实时渲染绘制的管线中:将二进制数据通过opengl的相应函数和固定的渲染流程存储到渲染管线中;
18.23)二维窗口的绘制:利用最大密度投影算法将相应的三维ct图像进行投影从而以体绘制的形式显示在窗口上;
19.24)利用arcball算法设计三维模型的旋转交互方式:采取arcball的思想,将每次
鼠标交互模型旋转的信息存储到四元数中,通过四元数转换成欧拉角和旋转矩阵的形式控制模型旋转;
20.25)设置鼠标平移三维模型的交互方式:通过qt的窗口坐标计算以及鼠标交互设置模型的平移交互方式;
21.26)利用交互结果控制模型进行实时渲染并且显示。
22.所述的将三维图像数据处理成适用于opengl渲染管线的数据包括以下步骤:
23.31)利用python脚本读取release文件夹下的dicom数据;打开cmd控制台,通过在cmd输入命令将dicom数据转换成特定格式的二进制bin文件,以便后续渲染流程使用,并且将二进制bin文件存在相应的文件夹下;
24.32)for循环遍历所有切片数据,利用c 的sprintf_s函数将数据路径格式化输出到字符串,读取路径下的一系列数据,利用c 的fopen_s函数打开二进制文件;
25.33)利用c 的fread_s函数读取二进制bin文件内信息,其包括切片在图像序列中的位置、切片图像像素沿x轴方向的间距、切片图像像素沿y轴方向的间距、切片的宽度和切片的高度,将其余dicom数据用一个容器存储起来,调整容器的大小防止数据溢出;
26.34)读取数据后,基于切片的位置对所有切片数据进行排序;
27.35)通过读取的二进制文件信息加载三维体积数据的dicom形式数据。
28.所述的将数据加载到实时渲染绘制的管线中包括以下步骤:
29.41)渲染管线调用函数生成一个三维纹理对象,并在管线中绑定三维纹理;
30.42)进行三维纹理映射,映射函数的参数为每个二维切片图像的宽度高度以及数据的深度,并对映射后的三维纹理进行纹理过滤;
31.43)生成并设置顶点数据属性,并且在渲染管线中绑定顶点数据;
32.44)编写opengl的着色器、编写顶点着色器,对于发送给gpu的每一个顶点vertex,都执行一次顶点着色,其功能是把每个顶点在虚拟空间中的三维坐标变换为在窗口上显示的二维坐标,并带有用于z-buffer的深度信息;编写片元着色器,计算每个像素的颜色和其他属性;对编写的着色器进行编译链接,结束后删除着色器;
33.45)将读取的三维纹理传入着色器,通过纹理采样,进行三维模型的纹理绘制,结束加载。
34.所述二维窗口的绘制包括以下步骤:
35.51)通过基于最大密度投影的原理,对光线投射算法进行修改从而实现最大密度投影功能的着色器;
36.52)利用opengl的getuniformlocation函数获取最大密度投影着色器中最大密度值的位置标签、纹理加载的位置标签、相机位置参数的位置标签以及模型视图投影变换矩阵mvp矩阵的位置标签;
37.53)将体数据在空间中的位置参数通过对应的位置标签一一载入,随后加载三维纹理贴图;
38.54)调用最大密度投影着色器,对加载的三维体数据进行投影,从而将最大密度投影后的模型绘制在二维窗口上。
39.所述利用arcball算法设计三维模型的旋转交互方式包括以下步骤:
40.61)对鼠标交互后的二维窗口坐标进行映射,想象成一个单位半球位于窗口中心,
把二维窗口坐标的范围调整到[-1....1]区间内,
[0041]
公式:pt.x=(pt.x*adjustwidth)-1.0f,pt.y=1.0f-(pt.y*adjustheight);其中pt为定义的三维坐标,adjustwidth为宽度的缩放因子,adjustheight为长度的缩放因子;adjustwidth=1.0f/((newwidth-1.0f)*0.5f),newwidth和newheight为二维窗口的宽度和高度;adjustheight=1.0f/((newheight-1.0f)*0.5f);
[0042]
62)通过映射公式把窗口两点的坐标单位化为半球面上的两点,如果二维窗口坐标不在以窗口中心为圆心的单位半球上时,则将二维坐标缩放到半球上,缩放因子设定为norm=1.0/funcsqrt(length),其中length=(pt.x*pt.x) (pt.y*pt.y);将二维坐标映射转换成为半球空间上的两点,若二维坐标在单位半球上,则根据x方向轴坐标pt.x和y方向坐标pt.y算出z方向坐标pt.z,计算公式为 pt.z=funcsqrt(1.0f-length),其中length=(pt.x*pt.x) (pt.y*pt.y);
[0043]
63)设定当鼠标左键按下时,产生起始点,按下时的坐标值通过之前坐标映射成三维坐标以向量形式存储起来;当鼠标松开时,产生结束点,将松开时的坐标值也通过坐标映射成三维坐标以向量形式存储起来,得到旋转交互过程中起始点和结束点的方向向量;
[0044]
64)设定一个联合的四元数q=[v,w]=[x,y,z,w]由两个部分组成,一个是数量w,它等于cosθ/2,其中θ是旋转的角度,一个是向量v,它等于沿着旋转轴的向量的sinθ/2倍;两个四元数运算的结果就是它们旋转组合的结果,这样旋转组合操作采用四元数叉乘来表示;两个旋转向量的叉积记录了旋转的轴的方向,两个向量的点积记录了旋转的角度;
[0045]
65)调用相应函数将之前计算的叉积和点积以四元数的形式保存起来,两个旋转的方向向量为op1和op2,即先求两个向量的内积s:s=op1
·
op2,再求两个向量的外积v:v=op1
×
op2,记四元数q=[s,v],将其单位化,此时q为旋转四元数;
[0046]
66)四元数转换成旋转矩阵,公式为tm=quattomatrix(q),tm矩阵为相应的旋转矩阵,旋转矩阵作用在opengl渲染的模型变换矩阵上,从而操控模型进行旋转操作;
[0047]
67)四元数转换成欧拉角,公式为rotate=quattoeulerangles(q),rotate为对应的欧拉角,可以显示模型实时交互过程中绕三个坐标轴的旋转角度;
[0048]
68)通过鼠标对模型进行旋转交互操作,得到每次旋转交互的四元数;通过四元数累乘持续对旋转信息进行存储显示。
[0049]
所述设置鼠标平移三维模型的交互方式包括以下步骤:
[0050]
71)当鼠标右键按下时,记录当前的二维窗口坐标,即起始点,当鼠标停止滑动时,记录此时的二维窗口坐标,即结束点;
[0051]
72)调用qt的qpointf函数计算两个二维窗口坐标之间在x轴方向和y 轴方向之间的差值,从而确定模型在x轴方向上的平移和y轴方向上的平移;
[0052]
73)调用qt的鼠标滚轮机制控制模型在z轴上的平移变换效果,当鼠标滚轮向上滑动时,模型向着z轴正方向移动,当鼠标滚轮向下滑动时,模型向着z轴负方向移动;
[0053]
74)模型在x轴方向、y轴方向以及z轴方向上的平移参数带入平移矩阵,将计算后的平移矩阵带入模型变换矩阵,从而实时控制模型的平移操作。
[0054]
所述利用交互结果控制模型进行实时渲染并且显示包括以下步骤:
[0055]
81)将保存旋转信息的四元数转换成旋转矩阵,将保存平移信息的向量转换成平移矩阵;
[0056]
82)设置模型变换矩阵为平移矩阵、旋转矩阵、缩放矩阵的乘积;模型变换矩阵作用在模型上,控制模型在世界坐标系变换,把物体从模型坐标系转化到世界坐标系;
[0057]
83)设置视图矩阵,把物体从世界坐标系转化到视点坐标系;
[0058]
84)设置投影矩阵,对物体模型进行投影变换,将物体从视点坐标系转化到裁剪坐标系;
[0059]
85)设置视口变换,将物体从裁剪坐标系转化到窗口坐标系,从而将绘制结果实时渲染在窗口上。
[0060]
有益效果
[0061]
本发明的一种交互式2d与3d医学图像配准参数自动生成方法,与现有技术相比综合考虑了三维体数据在经过最大密度投影后,绘制在窗口上的图像质量与需要配准的x光图像质量的差异,可以较高质量的完成两幅图像的对齐,能够得到一组合适的初始配准参数并且在控制台打印输出。
[0062]
通过最大密度投影将三维ct数据绘制在二维窗口上,并且将需要配准的 x光图像以二维纹理的形式绘制在二维窗口上,通过鼠标交互三维模型,使模型在视觉直观观察下与x光图像对齐,一方面提升了初始配准参数的搜索精度,另一方面有效的提高了初始配准参数的搜索效率。
附图说明
[0063]
图1为本发明的方法顺序图;
[0064]
图2为现有二维髋关节x光图;
[0065]
图3为现有的相应二维掩膜图;
[0066]
图4为三维ct数据加载后二维窗口上的渲染显示图;
[0067]
图5为三维模型进行平移旋转交互后的显示图;
[0068]
图6a为二维x光照片和三维模型同时渲染显示在窗口上的图;
[0069]
图6b为利用鼠标交互后二维x光照片和三维模型在窗口上的对齐显示图。
具体实施方式
[0070]
为使对本发明的结构特征及所达成的功效有更进一步的了解与认识,用以较佳的实施例及附图配合详细的说明,说明如下:
[0071]
如图1所示,本发明所述的一种交互式2d与3d医学图像配准参数自动生成方法,包括以下步骤:
[0072]
第一步,载入三维图像数据:载入交互式医学图像待配准的三维图像数据。
[0073]
第二步,在窗口上实现三维模型渲染重建、对三维模型进行二维映射、实时映射后的图像与待配准的x光图像对齐显示。
[0074]
在此,利用最大密度投影短时间内将模型渲染显示在窗口上,实现三维模型的交互式操作;通过人工操作,实时获取三维模型的旋转平移参数打印输出,方便后续配准对齐环节的进行。通过交互式操作,主观控制三维模型的旋转,方便快捷,控制三维模型的姿态达到与x-ray图像对齐的效果,利于后续快速的获得一组合适的初始配准参数。同时,交互式配准获得配准参数的难点就在于三维模型的渲染与交互,要想三维模型与二维图像同时
在二维窗口上显示,需要调用opengl进行三维模型的渲染,结合arcball的思想,利用四元数旋转控制模型的旋转变换,同时需要调用一系列渲染管线和着色器,并且需要实时准确的显示交互参数。其具体步骤如下:
[0075]
(1)将三维图像数据处理成适用于opengl渲染管线的数据:针对输入的若干个三维切片图像序列即dicom数据,利用python的pydicom库编写 python脚本,将dicom数据转换成适用于系统的二进制文件,然后利用c 的容器存储二进制文件中的其余dicom数据。
[0076]
a1)利用python脚本读取release文件夹下的dicom数据;打开cmd控制台,通过在cmd输入命令将dicom数据转换成特定格式的二进制bin文件,以便后续渲染流程使用,并且将二进制bin文件存在相应的文件夹下;
[0077]
a2)for循环遍历所有切片数据,利用c 的sprintf_s函数将数据路径格式化输出到字符串,读取路径下的一系列数据,利用c 的fopen_s函数打开二进制文件;
[0078]
a3)利用c 的fread_s函数读取二进制bin文件内信息,其包括切片在图像序列中的位置、切片图像像素沿x轴方向的间距、切片图像像素沿y轴方向的间距、切片的宽度和切片的高度,将其余dicom数据用一个容器存储起来,调整容器的大小防止数据溢出;
[0079]
a4)读取数据后,基于切片的位置对所有切片数据进行排序;
[0080]
a5)通过读取的二进制文件信息加载三维体积数据的dicom形式数据。
[0081]
(2)将数据加载到实时渲染绘制的管线中:将二进制数据通过opengl 的相应函数和固定的渲染流程存储到渲染管线中。
[0082]
b1)渲染管线调用函数生成一个三维纹理对象,并在管线中绑定三维纹理;
[0083]
b2)进行三维纹理映射,映射函数的参数为每个二维切片图像的宽度高度以及数据的深度,并对映射后的三维纹理进行纹理过滤;
[0084]
b3)生成并设置顶点数据属性,并且在渲染管线中绑定顶点数据;
[0085]
b4)编写opengl的着色器、编写顶点着色器,对于发送给gpu的每一个顶点vertex,都执行一次顶点着色,其功能是把每个顶点在虚拟空间中的三维坐标变换为在窗口上显示的二维坐标,并带有用于z-buffer的深度信息;编写片元着色器,计算每个像素的颜色和其他属性;对编写的着色器进行编译链接,结束后删除着色器;
[0086]
b5)将读取的三维纹理传入着色器,通过纹理采样,进行三维模型的纹理绘制,结束加载。
[0087]
(3)二维窗口的绘制:利用最大密度投影算法将相应的三维ct图像进行投影从而以体绘制的形式显示在窗口上。
[0088]
利用最大密度投影对体数据中高灰度值的结构进行可视化;首先确定空间中光源点的位置和体数据的位置,然后从光源点向外发射虚拟射线,射线同平面的交点决定了mip图像中各像素点的位置;以体数据中切片方向从后到前射出一系列虚拟光线并投影到一个二维平面上,当光线穿过体数据时,在光线上进行等距离采样,取采样点中属性最大值作为该条光线的输出,通过插值可以计算每个采样点位置坐标的标量值;光线对应的窗口像素颜色值可以通过输出值进行颜色映射获得,最终的结果绘制在投影的二维平面上。
[0089]
c1)通过基于最大密度投影的原理,对光线投射算法进行修改从而实现最大密度投影功能的着色器;
[0090]
c2)利用opengl的getuniformlocation函数获取最大密度投影着色器中最大密度
值的位置标签、纹理加载的位置标签、相机位置参数的位置标签以及模型视图投影变换矩阵mvp矩阵的位置标签;
[0091]
c3)将体数据在空间中的位置参数通过对应的位置标签一一载入,随后加载三维纹理贴图;
[0092]
c4)调用最大密度投影着色器,对加载的三维体数据进行投影,从而将最大密度投影后的模型绘制在二维窗口上。
[0093]
最大密度投影可以在短时间内比较准确地模拟原始体数据,通过体绘制重建三维模型;通过最大密度投影绘制三维模型在二维窗口上,可以大大降低配准投影的耗时,增强交互式配准的实用性。由于医学图像处理工具包itk、 vtk调用最大密度投影生成的三维体数据交互困难的缺陷,本发明先转换数据类型,通过opengl的相应函数,将体数据进行最大密度投影从而显示在窗口上,过程中需要进行复杂的渲染管线绑定和预处理,以及着色器的编写,但是调用过程中渲染模型生成的速度很快。
[0094]
(4)利用arcball算法设计三维模型的旋转交互方式:采取arcball的思想,将每次鼠标交互模型旋转的信息存储到四元数中,通过四元数转换成欧拉角和旋转矩阵的形式控制模型旋转。
[0095]
d1)对鼠标交互后的二维窗口坐标进行映射,想象成一个单位半球位于窗口中心,把二维窗口坐标的范围调整到[-1....1]区间内,
[0096]
公式:pt.x=(pt.x*adjustwidth)-1.0f,pt.y=1.0f-(pt.y*adjustheight);其中pt为定义的三维坐标,adjustwidth为宽度的缩放因子,adjustheight为长度的缩放因子;adjustwidth=1.0f/((newwidth-1.0f)*0.5f),newwidth和newheight为二维窗口的宽度和高度;adjustheight=1.0f/((newheight-1.0f)*0.5f);
[0097]
d2)通过映射公式把窗口两点的坐标单位化为半球面上的两点,如果二维窗口坐标不在以窗口中心为圆心的单位半球上时,则将二维坐标缩放到半球上,缩放因子设定为norm=1.0/funcsqrt(length),其中length=(pt.x*pt.x) (pt.y*pt.y);将二维坐标映射转换成为半球空间上的两点,若二维坐标在单位半球上,则根据x方向轴坐标pt.x和y方向坐标pt.y算出z方向坐标pt.z,计算公式为pt.z=funcsqrt(1.0f-length),其中length=(pt.x*pt.x) (pt.y*pt.y);
[0098]
d3)设定当鼠标左键按下时,产生起始点,按下时的坐标值通过之前坐标映射成三维坐标以向量形式存储起来;当鼠标松开时,产生结束点,将松开时的坐标值也通过坐标映射成三维坐标以向量形式存储起来,得到旋转交互过程中起始点和结束点的方向向量;
[0099]
d4)设定一个联合的四元数q=[v,w]=[x,y,z,w]由两个部分组成,一个是数量w,它等于cosθ/2,其中θ是旋转的角度,一个是向量v,它等于沿着旋转轴的向量的sinθ/2倍;两个四元数运算的结果就是它们旋转组合的结果,这样旋转组合操作采用四元数叉乘来表示;两个旋转向量的叉积记录了旋转的轴的方向,两个向量的点积记录了旋转的角度;
[0100]
d5)调用相应函数将之前计算的叉积和点积以四元数的形式保存起来,两个旋转的方向向量为op1和op2,即先求两个向量的内积s:s=op1
·
op2,再求两个向量的外积v:v=op1
×
op2,记四元数q=[s,v],将其单位化,此时q为旋转四元数;
[0101]
d6)四元数转换成旋转矩阵,公式为tm=quattomatrix(q),tm矩阵为相应的旋转矩阵,旋转矩阵作用在opengl渲染的模型变换矩阵上,从而操控模型进行旋转操作;
[0102]
d7)四元数转换成欧拉角,公式为rotate=quattoeulerangles(q),rotate为对应的欧拉角,可以显示模型实时交互过程中绕三个坐标轴的旋转角度;
[0103]
d8)通过鼠标对模型进行旋转交互操作,可以得到每次旋转交互的四元数;四元数可以累乘,从而可以源源不断的对旋转信息进行存储显示。
[0104]
四元数旋转能避免万向锁死锁,只需要一个4维的四元数就可以执行绕任意过原点的向量的旋转,方便快捷,在某些实现下比旋转矩阵效率更高;而且四元数旋转可以提供平滑插值。通过四元数旋转交互起来更为方便,实时准确的提供一组旋转参数。通过qt的鼠标交互,得到鼠标点的坐标信息,需要利用arcball的原理设计旋转交互,一般的模型旋转采用的都是欧拉旋转,本设计采用四元数旋转,比欧拉旋转稍微复杂了一点,因为多了一个维度,理解更困难,不直观。
[0105]
(5)设置鼠标平移三维模型的交互方式:通过qt的窗口坐标计算以及鼠标交互设置模型的平移交互方式。
[0106]
e1)当鼠标右键按下时,记录当前的二维窗口坐标,即起始点,当鼠标停止滑动时,记录此时的二维窗口坐标,即结束点;
[0107]
e2)调用qt的qpointf函数计算两个二维窗口坐标之间在x轴方向和y 轴方向之间的差值,从而确定模型在x轴方向上的平移和y轴方向上的平移;
[0108]
e3)调用qt的鼠标滚轮机制控制模型在z轴上的平移变换效果,当鼠标滚轮向上滑动时,模型向着z轴正方向移动,当鼠标滚轮向下滑动时,模型向着z轴负方向移动;
[0109]
e4)模型在x轴方向、y轴方向以及z轴方向上的平移参数带入平移矩阵,将计算后的平移矩阵带入模型变换矩阵,从而实时控制模型的平移操作。
[0110]
(6)利用交互结果控制模型进行实时渲染并且显示。
[0111]
f1)将保存旋转信息的四元数转换成旋转矩阵,将保存平移信息的向量转换成平移矩阵;
[0112]
f2)设置模型变换矩阵为平移矩阵、旋转矩阵、缩放矩阵的乘积;模型变换矩阵作用在模型上,控制模型在世界坐标系变换,把物体从模型坐标系转化到世界坐标系;
[0113]
f3)设置视图矩阵,把物体从世界坐标系转化到视点坐标系;
[0114]
f4)设置投影矩阵,对物体模型进行投影变换,将物体从视点坐标系转化到裁剪坐标系;
[0115]
f5)设置视口变换,将物体从裁剪坐标系转化到窗口坐标系,从而将绘制结果实时渲染在窗口上。
[0116]
第三步,载入待配准的二维图像以二维纹理的形式绘制在窗口上。读取相应的二维图像,利用纹理映射的方法将其转换成二维纹理数据,将纹理空间中的纹理像素映射到窗口空间中的像素,将图像绘制在渲染窗口上。
[0117]
第四步,拖动鼠标实现三维模型与二维图像的对齐从而获得合适的配准参数。利用鼠标交互,拖动三维模型进行旋转平移操作,使三维模型能与二维图像在视觉观察下达到对齐的程度,从而自动生成一组配准参数打印输出。
[0118]
如图2所示,其为一张二维的x光髋关节照片,如图3所示,其为一张二维的掩膜照片,作用在二维x光照片上。如图4所示,图像是经过最大密度投影后在窗口上渲染显示的投影图,为三维髋关节ct切片序列图像经过投影变换从而绘制在窗口上的图像,此时模型没
有经过旋转平移交互操作,为初始姿态下的显示结果。如图5所示,图像是经过一定旋转平移操作后,模型在此位置下的姿态显示,通过鼠标左键交互模型,拖动模型进行旋转变换,分别绕 x轴、y轴、z轴做一定的旋转变换,通过鼠标右键交互模型,拖动模型进行平移变换,分别向x轴、y轴做一定的平移变换,通过鼠标滚轮向前滚动或者向后滚动,拖动模型进行缩放变换,即向z轴做一定的平移变换;此姿态为模型绕x轴旋转八十度,向着x轴和y轴分别平移26、57个单位值,向着z轴放大1450个单位值得到的姿态显示。
[0119]
如图6a所示,将二维x光髋关节图像以二维纹理绘制在窗口上,作为背景图像,将三维髋关节ct图像经过三维纹理贴图绘制和最大密度投影绘制在窗口上,作为前景图像,可以拖动鼠标对前景图像进行交互操作,使之与背景图像对齐;此图像为初始姿态下前景图像和背景图像的显示结果;如图6b所示,拖动鼠标对前景模型进行旋转平移交互操作,使之与背景x光图像在视觉观察下达到一定对齐效果,在图像中有显示到前景模型的右边轮廓与背景x光图像大致对齐,即此姿态下的平移旋转参数为一组比较合适的初始配置参数;利用本发明所述方法处理后,可以发现能够在短时间内获得一组合适的2d与 3d初始配准参数打印输出。
[0120]
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明的范围内。本发明要求的保护范围由所附的权利要求书及其等同物界定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献