医影在线

搜索
查看: 851|回复: 1
打印 上一主题 下一主题

pacs中 MR 定位线 分析

[复制链接]
跳转到指定楼层
楼主
发表于 2014-7-29 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一般来说, 对于大部分 CT 图像, 定位图像的Tag 值比较容易识
别, 在  General Image: Image Type(0x8, 0x8)属性里有一个字段, 声明为 "Localizer", 指
明了定位图像的信息

但是对于某些特殊图像或者 MR 图像, 这个问
题就比较复杂。
MR 图像中, (0x20, 0x52) Frame of Reference UID 或者(0x08,
0x1140)Referenced Image Sequence , 这两个属性包含了图像引用的定
位图位置, 表示这个序列的第几幅图像是定位图像。这两个 Tag 可以
同时出现, 也可以只出现其中的一个。 (0x20, 0x37)Image Orientation, 定
义了定位图像的方向, 分别为图像第一行、第一列的方向矢量。这里需
要解释的是, 定位图实际上只是一个相对的概念, 定位图在确定一张
图像位置的同时, 也被这张图像所定位。

在实践中, 我发现定位图可以这样判断:
1) 对于CT 图像尽可以使用 Image Type 中的字段来判断。而对于
其他图像中, Frame of Reference 属性或Reference Image Sequence 属
性所引用的 UID 是某个图像的UID, 那么该图像就是定位图。
2) 如果系列中定位图多于一张, 那么上述 2 个属性中引用的UID
就会是一个不指向任何图像的 UID。在这种情况下, 除了CT, 其他图
像的定位图实际上是无法知道的。幸好定位图就是一个相对、相互的
概念, 那么我们只需要老老实实将指向同一 UID 的图像两两计算定位
线( 无意中我们实现了任意图像间定位线的求解) 。

3.2 计算单幅图像定位线的位置
计算定位线的位置涉及 2 幅图像: 定位图像和当前图像。知道应
该计算哪 2 张图像的定位线后开始计算定位线。
那么现在以 CT 为例。在Image Plane 模块中包含了图像左上角的
坐标, 还有第一行、第一列的方向矢量。注意这里的坐标不是像素坐
标, 在 CT 图像中有pixel spacing 这个属性, 该属性定义了图像每像素
所对应的大小 ( 毫米) , 这个属性在后面计算图像边界时有用。

首先第一行、第一列方向矢量叉乘 , 便是图像平面的方向矢量 , 假
设为d(dx,dy,dz), 左上角坐标即为平面方程中的常量 , 假设为const(A,
B, C)。这样首先得到第一张图像平面的方程 :
dx( x- A ) +dy( y- B) +dz ( z- C) =0

