ITK与VTK数据转换

引言

ITK和VTK都是kitware推出的强大开源库,前者专注于图像分析和处理,后者专注于三维显示和三维模型操作。在实际应用的过程中,常常需要将两个库中的图像数据进行互传,实现二者之间的无缝连接。

ITK/VTK图像数据差别

ITK与VTK的图像数据坐标的原点都在图像的左下角,但是在读取图像时,二者的存储方式不同。以常用的dicom图像为例,图像的第一个像素定义为左上角。当使用VTK进行读取时,VTK将图像的第一个像素存储在左下角,因此,读取的图像是沿着Y轴反转的。而ITK则没有翻转的过程,其按照图像像素排列的原始顺序读入图像,然后将坐标原点移动到图像的左下角。二者图像数据读取方式的不同,导致二者之一的图像必须进行翻转,才能与另一个匹配。

常用类

ITK/VTK数据转换的类均存放在ITKVTKGlue模块中。
将ITK转化为VTK图像使用类 itkImageToVTKImageFilter,具体的示例如下:
  typedef itk::Image<itk::RGBPixel<unsigned char>, 2> ImageType;
  typedef itk::ImageFileReader<ImageType>             ReaderType;
  typedef itk::ImageToVTKImageFilter<ImageType>       ConnectorType;
 
  ReaderType::Pointer reader = ReaderType::New();
  ConnectorType::Pointer connector = ConnectorType::New();
 
  reader->SetFileName(argv[1]);
  connector->SetInput(reader->GetOutput());
 
  vtkSmartPointer<vtkImageActor> actor =
    vtkSmartPointer<vtkImageActor>::New();
#if VTK_MAJOR_VERSION <
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值