下采样Kinect 2的彩色摄像头输入

时间:2015-01-19 13:38:35

标签: c# kinect kinect-sdk

我使用的是适用于Windows的Kinect 2和适用于SDK的C#版本。如果需要编写单独的C ++库或使用C#的不安全区域以获得更好的性能绝对是一个选择

我试图将Kinect彩色相机的输入下采样为1920x1080像素@ 30 fps有点多。但我找不到内置函数来降低分辨率(很奇怪,我错过了什么?)

我的下一个想法是将数据存储在一个大字节[]中,然后从该字节[]直接选择性地采样到另一个字节[]以减少数据量。

    int ratio = full.Length / smallBuffer.Length;

    int bpp = (int)frameDescription.BytesPerPixel;

    for (int i = 0; i < small.Length; i += bpp)
    {                
        Array.Copy(full, i * ratio, small, i, bpp);
    }   

然而,这种方法给了我一个非常有趣的结果。图像具有正确的宽度和高度,但图像沿水平轴重复多次。 (如果我使用原始解决方案的一半,如果我使用第三个等三次,则两次......)。

如何才能正确地缩减采样(子采样实际上是更好的描述)?

1 个答案:

答案 0 :(得分:0)

我的最终解决方案是让编码器(在我的情况下x264VFW进行下采样,真正的瓶颈结果是复制数组,这是通过给编码器指向阵列在托管内存中的位置来解决的(使用一个GCHandle)。