Kinect 红外灰色像素格式转换为 8bpp



我们的目标是用来自Kinect的红外图像制作一部电影。我们正在使用 AForge 视频编写器,我们已经有工作代码来处理普通的 RGB 流。(RGB分辨率640x480Fps30)

查看文档(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 索引图像?
  • 是否可以将 Kinect 中的 16 (10??) 位图像转换为 8 bpp 索引图像
  • 或者也许允许 AForge 也接受 16 位图像

谢谢!

Kinect 应该产生深度或 z,11 位分辨率包含在 16 位样本中。要解决此问题,您可以将样本除以 2^3=8 ,这将产生迟钝的结果,或使用色调映射技术,如 HDR 摄影中使用的技术。最后一个是有道理的,因为 Kinect 对近距离对象的分辨率与对远处对象没有相同的分辨率(请参阅此 StackOverflow 问题),因此可以在 11b 样本和 8b 降低分辨率之间使用非线性映射,如 OpenKinect Wiki 中所述。

在Aforge上,我会说支持8位灰色,24位RGB(每个平面8位)和32位RGBA(每个平面8位)是很常见的。

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

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

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

最新更新