gpt4 book ai didi

c# - Kinect 深度和图像帧对齐

转载 作者:太空狗 更新时间:2023-10-29 19:41:30 24 4
gpt4 key购买 nike

我正在玩新的 Kinect SDK v1.0.3.190。 (其他stackoverflow中的相关问题在kinect之前的sdk上)我从 Kinect 获得深度和颜色流。由于深度和 RGB 流是使用不同的传感器捕获的,因此两帧之间存在错位,如下所示。

只有RGB RGB

只有深度 Depth

深度和 RGB RGB & Depth equally blended

我需要对齐它们,有一个名为 MapDepthToColorImagePoint 的函数正是用于此目的。但是它似乎不起作用。这是一个同样混合(深度和映射颜色)的结果,下面是使用以下代码创建的

            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]));
});

在哪里

depthFrameData -> raw depth data (short array)

videoBitmapData -> raw image data (byte array)

mappedBitmapData -> expected result data (byte array)

参数的顺序、分辨率、数组大小都是正确的(双重检查)。

代码的结果是: depth and MapDepthToColorImagePoint

错位仍在继续!更糟糕的是,使用 MapDepthToColorImagePoint 后的结果图像与原始图像完全相同。

如果有人可以帮助我找出我的错误或至少解释一下 MapDepthToColorImagePoint 的用途(假设我误解了它的功能),我将不胜感激?

最佳答案

这总是会轻微发生,因为两个传感器安装在略有不同的位置。

试一试:

用你的两只眼睛看一些物体,然后尝试只用你的左眼,然后只用你的右眼。事情看起来略有不同,因为您的两只眼睛不在完全相同的位置。

但是:可以使用一些 API 代码纠正很多问题。

我使用的是 Kinect for Windows 1.5,因此 API 与 1.0 略有不同。

short[] depth=new short[320*240];
// fill depth with the kinect data
ColorImagePoint[] colorPoints=new ColorImagePoint[320*240];
// convert mappings
kinect.MapDepthFrameToColorFrame(DepthImageFormat.Resolution320x240Fps30,
depth, ColorImageFormat.RgbResolution640x480Fps30, colorPoints);
// now do something with it
for(int i=0;i<320*240;i++)
{
if (we_want_to_display(depth[i]))
{
draw_on_image_at(colorPoints[i].X,colorPoints[i].Y);
}
}

这是基础。如果您查看 Kinect Developer Toolkit 1.5 中的绿屏示例,它会显示一个很好的用途。

关于c# - Kinect 深度和图像帧对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com