前言:

DICOM世界观·开篇中顺便提到了DICOM标准中提及的各类坐标系统。鉴于篇幅问题(CSDN博客的确不太适合写长学术类博文),对于坐标系统的偏理论部分放到本篇进行介绍。正如“DICOM世界观·开篇”中提到的,希望按照“科学”本身的方式——大量观察经验+理论推理——来介绍相关知识点。
本篇博文内容大致如下:

1.3. 坐标系变换
1.3.1 方向余弦
1.3.2 欧拉角
1.3.3 四元数
1.3.4 DICOM中的方向余弦示例

第一章 坐标系统 Coordinate System

开篇中提到了“笛卡尔坐标系”的伟大贡献,使得数学与几何两者有机的结合了起来,快速推进了人类文明的进步,至少古希腊文明取得了空前的进步。还记得高中时莫名的很讨厌解析几何(Coordinate geometry,可以简单地理解为将空间的几何问题当做数学方程式来解),因为它巧妙的利用解析式的数字方法掩盖了空间的复杂,让我引以为傲的超强空间想象力变得苍白无力。只怪当时井底之蛙未能完全体会它的美。
目前我们已经确定了DICOM世界观的一种度量方式——笛卡尔右手坐标系——但笛卡尔坐标系仅仅是诸多链接数学与几何映射方式的一种而已,另外还有极坐标(Polar Coordinate System)、圆柱坐标(Cylindrical Coordinate System)、球坐标(Spherical Coordinate System)、齐次坐标(Homogeneous Coordinate System,后续章节会重点提到)等等。接下来让我们看看在该度量体系下如何来描述DICOM中的相关实体。

1.3 坐标系变换 Coordinate Transformations

坐标系变换,Coordinate Transformations,在这里可能表述不够准确。更精确的描述应该指的是不同坐标系,例如极坐标系、圆柱坐标系、球坐标系、齐次坐标等,彼此之间的转换。这里我想表达的意思是利用坐标转换的表达方式(例如下文的余弦向量、欧拉角、四元数)来描述DICOM世界中出现的相关变换,例如平移、旋转、缩放等,他们大多都是发生在笛卡尔坐标系统之下,作为生活在三维世界的生物,我们更习惯于笛卡尔理论体系的描述——亦或因为习惯了笛卡尔体系使得我们认为我们是三维的生物。

1.3.1 方向余弦 Direction Cosine

方向余弦,是解析几何中的一个概念。Wiki描述如下:

In analytic geometry, the direction cosines (or directional cosines) of a vector are the cosines of the angles between the vector and the three coordinate axes. Equivalently, they are the contributions of each component of the basis to a unit vector in that direction.

方向余弦本身是一个向量,vector。用来描述任一空间向量V与坐标系坐标轴间夹角的余弦,可以唯一的确定向量在坐标系下的方向,在现实应用中,方向余弦多半用于描述空间任一两个向量间的夹角。既然是解析几何的概念,我之前也提到过,可以完全用于数学解析的方式来描述:如下所示:

假设v是三维欧式空间的一个向量,v=vxex+vyey+vzez

\begin{eqnarray*} 假设v是三维欧式空间的一个向量,v=v_xe_x+v_ye_y+v_ze_z \end{eqnarray*}
其中 vx,vy,vzv_x,v_y,v_z 分别表示向量 vv在坐标系x,y,z三轴中的坐标,那么该向量与三个坐标轴之间的夹角的方向余弦是:

α=cosa=vxv2x+v2y+v2z−−−−−−−−−√,与x轴的夹角余弦β=cosb=vyv2x+v2y+v2z−−−−−−−−−√,与y轴的夹角余弦γ=cosc=vzv2x+v2y+v2z−−−−−−−−−√,与z轴的夹角余弦

\begin{eqnarray*} α=\cos a=\frac{v_x}{\sqrt{v_x^2+v_y^2+v_z^2}} ,与x轴的夹角余弦\\ β=\cos b=\frac{v_y}{\sqrt{v_x^2+v_y^2+v_z^2}} ,与y轴的夹角余弦\\ γ=\cos c=\frac{v_z}{\sqrt{v_x^2+v_y^2+v_z^2}} ,与z轴的夹角余弦\\ \end{eqnarray*}
如下图所示:

图片摘自:方向余弦维基百科
大家可以打开自己的笔记本,使得屏幕与键盘面垂直放置,取键盘面短的一边为x轴,与屏幕相交的为y轴,屏幕短的一边为z轴,然后取一支笔放在键盘面与屏幕相交的左侧交点(作为坐标原点)处,随意移动铅笔的尾端感觉一下方向余弦的三个分量是如何来确定笔所指的方向。

