VTK图像操作之灰度映射

来源:互联网 发布:网络安全技术一般包括 编辑:程序博客网 时间:2024/05/17 20:14

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;}

运行结果:

这里写图片描述

原创粉丝点击