MINC/软件开发/EZMINC/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());
//....
来自示例中的 itk_dti.cpp 的代码
- 应用变换
来自 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);