感受完了我们来介绍一下方向余弦的特性, 所谓的特性往往是特定理论体系其内在所表达的一些规律,但这并不代表背后一定对应着真实的物理客观事实。例如:
- 特性一: cos2α+cos2β+cos2γ=1\cos^2 α + \cos^2 β + \cos^2 γ = 1
- 特性二: 0≤a≤π,0≤b≤π,0≤c≤π0\leq a \leq π,0\leq b \leq π,0\leq c \leq π

特性一我们比较常见,在解析几何、矩阵运算等场合遇到的归一化、单元向量等问题,目的是为了运算方便且在乘法运算过程中确保不改变原始物体的大小。特性二是为了应对三角函数的周期特性而提出的,因为三角函数重复周期为2π,不加限制的话上述特性一解空间有无数个。

1.3.2 欧拉角 Euler Angles

欧拉角是另一种描述坐标系中物体(Wiki中描述为刚性体,Rigid Body,即物体本身不会发生形变)方向的方式,与上述夹角描述法不同的是:欧拉角体系中通过描述三个坐标轴的旋转来确定物体的方位,可以简单的理解为通过旋转坐标系的三个坐标轴(即绕着某个坐标轴旋转)来获得目标方位。
欧拉角的几何描述也可以用类似于方向余弦的三个角度来表示,用xyz表示旋转之前的坐标系,XYZ表示旋转后的坐标系,这里忽略两者的平移,使得两坐标系原点重合。并且去x-y平面与X-Y平面的交线记为N,如下图所示:用α、β、γα、β、γ三个角度可以描述xyz与XYZ之间的关系,其中:
- α表示x轴与N的夹角α表示x轴与N的夹角
- β表示z轴与Z轴的夹角β表示z轴与Z轴的夹角
- γ表示X轴与N的夹角γ表示X轴与N的夹角


图片摘自:Euler Angles维基百科

同样可以用笔记本来感受一下,这次我们放置的不是铅笔,而是我们的手机。坐标轴方位依然采用之前的方式描述,将手机推到笔记本键盘面与屏幕交线的最左端,使得手机短边与笔记本的短边对齐,长边与交线对齐。接下来我们通过三次旋转来将手机旋转到空间任一角度。
- 第一步:绕着z轴逆时针旋转手机αα,
- 第二步:绕着手机短边逆时针旋转ββ,
- 第三步:绕着与手机面垂直的轴逆时针旋转γγ

通过调整三次旋转的角度值,可使得手机旋转到空间任一角度。

下面我们来描述一下欧拉角分类与特性,所谓的分类或特性往往是特定理论体系其内在所表达的一些相似和规律,但这并不代表背后一定对应着真实的物理客观事实
- 根据三个旋转中心轴的选择不同将欧拉角分为内旋(intrinsic,绕旋转后的坐标系XYZ的坐标轴旋转)和外旋(extrinsic,绕原始坐标系xyz坐标轴旋转)两类。——上面演示的手机旋转是一种内旋的方式
- 根据三个轴旋转的先后顺序将欧拉角分为经典欧拉角(Proper or Classical Euler angles,三轴旋转次序为:z−x−z,x−y−x,y−z−y,z−y−z,x−z−x,y−x−yz-x-z,x-y-x,y-z-y,z-y-z,x-z-x,y-x-y,总数为6中,可以用排列组合方式来确定C13C12=3∗2=6 C_3^1C_2^1=3*2=6)和Tait-Bryan欧拉角(Tait-Bryan angles,三轴旋转次序为:x−y−z,y−z−x,z−x−y,x−z−y,z−y−x,y−x−zx-y-z,y-z-x,z-x-y,x-z-y,z-y-x,y-x-z,共6中,也可以用排列组合来计算A33=3∗2∗1=6A_3^3=3*2*1=6)。

1.3.2.1 经典欧拉角 Proper Euler Angle

经典欧拉角根据旋转中心轴的选择不同分为“内旋”和“外旋”。
- 内旋:通俗的来讲,就是每次旋转轴的选取都是从被旋转空间来看,上面我们用手机模拟的示例就是内旋,可以看到每次我的描述都是手机的长边和手机的短边,以及与手机面垂直的轴。这三个的描述都是相对于被旋转的手机来确定的。


- 外旋:外旋要求每次旋转轴都是从初始坐标轴的x-y-z三轴中选取,而不以被旋转物所在空间来作为选择对象。

