簡體   English   中英

ITK VTK的組合

[英]the combination of ITK VTK

我是ITK和VTK的醫學成像程序設計的初學者。 我想使用以下代碼作為ITK讀取圖像並通過VTK進行顯示。 沒有其他選擇。 我有它“構建”並“成功”運行。 但是我在VTK窗口中看不到圖像。

#include "itkPNGImageIO.h"
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageToVTKImageFilter.h"

#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImageActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"

int main( )
{
    typedef itk::Image<unsigned short,2> ImageType;
    typedef itk::ImageFileReader<ImageType> ReaderType;
    typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;

    ReaderType::Pointer reader= ReaderType::New();
    ConnectorType::Pointer connector= ConnectorType::New();
    reader->SetFileName("BrainT1Slice.png");
    reader->SetImageIO(itk::PNGImageIO::New());
    connector->SetInput(reader->GetOutput());

    vtkImageActor *actor = vtkImageActor::New();
    actor->SetInputData(connector->GetOutput());
    vtkRenderer * ren = vtkRenderer::New();
    ren->AddActor(actor);
    vtkRenderWindow *renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren);

    vtkImageViewer* viewer= vtkImageViewer::New();
    vtkRenderWindowInteractor* renderWindowInteractor=vtkRenderWindowInteractor::New();
    viewer->SetInputData( connector->GetOutput() );
    viewer->SetupInteractor( renderWindowInteractor);
    viewer->SetColorWindow( 255);
    viewer->SetColorLevel( 128);
    viewer->Render();
    renderWindowInteractor->Initialize();
    renderWindowInteractor->Start();

    return 0;
}

連接器將數據傳輸到參與者時會發生什么? 我使用“ itk-4.6.0”,“ vtk-6.2.0”(均已成功建立)和“ vs2010”。

我正在嘗試將您的代碼與示例http://itk.org/Wiki/ITK/Examples/IO/ImageToVTKImageFilter進行比較。 由於您正在使用vtk6(在示例中,它是VTK_MAJOR_VERSION <= 5的else),請嘗試替換

actor->SetInputData(connector->GetOutput());

 connector->Update();
 actor->GetMapper()->SetInputData(connector->GetOutput());

如果仍然無法正常工作,請檢查是否已正確讀取數據,例如,使用MinimumMaximumImageCalculator檢查強度范圍http://itk.org/Wiki/ITK/Examples/ImageProcessing/MinimumMaximumImageCalculator

還請注意圖像的數據類型。 可能是您的png實際上是RGB圖像嗎? (有關示例,請參見http://www.na-mic.org/svn/Slicer3-lib-mirrors/trunk/Insight/Testing/Code/IO/itkPNGImageIOTest.cxx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM