DICOM医学图像读取涉及到的医学坐标体系
这篇博文简单介绍一下在处理luna16提供的医学图像中涉及到的关于坐标部分的知识,水平有限,只是个人理解,如果有误,还望多多指教。
世界坐标体系:
如图一左图所示,整个模型只有一个世界坐标来定义位置与方向,在这个坐标系中,整个模型被定位,比如仪器的各个部分,病人。
解剖学坐标体系:
如图一中图所示,这个坐标系包括3个位面:
横断面:与地面平行,上下分离人体(绿色);
矢状面:垂直地面,左右分离人体(红色);
冠状面:垂直地面,前后分离人体(紫色);
本文以LPS为坐标轴。
图像坐标体系:
如图一右图所示,规定图片左上角为坐标原点,向右为i轴正方向,向下为j轴正方向,向后为k轴正方向。
在DICOM标准中通过Image Position(Patient)-(0020,0032)和Image Orientation(Patient)-(0020,0037)两个字段来确定患者Patient的空间定位.
Image Position:表示图像的左上角在空间坐标系中的x,y,z坐标,单位是毫米.
Image Orientation:表示图像坐标与解剖学坐标体系对应坐标的夹角余弦值.
要说明Image Orientation的含义,要结合解剖学坐标体系和图像坐标体系来说明。Orientation有6个参数。(下边统一以xyz表示图像坐标体系坐标,SIAPLR表示解剖学坐标体系坐标)前三个为x轴分别与LPS的夹角余弦,后3个为y轴与LPS的夹角。如果6个参数里边只有0和1或-1,则图像一定与解剖学坐标体系某个平面平行;如果出现小数,则表示不是完全是3个位面中的一个,会有一定夹角。举例来说明:
1.比如Orientation为(1,0,0,0,1,0)表示x轴与L夹角0°,与PS夹角90°;y轴与P夹角0°,与LS夹角90°。表示一个背对着观察者的患者,观察者从上到下看。
2.比如Orientation为(1,0,0,0,-1,0)表示x轴与L夹角0°,与PS夹角90°;y轴与P夹角180°,与LS夹角90°。表示一个背对着观察者的患者,观察者从下到上看。
3.比如origin为(1,0,0,0,9912,-0.1322)表示x轴与L夹角0°,与PS夹角90°;y轴与L夹角90°,与P夹角7.6°(arccos(0.9912)=7.6°),与S夹角97.6°(arccos(-0.1322)=97.6°)。表示患者躺在病床上,床有点前倾(即身体有些前倾),观察者从患者脚处正着观察患者。该博文有医学图片,帮助更深刻理解。
在将世界坐标转换为图像坐标时,会涉及到两个参数, origin和spacing:
origin = numpy.array(itk_img.GetOrigin())
spacing = numpy.array(itk_img.GetSpacing())
将需要转换的世界坐标减去origin,再除以spacing就是对应的图像中的坐标。
详细说一下origin和spacing:
origin表示图像坐标系原点在世界坐标系中的位置单位mm,spacing表示每个像素的实际距离间隔,单位也是mm;所以结节中心坐标减去origin再除以spacing,就是对应像素在图像坐标系中的位置.
总结一下:Orientation表示的是图像坐标系与解剖学坐标体系的关系。origin和spacing这两个参数将世界坐标转换为相应的图像坐标,即求出结节中心在图像中的位置。
参考:DICOM世界观·第一章 坐标系统
坐标体系与医学图像简介