医学影像处理软件之Image Orientation相关介绍

医学影像处理 同时被 2 个专栏收录
42 篇文章 6 订阅
20 篇文章 1 订阅


医学影像 Image Orientation

1.      Image Orientation:

        如之前在博文《DICOM中几个判断图像方向的tag》中提到的ImageOrientation(0020,0037)表示的是图像第一行和第一列相对于病人的方向。而在DICOM坐标系是根据病人的方向来确定的,其中X轴正向指向病人的左侧,Y轴正向指向病人的背部,Z轴正向指向病人的头部。

        在医学影像处理软件中,最常见的是将导入系统的MRI/CT序列以三视图的形式进行呈现,分别为轴状位(Transverse/Axisplane)、冠状位(Coronal/Frontal plane)和矢状位(Sagittal plane)。以下图显示的是这三个方位对应的切面方位,以及在成像过程中对应的坐标系。

 

图1 成像坐标系

图2 三视图

2.     Software and Coding

 

图3 医学软件中标准三视图与MPR变换后的图像方位

       如图3所示为某一款医疗影像软件在载入一个患者头部MRI序列后,三个不同视图中所标注的图像方位图。可以判断出这三个视图依次为轴状位(AP-LR)、矢状位(HF-AP)、冠状位(HF-LR)。

       在网上找到的计算视图中方位的程序如下:

char *
ImageOrientationLayer::ComputeOrientation(Vector3D vector)
{
        char *orientation=new char[4];
        char *optr = orientation;
        *optr='\0';

        char orientationX = vector.getX() < 0 ? 'R' : 'L';
        char orientationY = vector.getY() < 0 ? 'A' : 'P';
        char orientationZ = vector.getZ() < 0 ? 'F' : 'H';

        double absX = fabs(vector.getX());
        double absY = fabs(vector.getY());
        double absZ = fabs(vector.getZ());

        int i;
        for (i=0; i<3; ++i) {
                if (absX>.0001 && absX>absY && absX>absZ) {
                        *optr++=orientationX;
                        absX=0;
                }

                else if (absY>.0001 && absY>absX && absY>absZ) {
                        *optr++=orientationY;
                        absY=0;
                }

                else if (absZ>.0001 && absZ>absX && absZ>absY) {
                        *optr++=orientationZ;
                        absZ=0;
                }

                else break;

                *optr='\0';
        }

        return orientation;
}

结合到软件开发中,则首先需要在窗口的top,bottom,left,right中间找到四个单位向量,(0,1,0),(0,-1,0),(-1,0,0),(1,0,0),将其对应的窗口坐标点转化为世界坐标系的点,求出与(0,0,0)所对应的世界坐标原点的四个向量并且归一化,作为上述ComputeOrientaton函数的参数传进去,即可得到当前图像在世界坐标系下的方位。

  • 4
    点赞
  • 0
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值