Ejemplo n.º 1
0
            static FrameManager()
            {
                _instance = new FrameManager();
                _sensor   = KinectSensor.GetDefault();
                _frameResolutions[SourceType.COLOR]        = Box.S_1920_1080;
                _frameResolutions[SourceType.GREEN_SCREEN] = Box.S_1920_1080;
                _frameResolutions[SourceType.DEPTH]        = Box.S_512_424;
                _frameResolutions[SourceType.INFRARED]     = Box.S_512_424;
                _frameResolutions[SourceType.BODY_INDEX]   = Box.S_512_424;
                _frameResolutions[SourceType.BACKGROUND]   = _frameResolutions[SourceType.GREEN_SCREEN];

                foreach (SourceType thisSourceType in _frameResolutions.Keys)
                {
                    _displayableBuffers[thisSourceType] = new byte[_frameResolutions[thisSourceType].Area * (_outputPixelFormat.BitsPerPixel / 8)];
                }

                _bodyIndexToColorMap.Add(0, 0xFF0000FF); // BLUE
                _bodyIndexToColorMap.Add(1, 0x00FF00FF); // GREEN
                _bodyIndexToColorMap.Add(2, 0x0000FFFF); // RED
                _bodyIndexToColorMap.Add(3, 0x00FFFFFF); // YELLOW
                _bodyIndexToColorMap.Add(4, 0xFF00FFFF); // PURPLE
                _bodyIndexToColorMap.Add(5, 0xFFFFFFFF); // WHITE

                foreach (int bodyIndex in _bodyIndexToColorMap.Keys)
                {
                    _colorToBodyIndexMap.Add(_bodyIndexToColorMap[bodyIndex], bodyIndex);
                }

                _instance.InitializeBackgroundImage();

                _rawDepthPixels     = new UInt16[_frameResolutions[SourceType.DEPTH].Area];
                _rawInfraredPixels  = new UInt16[_frameResolutions[SourceType.INFRARED].Area];
                _rawBodyIndexPixels = new byte[_frameResolutions[SourceType.BODY_INDEX].Area];
                _cameraSpacePoints  = new CameraSpacePoint[Box.S_1920_1080.Area];

                _boxBlur_3_by_3 = new ConvolutionKernel(1.0f / 9f, new int[, ] {
                    { 1, 1, 1 },
                    { 1, 1, 1 },
                    { 1, 1, 1 },
                });

                _boxBlur_5_by_5 = new ConvolutionKernel(1.0f / 25f, new int[, ] {
                    { 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1 },
                });

                _boxBlur_7_by_7 = new ConvolutionKernel(1.0f / 49f, new int[, ] {
                    { 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1 },
                });

                _boxBlur_9_by_9 = new ConvolutionKernel(1.0f / 81f, new int[, ] {
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                    { 1, 1, 1, 1, 1, 1, 1, 1, 1 }
                });

                _identity_3_by_3 = new ConvolutionKernel(1, new int[, ] {
                    { 1, 0, 0 },
                    { 0, 1, 0 },
                    { 0, 0, 1 }
                });

                _gaussianBlur_5_by_5 = new ConvolutionKernel(1.0f / 256.0f, new int[, ] {
                    { 1, 4, 6, 4, 1 },
                    { 4, 16, 24, 16, 4 },
                    { 6, 24, 36, 24, 6 },
                    { 4, 16, 24, 16, 4 },
                    { 1, 4, 6, 4, 1 },
                });

                _gaussianBlur_3_by_3 = new ConvolutionKernel(1.0f / 16.0f, new int[, ] {
                    { 1, 2, 1 },
                    { 2, 4, 2 },
                    { 1, 2, 1 }
                });

                _edgeDetection = new ConvolutionKernel(1.0f, new int[, ] {
                    { -1, -1, -1 },
                    { -1, 8, -1 },
                    { -1, -1, -1 }
                });

                /*
                 * _experimental = new ConvolutionKernel(1, new float[,] {
                 *  { 0.00401f,   0.005895f,    0.007763f,    0.009157f,    0.009675f,    0.009157f,    0.007763f,    0.005895f,    0.00401f},
                 *  { 0.005895f,  0.008667f,    0.011412f,    0.013461f,    0.014223f,    0.013461f,    0.011412f,    0.008667f,    0.005895f},
                 *  { 0.007763f,  0.011412f,    0.015028f,    0.017726f,    0.018729f,    0.017726f,    0.015028f,    0.011412f,    0.007763f},
                 *  { 0.009157f,  0.013461f,    0.017726f,    0.020909f,    0.022092f,    0.020909f,    0.017726f,    0.013461f,    0.009157f},
                 *  { 0.009675f,  0.014223f,    0.018729f,    0.022092f,    0.023342f,    0.022092f,    0.018729f,    0.014223f,    0.009675f},
                 *  { 0.009157f,  0.013461f,    0.017726f,    0.020909f,    0.022092f,    0.020909f,    0.017726f,    0.013461f,    0.009157f},
                 *  { 0.007763f,  0.011412f,    0.015028f,    0.017726f,    0.018729f,    0.017726f,    0.015028f,    0.011412f,    0.007763f},
                 *  { 0.005895f,  0.008667f,    0.011412f,    0.013461f,    0.014223f,    0.013461f,    0.011412f,    0.008667f,    0.005895f},
                 *  { 0.00401f,   0.005895f,    0.007763f,    0.009157f,    0.009675f,    0.009157f,    0.007763f,    0.005895f,    0.00401f}
                 * });
                 *
                 * _experimental2 = new ConvolutionKernel(1, new float[,] {
                 *  { 0.000518f, 0.021715f, 0.00051f},
                 *  { 0.021715f, 0.91107f , 0.021715f},
                 *  { 0.000518f, 0.021715f, 0.000518f }
                 * });
                 */
            }