public void ConverToGrayScale(byte[] pixelData) { var mapper = new CoordinateMapper(sensor); var depthPoints = new DepthImagePoint[640 * 480]; // map depth and pixel data mapper.MapColorFrameToDepthFrame( ColorImageFormat.RgbResolution640x480Fps30, DepthImageFormat.Resolution640x480Fps30, depthImagePixels, depthPoints); for (int i = 0; i < depthPoints.Length; i++) { var pixelDataIndex = i * 4; var point = depthPoints[i]; // if pointer is further than 800 mm and is not recognized as a valid point if (point.Depth > 800 || KinectSensor.IsKnownPoint(point) == false) { var max = Math.Max(pixelData[pixelDataIndex], Math.Max(pixelData[pixelDataIndex + 1], pixelData[pixelDataIndex + 2])); // use maximum value to set r g b values. pixelData[pixelDataIndex] = max; //blue pixelData[pixelDataIndex + 1] = max; //green pixelData[pixelDataIndex + 2] = max; //red } } }
private void ReconhecerDistancia(DepthImageFrame quadro, byte[] bytesImagem, int distanciaMaxima) { if (quadro == null || bytesImagem == null) { return; } using (quadro) { DepthImagePixel[] imagemProfundidade = new DepthImagePixel[quadro.PixelDataLength]; quadro.CopyDepthImagePixelDataTo(imagemProfundidade); DepthImagePoint[] pontosImagemProfundidade = new DepthImagePoint[640 * 480]; kinect.CoordinateMapper.MapColorFrameToDepthFrame(kinect.ColorStream.Format, kinect.DepthStream.Format, imagemProfundidade, pontosImagemProfundidade); for (int i = 0; i < pontosImagemProfundidade.Length; i++) { var point = pontosImagemProfundidade[i]; if (point.Depth < distanciaMaxima && KinectSensor.IsKnownPoint(point)) { var pixelDataIndex = i * 4; byte maiorValorCor = Math.Max(bytesImagem[pixelDataIndex], Math.Max(bytesImagem[pixelDataIndex + 1], bytesImagem[pixelDataIndex + 2])); bytesImagem[pixelDataIndex] = maiorValorCor; bytesImagem[pixelDataIndex + 1] = maiorValorCor; bytesImagem[pixelDataIndex + 2] = maiorValorCor; } } } }
private void GrayscaleData(byte[] pixelData) { var mapper = new CoordinateMapper(sensor); var depthPoints = new DepthImagePoint[640 * 480]; mapper.MapColorFrameToDepthFrame(ColorImageFormat.InfraredResolution640x480Fps30, DepthImageFormat.Resolution640x480Fps30, depthImagePixels, depthPoints); for (int i = 0; i < depthPoints.Length; i++) { var point = depthPoints[i]; if (point.Depth > 600 || !KinectSensor.IsKnownPoint(point)) { var pixelDataIndex = i * 4; var max = Math.Max(pixelData[pixelDataIndex], Math.Max(pixelData[pixelDataIndex + 1], pixelData[pixelDataIndex + 2])); pixelData[pixelDataIndex] = max; pixelData[pixelDataIndex + 1] = max; pixelData[pixelDataIndex + 2] = max; } } }
private void ReconhecerProfundidade(byte[] bytesImagem, int distanciaMaxima, DepthImagePixel[] imagemProfundidade) { DepthImagePoint[] pontosImagemProfundidade = new DepthImagePoint[640 * 480]; kinect.CoordinateMapper.MapColorFrameToDepthFrame(kinect.ColorStream.Format, kinect.DepthStream.Format, imagemProfundidade, pontosImagemProfundidade); for (int i = 0; i < pontosImagemProfundidade.Length; i++) { var point = pontosImagemProfundidade[i]; if (point.Depth < distanciaMaxima && KinectSensor.IsKnownPoint(point)) { var pixelDataIndex = i * 4; byte maiorValorCor = Math.Max(bytesImagem[pixelDataIndex], Math.Max(bytesImagem[pixelDataIndex + 1], bytesImagem[pixelDataIndex + 2])); bytesImagem[pixelDataIndex] = maiorValorCor; bytesImagem[pixelDataIndex + 1] = maiorValorCor; bytesImagem[pixelDataIndex + 2] = maiorValorCor; } } }