У меня есть статичный (с незначительным шумом, как движущаяся трава) объект (скажем, статуя/памятник). У меня есть ардрон, похожий на квадрокоптер, которым я управляю. Он отправляет мне поток 720p с одной камеры. Может ли какая-нибудь библиотека PCL превратить этот видеопоток в облако точек с правильной глубиной?
Какая библиотека облаков точек поддерживает синтаксический анализ одного 3D-видеопотока?
Ответы (2)
Я считаю, что для создания облака точек вам понадобится цветное изображение и изображение глубины (также известное как карта глубины< /а>). Камера, которую вы используете, должна быть способна создавать изображение глубины, что, как я полагаю, обычно делается с помощью инфракрасного света. Microsoft Kinect является примером камеры, которая использует инфракрасное излучение для создания изображения глубины.
Вы можете проверить пример ofxKinect для получения дополнительной информации. Это дает пример облака точек, созданного с помощью kinect.
Легко получить облако точек из примеров библиотеки Processing SimpleOpenNI.
Ниже приведен код, который я написал для получения облака точек от Kinect в процессе обработки:
//Code for Getting Point Cloud
import SimpleOpenNI.*;
import processing.opengl.*;
SimpleOpenNI kinect;
void setup()
{
size( 1024, 768, OPENGL);
kinect = new SimpleOpenNI( this );
kinect.enableDepth();
}
void draw()
{
background( 0);
kinect.update();
//translate( width/2, height/2, -1000);
rotateX( radians(180));
stroke(255);
PVector[] depthPoints = kinect.depthMapRealWorld();
//the program get stucked in the for loop it loops 307200 times and I don't have any points output
for( int i = 0; i < depthPoints.length ; i+=5)
{
PVector currentPoint = depthPoints[i];
if (currentPoint.z < 2000.0)
{
point(currentPoint.x, currentPoint.y, currentPoint.z );
//print("currentPoint :", currentPoint );
}
}
}
Вы можете покрыть свой Монумент с помощью Kinect. Но если вам нужно преобразовать выход RGB в данные глубины, это невозможно, потому что Kinect проецирует инфракрасный свет на объекты для расчета глубины, что невозможно при использовании потоковых данных. Даже если вы используете камеру с Kinect, вы можете использовать только исходящий от нее поток RGB. Для глубины лучше всего использовать датчик Kinect. Для лучших результатов используйте новый Kinect версии 2. Ура!!