1.3.2.2 Tait-Bryan欧拉角 Tait-Bryan Angle

Tai-Bryan是应用在航空领域的一种欧拉角表达。通过前文的分类我们可以知道Tait-Bryan角与欧拉角唯一的不同就是旋转轴会围绕三个不同的分别旋转(x−y−z,y−z−x,z−x−y,x−z−y,z−y−x,y−x−zx-y-z,y-z-x,z-x-y,x-z-y,z-y-x,y-x-z),而欧拉角第一次和第三次旋转轴是相同的(z−x−z,x−y−x,y−z−y,z−y−z,x−z−x,y−x−yz-x-z,x-y-x,y-z-y,z-y-z,x-z-x,y-x-y),除此以外Tait-Bryan角也会根据旋转轴是否以被旋转物体为准分为外旋内旋

1.3.3 四元数

在介绍坐标系变换中提及一种复数,或许让人有些费解。不必深究四元数的本质,之所以四元数能够用于表示三维空间的旋转,理论来自于欧拉旋转定理:

在运动学里,欧拉旋转定理(Euler’s rotation theorem)表明,在三维空间里,假设一个刚体在做一个位移的时候,刚体内部至少有一点固定不动,则此位移等价于一个绕着包含那固定点的固定轴的旋转。这定理是以瑞士数学家莱昂哈德·欧拉命名。于1775年,欧拉使用简单的几何论述证明了这定理。摘自《欧拉旋转定理 维基百科》
【备注】:科学是新时代的一种普适世界观,其信念体系内部的各种定理,都是由归纳演绎而来,被要求至少能够符合现在我们观察到的经验事实,并且能够预测未来和反推过去。这也正是科学理论不同于传统“迷信”的地方,然而每一个正确的理论(至少现阶段是正确的)都经历了很长时间的观察确认,然后再辅以简洁的理论抽象来表达。对于每一个定理的学习和掌握需要自己去亲自体会和尝试,对于理论的证明最好也阅读体会一下当时作者巧妙的构思,但不必深究其为何会有如此“巧妙”——那多半是来自于1%的灵感。

结合“欧拉旋转定理”和我们之前介绍的余弦向量、欧拉角,已经体会到通过三个旋转(α、β、γα、β、γ)可获得三维空间任一方向,前提是原始坐标系xyz与目标坐标系XYZ的原点重合。那么在此基础上我们再加上原点的位移,即可实现空间的任何变换。——这四个值就可以组成一个四元数
至于为什么四元数会在大多数3D程序中普及流行,是因为与传统的旋转矩阵表达方式相比,四元数占用空间更小,更利于插值,另外可有效避免万向锁问题。【备注】:前文介绍的余弦向量和欧拉角都可以用矩阵的方式来表达。

下面我们简单看一下四元数理论体系的特性,体会一下他如何能够表示三维空间旋转。四元数一般可以表示为:

a+bi+cj+dk,其中a,b,c,d是系数,i,j,k是虚数单位,具有如下特性:i2=j2=k2=ijk=−1

a+bi+cj+dk,其中a,b,c,d是系数,i,j,k是虚数单位,具有如下特性:\\ i^2=j^2=k^2=ijk=-1\\
四元数的乘法可以用下表表示:

这里要注意的是四元数的乘法不符合交换律,上表中 i∗j=ki*j=k而 j∗i=−kj*i=-k。之所以四元数理论体系不满足乘法交换律是因为四元数的目的( 四元数wiki)是为了定义空间旋转,在欧式空间中从 ii轴方向旋转到jj轴方向与从 jj轴方向旋转至ii轴所表示的过程是不同的,大家可以用右手坐标系的方式来模拟一下。

1.3.4 DICOM世界的方向余弦实例

上文介绍了诸多描述坐标系变换的方法,接下来我们看一下DICOM标准中的关于方向余弦的真实案例。在DICOM标准中通过Image Position(Patient)-(0020,0032)和Image Orientation(Patient)-(0020,0037)两个字段来确定患者Patient的空间定位(详情可阅读上一篇博文DICOM世界观●开篇),在标准PS3.17中通过示意图的方式给出了形象的解释。为了博文排版方便,这里我组合了相关示意图。


图中给出了从整体、手部、足部等角度来看的方向定位,每一组定位中都如是来定义患者坐标系:

X轴正方向:从右(right)指向左(left)Y轴正方向:从前胸(anterior)指向后背(posterior)Z轴正方向:从脚底(foot)指向头顶(head)

