Tôi đang phát xung quanh với Kinect SDK v1.0.3.190 mới. (câu hỏi liên quan khác trong stackoverflow là trên sdk trước của kinect) Tôi nhận được chiều sâu và màu sắc suối từ Kinect. Khi các luồng độ sâu và RGB được chụp với các cảm biến khác nhau, có một sự lệch giữa hai khung hình như có thể thấy bên dưới.Chiều sâu Kinect và Khung ảnh Alignment
Chỉ RGB
Chỉ Depth
Depth & RGB
tôi cần phải sắp xếp chúng và có một hàm có tên MapDepthToColorImagePoint chính xác cho mục đích này. Tuy nhiên nó dường như không hoạt động. đây là một không kém pha trộn (chiều sâu và ánh xạ màu) cho kết quả dưới đây được tạo ra với đoạn mã sau
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]));
});
nơi
depthFrameData -> raw depth data (short array)
videoBitmapData -> raw image data (byte array)
mappedBitmapData -> expected result data (byte array)
thứ tự của các thông số, độ phân giải, kích thước mảng là chính xác (hai lần kiểm tra) .
Kết quả của mã này là:
Các lệch chi tiết tiếp tục! Thậm chí còn tệ hơn nữa, hình ảnh kết quả sau khi sử dụng MapDepthToColorImagePoint hoàn toàn giống với hình ảnh gốc.
Sẽ được đánh giá cao nếu ai đó có thể giúp tôi tìm ra lỗi của mình hoặc ít nhất là giải thích cho tôi MapDepthToColorImagePoint là gì (giả sử rằng tôi đã hiểu sai chức năng của nó)?