虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵

1问题的提出

      内窥图像生成的过程,是在观测点Osn沿着Ysn的方向进行平行光照射,对光线上经过体素进行渲染,渲染得到的结果图像就是内窥镜图像。本文,不讨论光照模型,只关注坐标的变换。所以,关键点就是求Osn到Ov的转换矩阵,进而计算在Osn中的坐标,映射到在坐标系Ov中的实际体素坐标。

虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵_第1张图片

 

 

以上的是一个直观的问题描述,在实际渲染算法引擎中,坐标系Osn到坐标Ov之间的变换,是通过一系列的变换的集合,下图就描述了,我们坐标系的定义,其中,比较关键的坐标系是:(坐标系都符合右手螺旋法则)

虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵_第2张图片

Ov:原始体素坐标系。坐标方向是Dicom中规定的坐标方向,以图像的左上角为圆心,图像左向右方向是x轴方向,从上到下是y轴方向,z方向是按照右手法则确定,坐标单位是毫米mm。

O:正方体修正坐标系。此坐标系将Ov中最长边作为正方体边长,并且坐标原点和原始Ov的长方体体数据的中心点重合的坐标系。

Ocn:归一化坐标系。归一化是为了后续数值计算方便。将O立方体归一化后,坐标原点和O坐标原点重合。

Osn:内窥镜坐标系。将体素坐标投射到XsnYsn平面上,就是内窥镜的最终的渲染图像。

2 坐标变换

根据上图中的建标方式,可以将坐标的变换分为两步,第一步是,计算Ocn到Osn坐标的变换矩阵,此矩阵可以将Osn中的坐标值转化到Ocn中的坐标值。第二步,Ov到Ocn的变换矩阵,将Ocn中的坐标值转化为Ov坐标值。

2.1 获取Ocn到Osn坐标的转换矩阵

已知内窥镜中,观察点Osn和以及观察方向Ysn,在Ysn方向上任意选择一个点,记做W点。转换矩阵的推导分为三步,

虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵_第3张图片

首先,将Osn移动到和Ocn重合,方向不变W点和T点重合。此时转换矩阵为

然后,向量绕Xcn轴,旋转后(角度的正负,都要遵守右手螺旋法则),T点落到P点,P点的坐标是。这个过程的旋转矩阵是

最后,向量绕Zcn轴旋转后,点P落到Ycn坐标轴上,至此,整个过程结束。此过程的旋转矩阵是

综上三个步骤的最终的转换矩阵为

通过,空间解析几何,我们知道

虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵_第4张图片

带入到矩阵A中,最终的到转换矩阵是

虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵_第5张图片

2.2 获取Ov到Ocn坐标的转换矩阵

此过程比较简单,直接写出如下

虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵_第6张图片

xLen, yLen, zLen分别代表三个方向上,体数据的大小,单位是mm,L表示三个值中的最大值。

3 实验效果

下图是气道的一个虚拟内窥镜图

虚拟内窥镜VE 医学影像 渲染坐标变换 绕任意向量旋转矩阵_第7张图片

 

你可能感兴趣的:(GeneralXRay图像质量,C++,c语言,矩阵,几何学,算法,c++)