第2 张图像 , 我们先找出4 条边界的直线方程 ( 有第一行、第一列
的方向矢量及左上角的坐标 , 以及像素大小这是很容易的 ) 。然后根据
图像的大小 , 计算出4 个顶点的坐标。接下来就是计算当前图像的 4
条边界线与第一幅图像的交点了 , 并纪录有效的交点( 参考 4 个交点,
即可做出判断 ) 。那么, 现在就变成了解四组方程组。每组类似于 :
dx( x- A ) +dy( y- B) +dz ( z- C) =0
( x- A' ) /dx'=( y- B' ) /dy=( z- C' ) /dz


现在我们得到的交点是实际坐标的 , 需要转换为像素坐标( 我们
已知像素大小 , 及左上角坐标) , 绘图时 , 连接这2 个交点, 便是定位
线。
另外需要注意的是 , (0x20, 0x32)Image Position, 定义了图像相对
于原点的坐标 , 而且这个原点只是个参考点 , 不一定需要在图像区域
内。如果 DICOM 信息中给出了(0x20, 0x32)和 (0x20,0x32) , 由 (0x20,
0x32)和(0x20, 0x32 ) 就决定了图像平面的方程 , 联解相应的2 个平面
方程, 即得到定位线方程。不过注意解方程的时候 , 大部分情况下会形
成比较稀疏的矩阵 , 要充分利用这个特点。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 赞同赞同 反对反对
回复

使用道具 举报

2#
发表于 2014-7-29 17:00 | 只看该作者
更多操作▼
复制链接浏览器收藏pacs中 MR 定位线 分析
一般来说, 对于大部分 CT 图像, 定位图像的Tag 值比较容易识
别, 在  General Image: Image Type(0x8, 0x8)属性里有一个字段, 声明为 "Localizer", 指
明了定位图像的信息

但是对于某些特殊图像或者 MR 图像, 这个问
题就比较复杂。
MR 图像中, (0x20, 0x52) Frame of Reference UID 或者(0x08,
0x1140)Referenced Image Sequence , 这两个属性包含了图像引用的定
位图位置, 表示这个序列的第几幅图像是定位图像。这两个 Tag 可以
同时出现, 也可以只出现其中的一个。 (0x20, 0x37)Image Orientation, 定
义了定位图像的方向, 分别为图像第一行、第一列的方向矢量。这里需
要解释的是, 定位图实际上只是一个相对的概念, 定位图在确定一张
图像位置的同时, 也被这张图像所定位。

在实践中, 我发现定位图可以这样判断:
1) 对于CT 图像尽可以使用 Image Type 中的字段来判断。而对于
其他图像中, Frame of Reference 属性或Reference Image Sequence 属
性所引用的 UID 是某个图像的UID, 那么该图像就是定位图。
2) 如果系列中定位图多于一张, 那么上述 2 个属性中引用的UID
就会是一个不指向任何图像的 UID。在这种情况下, 除了CT, 其他图
像的定位图实际上是无法知道的。幸好定位图就是一个相对、相互的
概念, 那么我们只需要老老实实将指向同一 UID 的图像两两计算定位
线( 无意中我们实现了任意图像间定位线的求解) 。

3.2 计算单幅图像定位线的位置
计算定位线的位置涉及 2 幅图像: 定位图像和当前图像。知道应
该计算哪 2 张图像的定位线后开始计算定位线。
那么现在以 CT 为例。在Image Plane 模块中包含了图像左上角的
坐标, 还有第一行、第一列的方向矢量。注意这里的坐标不是像素坐
标, 在 CT 图像中有pixel spacing 这个属性, 该属性定义了图像每像素
所对应的大小 ( 毫米) , 这个属性在后面计算图像边界时有用。

首先第一行、第一列方向矢量叉乘 , 便是图像平面的方向矢量 , 假
设为d(dx,dy,dz), 左上角坐标即为平面方程中的常量 , 假设为const(A,
B, C)。这样首先得到第一张图像平面的方程 :
dx( x- A ) +dy( y- B) +dz ( z- C) =0

第2 张图像 , 我们先找出4 条边界的直线方程 ( 有第一行、第一列
的方向矢量及左上角的坐标 , 以及像素大小这是很容易的 ) 。然后根据
图像的大小 , 计算出4 个顶点的坐标。接下来就是计算当前图像的 4
条边界线与第一幅图像的交点了 , 并纪录有效的交点( 参考 4 个交点,
即可做出判断 ) 。那么, 现在就变成了解四组方程组。每组类似于 :
dx( x- A ) +dy( y- B) +dz ( z- C) =0
( x- A' ) /dx'=( y- B' ) /dy=( z- C' ) /dz


现在我们得到的交点是实际坐标的 , 需要转换为像素坐标( 我们
已知像素大小 , 及左上角坐标) , 绘图时 , 连接这2 个交点, 便是定位
线。
另外需要注意的是 , (0x20, 0x32)Image Position, 定义了图像相对
于原点的坐标 , 而且这个原点只是个参考点 , 不一定需要在图像区域
内。如果 DICOM 信息中给出了(0x20, 0x32)和 (0x20,0x32) , 由 (0x20,
0x32)和(0x20, 0x32 ) 就决定了图像平面的方程 , 联解相应的2 个平面
方程, 即得到定位线方程。不过注意解方程的时候 , 大部分情况下会形
成比较稀疏的矩阵 , 要充分利用这个特点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

快速回复 返回顶部 返回列表