X轴正方向:从右(right)指向左(left)\\ Y轴正方向:从前胸(anterior)指向后背(posterior)\\ Z轴正方向:从脚底(foot)指向头顶(head)\\
接下来我们看一下具体如何来确定图像的方位。默认情况下图像采集(这里以单层一幅512*512的图像为例)的位置关系如下:

彩色坐标轴代表患者在空间的定位,按照上面Patient坐标系的方向定位来看,假设你正在用放在水平桌面上的一台笔记本阅读本博文,且笔记本的屏幕垂直于水平桌面的话,可以想象出此刻患者是平躺在该桌面,头在电脑屏幕里面,脚底就在你的屏幕上。灰色部分代表大小为512*512(这个数字比较常见,在医学数字采集图像中图像范围通常是这个大小)采集像素区域。为了方便描述图像的每个像素,我们会给图像也绑定一个坐标系:平行于患者X轴从左到右是图像的X轴,即图像的行的方向;平行于患者Y轴从上到下是图像的Y轴,即图像的列的方向。所以通常我们在DICOM浏览器中都会看到图像上标记R/L/A/P等字样,其目的就是要告知你上图中的坐标定位,如下图是某个患者的三视图的定位描述,

从图中下方的Image Orientation余弦向量的数值来看,三个视图都是标准的切片,即都平行于患者三维空间的某一个平面。例如上图:
- 左子图图像四周标记为(R->L,A->P)余弦向量为(1,0,0)和(0,1,0)说明图像的X轴平行于患者X轴,图像的Y轴平行于患者的Y轴,说明该图像是平行于患者的X-Y平面来采集获得的;——这就是我们常听到的横截面或横截位
- 中间子图图像四周标记为(A->P,H->F)余弦向量为(0,1,0)和(0,0,-1)说明图像的X轴平行于患者Y轴,图像的Y轴平行于患者的Z轴但方向相反(从头指向脚),说明该图像是平行于患者的Y-Z平面采集获得的;——这就是我们常听到的矢状面或矢状位
- 右子图图像四周标记为(R->L,H->F)余弦向量为(1,0,0)和(0,0,-1)说明图像的X轴平行于患者X轴,图像的Y轴平行于患者的Z轴但方向相反(从头指向脚),说明该图像是平行于患者的X-Z平面采集获得的;——这就是我们常听到的冠状面或冠状位

下面我们看一个稍微复杂一些的示例,左图就是上一幅图中的右子图,是一个平行于患者X-Z平面的冠状面采集图像;右图与左图很像,也肯定是冠状面(一种旋转过的冠状面)采集图像;但是其余弦向量略有不同,分别为(1,0,0)和(0,0.132256,-0.991215),如下所示:


这里我们详细分析一下右子图的余弦向量(1,0,0)和(0,0.132256,-0.991215),令 α=(1,0,0)α=(1,0,0)和 β=(0,0.132256,−0.991215)β=(0,0.132256,-0.991215),
- 由 αβ=(1,0,0)⋅(0,0.132256,−0.991215)=0αβ=(1,0,0)·(0,0.132256,-0.991215)=0说明右子图的行方向与列方向垂直,也就说明像素采集的区域是一个矩形区域而不是一个平行四边形。
- 由 α=(1,0,0)α=(1,0,0)可知,像素采集区域的行方向平行于患者的X轴;
- 由 β=(0,0.132256,−0.991215)β=(0,0.132256,-0.991215)可知,像素采集区域的列方向与患者的Y轴夹角为 arccos(0.132256)≈82.5°arccos(0.132256)≈82.5°,余患者Z轴的夹角为 arccos(−0.991215)≈172.5°arccos(-0.991215)≈172.5°即

所以DICOM浏览器四周标注的符号为R->L,AH->PF。正常的话应该是R->L,H->F,此时AH与PF表示当前采集平面与X-Z标准平面有一定的夹角,相当于患者此刻平躺将上半身整体前倾做仰卧起坐的姿态。

总结:

至此DICOM世界观 第一章 坐标系统已经介绍完了,由于篇幅原因没有对每一个坐标系变换理论进行详细的展开,有兴趣的话大家可以点击文中的参考链接进行详细学习。通过该章节的介绍我们已经构建了DICOM世界中的测量基准尺度和换算理论体系,后续所有的博文都会以此为基础进行展开,敬请期待。

更正1:2017.12.02,更正矢状面与冠状面的英文单词,矢状面-Sagittal,冠状面-Coronal

作者:zssure@163.com
时间:2017-03-12

