Kinectv2-如何从Kinect Fusion Explorer中删除深度颜色-WPF示例C#?

时间:2019-07-05 06:54:12

标签: c# kinect mesh kinect-sdk kinect-v2

我有一个使用Kinect v2的项目。我已经从kinect sdk下载了kinect融合浏览器-wpf示例。在示例中,我得到了一个与图片中左侧网格类似的网格。我想要获得正确的颜色,没有颜色。有没有人给我建议,可以帮助我弄清楚该怎么做?我只想从流中删除深度颜色。

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

1 个答案:

答案 0 :(得分:1)

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

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

要使输出变为灰色,必须映射颜色,以使R G和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;