Я использую Kinect для Windows для импорта 3D-изображений в MATLAB. Я хочу иметь возможность находить 3D-координаты объектов в 3D-сцене.Как извлечь координаты xyz из облака 3D-точек в MATLAB
Один простой способ сделать это - использовать функцию clickA3DPoint
, найденную here, а затем щелкнуть по точке, в которой я хочу знать координаты.
Проблема заключается в том 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.
Но это только участки точек вдоль диагональной линии в 3D-пространстве. Как я фактически извлекаю координаты x, y и z из облака точек в Matlab?
данные советы - спаситель жизни! Я пробовал весь день, чтобы сделать это. Не могу поверить, что это так просто. Спасибо! – Blue7