DICOM世界观·第一章 坐标系统相关推荐

  1. DICOM世界观·第二章:[1]像素 Pixel (Picture Element)

    背景: 原本该小节想直接套用上世纪一片著名论文<A Pixel Is Not A Little Square>作为标题,怎奈英文原文信息量较大,内部蕴含了很多关于采样定理的信息论知识,虽然 ...

  2. 「第一章」安全世界观

    批注[--] 表示他人.自己.网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写过程中无法记录所有的URL ...

  3. Dcmtk在PACS开发中的应用(基础篇) 第一章 与影像设备互连 作者 冷家锋

    Dcmtk在PACS开发中的应用 作者:冷家锋  声明:引用时请注明出处,如需商业引用,请与作者联系. 第一章 与影像设备互连 PACS(PictureArchiving and Communicat ...

  4. 辩证唯物主义 历史唯物主义 第一章绪论 一 唯物主义和唯心主义

    第一章绪论 马克思主义是革命的工人阶级的思想武器.在马克思主义的完整的学说中,包括三个组成部分:哲学.政治经济学.科学社会主义.辩证唯物主义和历史唯物主义是马克思主义哲学,是马克思主义的全部学说的哲学 ...

  5. vtk教程第一章介绍

    可视化-"2:用视觉术语解释或将其转化为视觉形式的行为或过程",<韦伯斯特第九部新大学词典>收录. 1.1什么是可视化 想象是我们日常生活的一部分.从天气图到娱乐行业令 ...

  6. 《跟旺旺老师学Java》_第一章Java简介与JDK部署_第一部分Java是什么

    第一章:Java简介与JDK部署 第一部分:java是什么 "是白云,是瀑布,是海滩,不---,都不是,这是太原大理石二厂生产的景云牌大理石"看到这个标题,脑海中莫名的闪过这句小时 ...

  7. 王道考研 计算机网络笔记 第一章:概述计算机网络体系结构

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 后续章节将陆续更新- 目录 一.概念.功能.组成.分类 1. 计算机网络的概念 2. 计算机网络功能 3. 计算 ...

  8. 计算机组成原理-第一章

    计算机组成原理第一章概述 一.计算机系统概述 1. 定义 2.分类 3.计算机系统的抽象层次 二.计算机系统的组成 1.计算机系统的硬件组成 1.1冯.诺依曼计算机(重点) 1.2现代计算机结构 1. ...

  9. 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...

    全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...

  10. Python3-Cookbook总结 - 第一章:数据结构和算法

    第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...

最新文章

  1. 解决plsql中文显示问号(???)问题
  2. Swing如何正确的处理界面中的线程(EDT)
  3. Comet OJ(Contest #8)-D菜菜种菜【树状数组,指针】
  4. python矩阵中插入矩阵_Python | 矩阵的痕迹
  5. mysql创建表时外连接_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)_MySQL...
  6. 06_LR和最大熵模型_统计学习方法
  7. 百度C2C对决淘宝的两把利器
  8. 加一条平行于y轴的直线_Hepco海普克应用案例—直线V型滚轮导轨广泛应用于多轴机械手...
  9. java visualvm 内存泄露_如何使用VisualVM检测Java内存泄漏
  10. 五邑大学计算机学院奖学金,关于开展2019-2020学年度学生综合测评和奖学金评定工作的通知...
  11. 新南威尔士大学计算机博士申请,unsw大学研究生
  12. [linux] mv: cannot move $ to $: Directory not empty
  13. linux创建用户命令-----useradd
  14. 王微:愤怒,是我创业初始的驱动力
  15. Python Web 框架:Tornado
  16. 常见三维文件格式之IGES
  17. 烈火如歌手游怎么在电脑上玩?烈火如歌安卓模拟器电脑版教程
  18. Reactive Streams规范
  19. 无线技巧:学会设置无线上网猫以及网卡
  20. 64位Win7环境下,C#无法打开osk.exe解决方法

热门文章

  1. redhat8.2-docker安装及部分镜像下载
  2. JAVA中interface接口的使用
  3. 除了框架,前端面试还问什么
  4. 东芝硬盘数据丢失怎么恢复
  5. 计算机竞赛 自主招生,想参加自主招生,五大学科竞赛如何选取?
  6. FTP和FXP的区别
  7. collections.Counter 用法
  8. 横沥东莞注塑工艺需要考虑的7个因素
  9. 中国农业大学计算机专硕2019分数线,2019中国农业大学生物学院硕士生复试分数线(北京)...
  10. NTRIP传输相关,上篇SNIP NTRIP Caster学习笔记扫盲补充