【问题标题】:What is the fourth Channel in Bgr32 PixelFormatBgr32 PixelFormat 中的第四个 Channel 是什么
【发布时间】:2014-06-02 18:05:45
【问题描述】:

我目前正在使用 C# 进行一些图像处理,但我对 Bgr32 像素格式感到困惑。以下描述来自microsoft msdn:http://msdn.microsoft.com/en-us/library/system.windows.media.pixelformats(v=vs.110).aspx

  1. Bgr24 是一种 sRGB 格式,每像素 24 位 (BPP)。每个颜色通道(蓝色、绿色和红色)都分配有每像素 8 位 (BPP)。 ✓
  2. Bgra32 是一种 sRGB 格式,每像素 32 位 (BPP)。每个通道(蓝色、绿色、红色和 alpha)分配有 8 位/像素 (BPP)。 ✓
  3. Bgr32 是一种 sRGB 格式,每像素 32 位 (BPP)。每个颜色通道(蓝色、绿色和红色)都分配有每像素 8 位 (BPP)。 -> (⊙.☉)? WTF

3 个通道,每个 8 位 -> 3x8bit = 24 位

最后一个通道/剩余的 8 位是什么?

提前致谢

【问题讨论】:

  • 我添加了一个链接,向您展示了使用 PGBRA 的好处,一开始并不明显,但是一旦您掌握了这个概念,您可能永远不会回头:D

标签: c# .net wpf image-processing


【解决方案1】:

它没有被使用,但将颜色表示为整数对于读取或写入都有实际原因,它是对齐的。

最后,它表示 24 位颜色,最接近表示它的类型是 32 位整数。用两个整数表示这种颜色会有点奇怪:一个 16 位(短)整数和一个 8 位(字节)整数。

现在有 25% 的空间没有被使用,这最终是一种浪费。

与 RGB24 相比,使用它更有意义,因为颜色由一个整数表示,而前者必须是 3 个字节。显然,您必须将其拆包才能获得不同的组件,但如今这些操作真的很便宜。

就我个人而言,仅当存在内存限制或任何其他类型的限制(例如硬件)时,我才会使用 RGB24。其他任何东西我都会选择 RGBA 甚至 PBGRA,因为它有很多好处,例如透明度,并且在 blitting 操作期间节省了额外的计算,以及更好地混合透明轮廓。

对于这种表示可以为您带来的好处,我建议您看看这个问题:Pre-multiplied alpha compositing(看看我发布的结果)

【讨论】:

    猜你喜欢
    • 2013-02-19
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多