C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法

文章介绍了医学影像处理中定位线的概念,它是不同切面影像的投影交线。通过C#代码展示了如何创建图像结构、判断是否可以画定位线以及计算交线点的算法流程,这些是用于医生判断病灶位置的关键步骤。此外,还提供了PACS医学影像处理系统的教程目录。

1.定位线概念:某个方位的影像在另一个方向的影像上的投影相交线,例如横断面(从头到脚的方向)在矢状面(从左手到右手)上的影像投影面交线。

举个例子:右边的是MR(核磁共振)的某一帧切片,这是从头开始扫描,扫描到眼睛这个位置,

而左边图像是从左手到右手的扫描切片,那么右边图像的位置就恰好在左边图像的眼睛的位置,用红线标出的位置则为定位线,一般用于医生参考病灶在矢状面、冠状面和横断面的具体方位。

2.检查设备示意图

在笛卡尔空间直角坐标系中,Y 右肩膀到左肩膀,X 后背到前胸,Z 足到头

3.算法流程

 4.代码实现:

创建图像结构

public FrameGeometry(DicomDataset image)
            : this(image.GetString(DicomTag.FrameOfReferenceUID),
                  image.GetValues<double>(DicomTag.ImagePositionPatient),
                  image.GetValues<double>(DicomTag.ImageOrientationPatient),
                  image.GetValues<double>(DicomTag.PixelSpacing),
                  image.GetSingleValue<int>(DicomTag.Columns),
                  image.GetSingleValue<int>(DicomTag.Rows))
        {
            // TODO: 
           FrameOfReferenceUID:图片UID
           ImagePositionPatient:病人方向
           ImageOrientationPatient:图片方向
           PixelSpacing:像素间距
           Columns:宽度
           Rows:高度

        }

判断是否符合定位条件:

 /// <summary>/// 判断是否可以画定位线
        /// </summary>
        /// <param name="sourceFrame">源图像结构</param>
        /// <param name="destinationFrame">目标图像结构</param>
        /// <returns></returns>
        public static bool CanDrawLocalizer(FrameGeometry sourceFrame, FrameGeometry destinationFrame)
        {
            // 检查图像结构
            if (sourceFrame == null) return false;
            if (destinationFrame == null) return false;

            // 如果两个帧中的任何一个不是空间坐标系,则无法定位
            if (sourceFrame.Orientation == FrameOrientation.None || destinationFrame.Orientation == FrameOrientation.None) return false;
            // 只有正交图像才能绘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值