dcom 和 mhd文件中的坐标系转换(11.10)

dcom 和 mhd文件中的坐标系转换(11.10)

在做一些CT图像处理的时候,经常会用到dcom和mhd类型的文件。他们是CT图像的存储形式,在对这两种类型的文件进行一些3D cube截取等操作的时候经常会遇到的问题是坐标系的转化。

以LUNA数据集为例(kaggle比赛中一个关于肺结节识别的项目),经常需要根据数据集中所提供的肺结节的坐标信息来定位到CT图像中该结节的真实位置。LUNA数据集中所提供的结节位置如下图所示:

图1

图中可以看到结节的位置的坐标,该坐标为世界坐标。当我们把CT 图像通过simpleitk包读取并转换成数组格式后,实际上图像已经从世界坐标系转换成了图像坐标系。相应的,如果我们想准确的在数组格式的CT图像中准确的找到结节的坐标位置和大小,则需要将上图的结节世界坐标系也转换成图像坐标系的值,然后再在数组中的相应位置进行截取。

要完成坐标系的转换,需要用到CT图像中的两个参数,origin(CT图像在世界坐标系中的原点,即CT图像左上角顶点的坐标)和spacing(CT图像中在x, y, z轴上两个像素间的单位距离, 单位为mm)。 origin 和 spacing的获取方式代码为:

origin = numpy.array(itk_img.GetOrigin())

spacing = numpy.array(itk_img.GetSpacing())

有了上面的两个值,便可以进行世界坐标系到图像坐标系的转换了,具体方法为:

像素坐标 = (世界坐标 - origin)/ spacing

与此同时,图1中所对应的直径也应该做相应的变换,具体方法为

像素直径= diameter / spacing

这里的spacing要结合具体的情况取不同的值,因为有可能x,y, z轴的像素点距离是不同的,所以我们在截取不同的方向上的肺结节的时候,所对应的spacing应该按照其相对应的数值进行操作。

 

注:有一个需要注意的地方是,我们所获取到的origin 和 spacing的值,通常情况下所对应的坐标系为 x, y, z. 但是在通过simpleitk所生成的CT 数组中,它所对应的坐标系为 z, y, x. 这需要我们在做结节截取的时候注意不要弄错了方向。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值