Kinect Глубина и выравнивание кадров
Я играю с новым Kinect SDK v1.0.3.190. (другие связанные вопросы в stackoverflow находятся на предыдущем SDK Kinect) Я получаю потоки глубины и цвета от Kinect. Поскольку потоки глубины и RGB регистрируются разными датчиками, между двумя кадрами возникает несоосность, как можно видеть ниже.
Только RGB
Только глубина
Глубина & amp; RGB
Мне нужно выровнять их, и есть функция с именем MapDepthToColorImagePoint именно для этой цели. Однако это, похоже, не работает. ниже приведен одинаково смешанный результат (глубина и отображенный цвет), который создается с помощью следующего кода
<code> Parallel.For(0, this.depthFrameData.Length, i => { int depthVal = this.depthFrameData[i] >> 3; ColorImagePoint point = this.kinectSensor.MapDepthToColorImagePoint(DepthImageFormat.Resolution640x480Fps30, i / 640, i % 640, (short)depthVal, ColorImageFormat.RgbResolution640x480Fps30); int baseIndex = Math.Max(0, Math.Min(this.videoBitmapData.Length - 4, (point.Y * 640 + point.X) * 4)); this.mappedBitmapData[baseIndex] = (byte)((this.videoBitmapData[baseIndex])); this.mappedBitmapData[baseIndex + 1] = (byte)((this.videoBitmapData[baseIndex + 1])); this.mappedBitmapData[baseIndex + 2] = (byte)((this.videoBitmapData[baseIndex + 2])); }); </code>
где
<code>depthFrameData -> raw depth data (short array) videoBitmapData -> raw image data (byte array) mappedBitmapData -> expected result data (byte array) </code>
порядок параметров, разрешение, размеры массива правильные (проверено дважды).
Результат кода:
Смещение продолжается! Еще хуже то, что результирующее изображение после использования MapDepthToColorImagePoint в точности совпадает с исходным изображением.
Был бы признателен, если бы кто-нибудь мог помочь мне узнать мою ошибку или хотя бы объяснить, для чего предназначен MapDepthToColorImagePoint (при условии, что я неправильно понял его функциональность)?