Я использую Kinect для Windows для импорта 3D-изображений в MATLAB. Я хочу иметь возможность находить 3D-координаты объектов в 3D-сцене.
Один из простых способов сделать это — использовать функцию clickA3DPoint
, которую можно найти здесь, а затем щелкните точку, координаты которой я хочу узнать.
Проблема в том, что clickA3DPoint
ожидает аргументы в матрице 3 by N
, которая представляет собой координаты x
y
и z
N
выборок. Когда я использую Kinect для получения облака точек с помощью depthToPointCloud
, он возвращает матрицу 480 * 640 * 3
.
Как я могу извлечь координаты x, y и z из этой матрицы, чтобы я мог построить ее с помощью clickA3DPoint
? (или scatter3
?)
Моя попытка до сих пор:
depthDevice = imaq.VideoDevice('kinect',2) %this is the kinect depth sensor
depthImage = step(depthDevice); %this takes a depth image. (A 480 * 640 uint16 array)
xyzPoints = depthToPointCloud(depthImage,depthDevice); %convert the depth image to a point cloud
clickA3DPoint(reshape(xyzPoints,[3,307200])) %I'm guessing each of the 480 * 640 points (307200 points) has an x,y and z coordinate, so this concates the coordinates of all these points.
Но это просто отображает точки вдоль диагональной линии в трехмерном пространстве. Как на самом деле извлечь координаты x, y и z из облака точек в Matlab?