Получить глубину от камеры для каждого пикселя

У меня есть модель сетки, и, используя VTK, я отрисовал ее с заданной позиции камеры (x, y, z). Я могу сохранить это в изображение RGB (640×480), но я также хочу сохранить карту глубины, где каждый пиксель хранит значение глубины от камеры.

Я пытался использовать Zbuffer значения, заданные окном рендеринга, следуя этот пример. Проблема в том, что Zbufer хранит только значения в диапазоне [0,1]. Вместо этого я пытаюсь создать синтетическое изображение диапазона, где я храню глубину / расстояние каждого пикселя от камеры. По аналогии с изображением, созданным Kinect, я пытаюсь создать его с определенной точки зрения модели меша.

РЕДАКТИРОВАТЬ — добавив немного кода

Мой текущий код:

Загрузите сетку

string mesh_filename = "mesh.ply";
vtkSmartPointer<vtkPLYReader> mesh_reader = read_mesh_ply(mesh_filename);

vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(mesh_reader->GetOutputPort());

vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);

vtkSmartPointer<vtkRenderer> renderer =  vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetSize(640, 480);

vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

//Add the actors to the scene
renderer->AddActor(actor);
renderer->SetBackground(1, 1, 1);

Создайте камеру и поместите ее где-нибудь

vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();

renderer->SetActiveCamera(camera);
camera->SetPosition(0,0,650);
//Render and interact
renderWindow->Render();

Получить результат из буфера z

double b = renderer->GetZ(320, 240);

В этом примере это дает 0,999995. Поскольку значения находятся между [0,1], я не знаю, как это интерпретировать, как вы можете видеть, я установил камеру на расстоянии 650 единиц по оси Z, поэтому я предполагаю расстояние z в этом пикселе (что находится на объекте в визуализированном RGB) должно быть около 650.

5

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]