iOS TrueDepth кадр-точка облако - PullRequest
1 голос
/ 10 марта 2020

Я пытаюсь получить трехмерное облако точек из одного кадра TrueDepth (AVDepthData / CVPixelBuffer) в iOS. Я натолкнулся на официальную документацию, но, похоже, не могу найти последний отсутствующий фрагмент: Потоковые данные глубины с камеры TrueDepth

Этот код отлично отображает облако точек, которое я Мне интересно, но я не могу узнать, как получить координаты мира в метрах от него и сохранить их в виде файла pcd.

Существует ли способ считывания всех трехмерных точек текстуры глубины металла или это неправильный подход? Если да, то с чего бы мне начать?

Спасибо за помощь!

1 Ответ

0 голосов
/ 29 апреля 2020

В функции шейдера vertexShaderPoints взгляните на следующее:

uint2 pos;
pos.y = vertexID / depthTexture.get_width();
pos.x = vertexID % depthTexture.get_width();

// depthDataType is kCVPixelFormatType_DepthFloat16
float depth = depthTexture.read(pos).x * 1000.0f;

float xrw = (pos.x - cameraIntrinsics[2][0]) * depth / cameraIntrinsics[0][0];
float yrw = (pos.y - cameraIntrinsics[2][1]) * depth / cameraIntrinsics[1][1];

float4 xyzw = { xrw, yrw, depth, 1.f };

Измените этот расчет для вашего автора облаков точек, и я думаю, у вас будет то, что вы ищете.

...