vtkNIFTIImageReader读写方位以及原点信息

本文介绍了如何使用vtkNIFTIImageReader读取NIFTI体数据并获取QFormMatrix中的方向和原点信息,同时探讨了RAS和LPS坐标系的转换,以及如何将LPS坐标系信息写回NIFTI文件中。
摘要由CSDN通过智能技术生成

        使用vtkNIFTIImageReader读取体数据为vtkImageData时只会携带spacing信息,方向和原点信息不会写入,需要获取QFormMatrix进行解析。

1、方向及原点读取
	vtkSmartPointer<vtkNIFTIImageReader> niiReader = vtkSmartPointer<vtkNIFTIImageReader>::New();
	niiReader->SetFileName(path.c_str());
	niiReader->Update();
	vtkMatrix4x4* transform_matrix = niiReader->GetQFormMatrix();

        获取4*4矩阵后使用GetElement(int i, int j)获取索引值,前三列为三个轴的方向,最后一列为偏移量也就是数据原点位置。

        vtk里面存储NII默认为RAS坐标系,dicom坐标系以及主流看图ITK-Snap等软件采用的LPS坐标系,所以原点等信息需要换算一下。

        

                                                   图一:dicom坐标系

2、方向及原点写入

        例:LPS坐标系信息写入

  vtkSmartPointer<vtkMatrix4x4> matrix = vtkSmartPointer<vtkMatrix4x4>::New();  // 坐标系设为LPS
    const double matrix_elemnt[16] = {
       -1,  0, 0, origin[0] * -1,
        0, -1, 0, origin[1] * -1,
        0,  0, 1, origin[2] * 1,
        0,  0, 0, 1
    };
    matrix->DeepCopy(matrix_elemnt);

    vtkSmartPointer<vtkNIFTIImageWriter> niiWriter = vtkSmartPointer<vtkNIFTIImageWriter>::New();
    niiWriter->SetFileName(file_name.c_str());
    niiWriter->SetInputData(data);
    niiWriter->SetQFormMatrix(matrix);
    niiWriter->Write();

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混元太极马保国

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值