VTK 实例28:将JPG类型的灰度图像进行彩色映射(图像彩色映射)

发布时间 2023-08-15 11:34:23作者: 一杯清酒邀明月

 1 #include "vtkAutoInit.h" 
 2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
 3 VTK_MODULE_INIT(vtkInteractionStyle);
 4 
 5 #include <vtkSmartPointer.h>
 6 #include <vtkImageData.h>
 7 #include <vtkRenderWindow.h>
 8 #include <vtkRenderWindowInteractor.h>
 9 #include <vtkInteractorStyleImage.h>
10 #include <vtkRenderer.h>
11 #include <vtkImageActor.h>
12 #include <vtkJPEGReader.h>
13 #include <vtkImageLuminance.h>
14 #include <vtkLookupTable.h>
15 #include <vtkImageMapToColors.h>
16 
17 //测试图像:../data/lena-gray.jpg
18 int main(int argc, char* argv[])
19 {
20     vtkSmartPointer<vtkJPEGReader> reader =
21         vtkSmartPointer<vtkJPEGReader>::New();
22     reader->SetFileName ( "C:\\Users\\Administrator\\Desktop\\VTK2\\hellovtk\\vtk_图像处理学习\\第五章_图像处理\\data\\lena-gray.jpg" );
23 
24     vtkSmartPointer<vtkLookupTable> colorTable = 
25         vtkSmartPointer<vtkLookupTable>::New(); 
26     colorTable->SetRange( 0.0, 255.0 );
27     colorTable->SetHueRange( 0.1, 0.5 );
28     colorTable->SetValueRange( 0.6, 1.0 );
29     colorTable->Build();
30 
31     vtkSmartPointer<vtkImageMapToColors> colorMap = 
32         vtkSmartPointer<vtkImageMapToColors>::New();
33     colorMap->SetInputConnection( reader->GetOutputPort() );
34     colorMap->SetLookupTable( colorTable );
35     colorMap->Update();
36 
37     vtkSmartPointer<vtkImageActor> originalActor =
38         vtkSmartPointer<vtkImageActor>::New();
39     originalActor->SetInputData(reader->GetOutput());
40 
41     vtkSmartPointer<vtkImageActor> shiftscaleActor =
42         vtkSmartPointer<vtkImageActor>::New();
43     shiftscaleActor->SetInputData(colorMap->GetOutput());
44 
45     double originalViewport[4] = {0.0, 0.0, 0.5, 1.0};
46     double shiftscaleViewport[4] = {0.5, 0.0, 1.0, 1.0};
47 
48     vtkSmartPointer<vtkRenderer> originalRenderer =
49         vtkSmartPointer<vtkRenderer>::New();
50     originalRenderer->SetViewport(originalViewport);
51     originalRenderer->AddActor(originalActor);
52     originalRenderer->ResetCamera();
53     originalRenderer->SetBackground(1.0, 1.0, 1.0);
54 
55     vtkSmartPointer<vtkRenderer> shiftscaleRenderer =
56         vtkSmartPointer<vtkRenderer>::New();
57     shiftscaleRenderer->SetViewport(shiftscaleViewport);
58     shiftscaleRenderer->AddActor(shiftscaleActor);
59     shiftscaleRenderer->ResetCamera();
60     shiftscaleRenderer->SetBackground(1.0, 1.0, 0.8);
61 
62     vtkSmartPointer<vtkRenderWindow> renderWindow =
63         vtkSmartPointer<vtkRenderWindow>::New();
64     renderWindow->AddRenderer(originalRenderer);
65     renderWindow->AddRenderer(shiftscaleRenderer);
66     renderWindow->SetSize(900, 300);
67     renderWindow->Render();
68     renderWindow->SetWindowName("Gray2ColorImageExample");
69 
70     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
71         vtkSmartPointer<vtkRenderWindowInteractor>::New();
72     vtkSmartPointer<vtkInteractorStyleImage> style =
73         vtkSmartPointer<vtkInteractorStyleImage>::New();
74 
75     renderWindowInteractor->SetInteractorStyle(style);
76     renderWindowInteractor->SetRenderWindow(renderWindow);
77     renderWindowInteractor->Initialize();
78     renderWindowInteractor->Start();
79 
80     return EXIT_SUCCESS;
81 }