跳转到内容

MINC/软件开发/EZMINC/ITK集成

来自维基教科书,开放的书籍,开放的世界

更好的 MINC1/2 对 ITK 的支持

[编辑 | 编辑源代码]

如果您对 ITK 提供的仅 MINC2 接口不满意,或者需要访问 MINC 文件属性,或者想要读取/写入 4D 数据,请使用 EZMINC 提供的 ITK 接口

使用 ITK 支持编译 EZMINC,请参阅 [EZMINC_安装] 如果您没有使用 ITK 插件(目前不推荐使用插件),请将以下代码添加到您的 ITK 程序中以将其“mincify”

 #include "itkMincImageIOFactory.h" 
 #include "itkMincImageIO.h"
 //....
 int main(int argc,char **argv)
 {
   //registering the MINC_IO factory
   itk::ObjectFactoryBase::RegisterFactory(itk::MincImageIOFactory::New()); 
   //....

使用 DTI 数据的示例

[编辑 | 编辑源代码]

来自示例中的 itk_dti.cpp 的代码

使用 minc XFM 文件

[编辑 | 编辑源代码]
  • 应用变换

来自 itk_resample.cpp 的代码

#include "itkMincImageIOFactory.h"
 #include "itkMincImageIO.h"
 #include "minc_helpers.h"

 typedef itk::ResampleImageFilter<minc::image3d, minc::image3d> FilterType;
 typedef minc::XfmTransform  TransformType;
 //...
 TransformType::Pointer transform = TransformType::New();
 //reading a minc style xfm file
 transform->OpenXfm(xfm_f.c_str());
 transform->Invert();
 filter->SetTransform( transform );
 //...
  • 将仿射变换存储在 .xfm 文件中
#include <minc_helpers.h>
 //...
 itk::AffineTransform<double,3>  m_AffineTransform;
 //...
 minc::write_linear_xfm(output_xfm, m_AffineTransform->GetMatrix(), m_AffineTransform->GetOffset());
  • 从 .xfm 文件中读取仿射变换
itk::AffineTransform<double,3>  m_AffineTransform;
 //...
 itk::Matrix<double,3,3> rotation;
 itk::Vector<double,3> translation;
 read_linear_xfm(input_xfm,rotation,translation);
 //...
 m_AffineTransform.SetOffset(translation);
 m_AffineTransform.SetMatrix(rotation);
  • 读取/写入 .tag 文件
std::vector<int> labels;
  std::vector<itk::Point<double>,3> tags;
  read_tags(tags, labels, input_tag);
  //....
  write_tags(tags, labels, ouput_tag);
华夏公益教科书