1. 程式人生 > >VTK影象操作之灰度對映

VTK影象操作之灰度對映

VTK中vtkImageLuminance類提供了彩色影象變換到灰度影象的方法,該類的使用比較簡單,可以通過以下程式碼實現:

int main()
{
    vtkSmartPointer<vtkBMPReader> reader = vtkSmartPointer<vtkBMPReader>::New();
    const char* filename = "D:\\Color2GrayTest.bmp";
    reader->SetFileName(filename);

    vtkSmartPointer<vtkImageLuminance> luminanceFliter = vtkSmartPointer<vtkImageLuminance>::New
(); luminanceFliter->SetInputConnection(reader->GetOutputPort()); luminanceFliter->Update(); vtkSmartPointer<vtkImageActor> originActor = vtkSmartPointer<vtkImageActor>::New(); originActor->GetMapper()->SetInputConnection(reader->GetOutputPort()); vtkSmartPointer<vtkImageActor> resultActor = vtkSmartPointer<vtkImageActor>::New
(); resultActor->GetMapper()->SetInputConnection(luminanceFliter->GetOutputPort()); double originViewport[4] = { 0.0,0.0,0.5,1.0 }; double resultViewport[4] = { 0.5,0.0,1.0,1.0 }; vtkSmartPointer<vtkRenderer> originRender = vtkSmartPointer<vtkRenderer>::New(); originRender->SetViewport
(originViewport); originRender->AddActor(originActor); originRender->SetBackground(1.0, 1.0, 1.0); originRender->ResetCamera(); vtkSmartPointer<vtkRenderer> resultRender = vtkSmartPointer<vtkRenderer>::New(); resultRender->SetViewport(resultViewport); resultRender->AddActor(resultActor); resultRender->SetBackground(1.0, 1.0, 1.0); resultRender->ResetCamera(); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(originRender); renderWindow->AddRenderer(resultRender); vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); renderWindow->SetInteractor(renderWindowInteractor); renderWindow->SetSize(800, 600); renderWindow->SetWindowName("Color2GrayImageTest"); renderWindow->Render(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }

執行結果:

這裡寫圖片描述