如何使用ITK-VTK更正图像的方向

时间:2013-05-03 10:02:56

标签: vtk itk

我是VTK ITK的初学者,我正在尝试用ITK阅读DICOM系列并使用VTK进行显示,但我将图片颠倒过来,我试图用ITK读取单个图像(JPG),使用VTK读取视觉用户同样的问题,所以我有想法在photoshop上处理图像,即我应用于原始图像旋转(工作区域的垂直对称),我用ITK读取并用VTK显示,图像显示在正确的方向,事实上ITK保持图像的方向,但问题是在VTK,它是颠倒显示图像,我在互联网上搜索我没有找到解决方案或方法甚至没有想法,我在很多论坛遇到了同样的问题,但是没有回复,我依靠你的帮助,我无法应用任何图像处理来找到解决这个问题的方法。

请帮忙!提前谢谢你

3 个答案:

答案 0 :(得分:4)

理想情况下,您应该在VTK中重新定位相机,使其适合医学图像可视化。 (VTK中的默认摄像头使用计算机图形约定。)

如果您想快速入侵,可以在ITK中复制粘贴以下代码:

    FlipFilterType::Pointer flipperImage = FlipFilterType::New();
bool flipAxes[3] = { false, true, false };
flipperImage = FlipFilterType::New();
flipperImage->SetFlipAxes(flipAxes);
flipperImage->SetInput( image );
flipperImage->Update();

答案 1 :(得分:2)

我使用快速方式设置方向:

imageActor->SetOrientation(180,0,0);

无需添加过滤器。

答案 2 :(得分:0)

以下是我将如何做的一个例子。我不确定你正在使用哪些课程,所以我不能具体。

 vtkSmartPointer<vtkImageData> result = vtkSmartPointer<vtkIMageData>::New();
    result->DeepCopy(YourImage);  //DeepCopy your image to result
    rImage->Update();

    double val;
    int i = 0;

    for(vtkIdType f = result->GetNumberOfPoints()-1; f > -1; f--)
    {
      val = YourImage->GetPointData()->GetScalars()->GetTuple1(f);
      result->GetPointData()->GetScalars->SetTuple1(i,val);
      i++;
    }



result->Update();
//Now Visualize your image