Kinect红外灰色Pixelformat转换为8bpp

时间:2013-12-17 14:29:47

标签: c# image-processing kinect video-processing aforge

我们的目标是使用来自Kinect的红外图像制作电影。我们正在使用 AForge videowriter ,我们已经有了工作代码来处理普通的RGB流。 (RgbResolution640x480Fps30)

查看文档(http://msdn.microsoft.com/en-us/library/microsoft.kinect.colorimageformat.aspx),图像采用16位格式,但只使用前10个?那么我们有一个10位格式的图像或者这是如何工作的?

仅查看Aforge文档,可接受以下格式: 24或32 bpp图像或灰度8 bpp(索引)图像。 (http://www.aforgenet.com/framework/docs/html/84a560df-bfd5-e0d6-2812-f810b56a254d.htm

  • 为什么只接受8 bpp索引图像?
  • 是否可以将16(10?)位图像从Kinect转换为8 bpp索引图像
  • 或者也许允许AForge接受16位图像

谢谢!

2 个答案:

答案 0 :(得分:0)

Kinect应该产生16位样本中包含11位分辨率的深度或z。要解决此问题,您可以将样本除以2^3=8,这会产生钝的结果,或者使用像{h>摄影中使用的tone mapping技术。最后一个是有意义的,因为Kinect对于靠近物体的近距离具有与远距离物体相同的分辨率(参见this StackOverflow question),因此可以在11b样本和8b之间使用非线性映射。降低分辨率,如the OpenKinect Wiki中所述。

在Aforge上,我说它通常支持8位灰色,24位RGB(每平面8位)和32位RGBA(每平面8位)。

答案 1 :(得分:0)

AForge可以为您转换为8位图像:

Bitmap grayImage8bit = AForge.Imaging.Filters.Grayscale.CommonAlgorithms.BT709.Apply(original_bitmap);

我一直用它来转换32位rgba位图。