首页 > 解决方案 > Kinectv2 - 如何从 kinect fusion explorer 中删除深度颜色 - wpf 示例 c#?

问题描述

我有一个 Kinect v2 的项目。我已经从 kinect sdk 下载了 kinect fusion explorer - wpf example。在这个例子中,我得到了一个像图片中左边的网格。我想得到正确的,没有颜色。有没有人可以给我建议,可以帮助我弄清楚该怎么做?我只想从流中删除深度颜色。

https://i.imgur.com/i7HvSS7.jpg

标签: c#kinectmeshkinect-sdkkinect-v2

解决方案


在这个示例中,体素的着色是通过将包含每个体素的 X、Y、Z 坐标的向量乘以矩阵 来完成的worldToBGRTransform

默认矩阵将 X 映射到蓝色,将 Y 映射到绿色,将深度映射到 R,并在 X 和 Y 上发生一些变化(我不太了解那部分)。

要使输出变为灰色,您必须映射颜色以使 RG 和 B 设置相同。

例如,您可以编辑worldToBGRTransform如下设置(MainWindows.xaml.cs第 2893 行):

this.worldToBGRTransform = Matrix4.Identity;
this.worldToBGRTransform.M11 = 0.5f * this.voxelsPerMeter / this.voxelsX;
this.worldToBGRTransform.M12 = 0.5f * this.voxelsPerMeter / this.voxelsX;
this.worldToBGRTransform.M13 = 0.5f * this.voxelsPerMeter / this.voxelsX;
this.worldToBGRTransform.M21 = 0.5f * this.voxelsPerMeter / this.voxelsY;
this.worldToBGRTransform.M22 = 0.5f * this.voxelsPerMeter / this.voxelsY;
this.worldToBGRTransform.M23 = 0.5f * this.voxelsPerMeter / this.voxelsY;
this.worldToBGRTransform.M31 = this.voxelsPerMeter / this.voxelsZ;
this.worldToBGRTransform.M32 = this.voxelsPerMeter / this.voxelsZ;
this.worldToBGRTransform.M33 = this.voxelsPerMeter / this.voxelsZ;

推荐阅读