1 物体坐标系(mm为单位,并三方向都是各向同性的情况)
将所有数据的正中间(这里所有的数据,是指各体素按照实际位置在空间排列),作为物体坐标系的原点,以图像的image orientation X方向,作为物体坐标系x轴,image orientation Y方向作为物体坐标系的y轴。
同时,通过image orientaton的定义,规定物体的坐标的x轴正方向是人体从右指向左的,y方向是人体从面部指向背部方向,z方向是从脚指向头的方向,是符合右手螺旋法则的坐标系。
被重建的区域(此区域包含物体),可定位为一个正方体,正方体边长是物体的最大边长,此重建正方体的中点和物体坐标系的原点重合。
2 观察坐标系
此坐标是用来观察物体坐标系内的体素数据的坐标。因为,在计算过程中,左右坐标系都是右手螺旋法则的坐标系。在通过鼠标对VR图像进行旋转和移动的时候,实际上,是旋转和移动的观察坐标系Or,通过改变观察坐标的视角,来实现对物体的观测。Or初始位置和物体坐标系O是重合的。我们知道,坐标系的旋转矩阵为
![](https://i-blog.csdnimg.cn/blog_migrate/771733e43038dc8d99f98dd4815c69b1.png)
3 在观察坐标系内,进行渲染
最后的渲染图像,如下图,头向上,图像的左边是身体的右,面部朝向观察者。
![](https://i-blog.csdnimg.cn/blog_migrate/676c2bf4111f0c87d3b46b74c4944415.png)
但是,实际的物体方位如下
![](https://i-blog.csdnimg.cn/blog_migrate/8a5ece1d0a1571c4d3778ad1c0a94d2d.png)
所以,在重建计算的过程中,如果要生成长宽512个像素的图片,那么,重建过程就要从x的正方向(从右向左),z的反方向(从头到脚),并且每个像素都要沿着y的正方向(从面到背)进行渲染。
3.1 渲染图上,用鼠标沿x轴移动
当鼠标,沿渲染图像,x轴正方向滑动,此时,观察者预期看到的是右侧背部。所以,在观察坐标系中,应当是绕当前的观察坐标系Zr轴旋转-sita角,得到新的观察坐标系。如下为示意图,Or是绕Zr的负方向旋转。
![](https://i-blog.csdnimg.cn/blog_migrate/936f991fbee29decd8e173f15911c45d.png)
旋转后,得到的渲染图为
![](https://i-blog.csdnimg.cn/blog_migrate/708db8001c4b2354a80220af675bd6c2.png)
3.2 渲染图上,用鼠标沿y轴移动
沿渲染图像的y方向,正方向移动,也就是从上向下滑动鼠标,此时,我们预期看到的是头部,如下图所示,
![](https://i-blog.csdnimg.cn/blog_migrate/a6db251caae9fc746b02507700dcd6d5.png)
,要得到此效果,观察坐标系应当绕当前观察坐标系的Xr轴,旋转负角,得到新的观察坐标系。示意图如下。
![](https://i-blog.csdnimg.cn/blog_migrate/39b2a530a4dc6d6447f39cd5210c3e12.png)
4 计算场景
4.1 渲染过程
大概的过程是,计算在渲染坐标系中的某个一个点,映射到物体坐标系中的体素点的坐标,T表示从物体坐标系到渲染坐标系的转换矩阵,此矩阵是通过一系列的旋转和移动的转换矩阵右乘所得。右乘,表示坐标系的变换,机器人运动学中的DH建标方法,就是一种移动坐标系的方法。
![](https://i-blog.csdnimg.cn/blog_migrate/74727b18a7084a6d485ca3b0621d45ab.png)
4.2 计算物体坐标系中的点,映射到渲染图像
已知物体坐标系内坐标位置点,求在渲染坐标上的坐标点,最后xr和zr就是实际渲染图像上的坐标点
![](https://i-blog.csdnimg.cn/blog_migrate/65ea912d3d003773f60c129f6f831297.png)