2.6.1.2. V4L2_PIX_FMT_PISP_COMP1_RGGB (‘PC1R’)、V4L2_PIX_FMT_PISP_COMP1_GRBG (‘PC1G’)、V4L2_PIX_FMT_PISP_COMP1_GBRG (‘PC1g’)、V4L2_PIX_FMT_PISP_COMP1_BGGR (‘PC1B’)、V4L2_PIX_FMT_PISP_COMP1_MONO (‘PC1M’)、V4L2_PIX_FMT_PISP_COMP2_RGGB (‘PC2R’)、V4L2_PIX_FMT_PISP_COMP2_GRBG (‘PC2G’)、V4L2_PIX_FMT_PISP_COMP2_GBRG (‘PC2g’)、V4L2_PIX_FMT_PISP_COMP2_BGGR (‘PC2B’)、V4L2_PIX_FMT_PISP_COMP2_MONO (‘PC2M’)¶
2.6.1.2.1. 树莓派 PiSP 压缩 8 位拜耳格式¶
2.6.1.2.1.1. 描述¶
树莓派 ISP (PiSP) 使用一组三种固定速率的压缩拜耳格式。可以减去黑电平偏移量以提高压缩效率;必须在带外信号中发出标称黑电平和偏移量。每个扫描线都填充到 8 像素宽的倍数,并且每个 8 个水平连续像素的块都使用 8 个字节进行编码。
模式 1 使用一种量化和基于增量的编码方案,最多保留 12 个有效位。模式 2 是一种简单的类似于平方根的压缩方案,具有 6 个 PWL 弦,最多保留 12 个有效位。模式 3 结合了压缩(带有 4 个弦)和增量方案,最多保留 14 个有效位。
此描述的其余部分适用于模式 1 和模式 3。
每个 8 像素的块都被分成 4 像素的偶数和奇数相位,在内存中的连续位置通过 32 位字独立编码。每个 32 位字的最低 2 位给出了其“量化模式”。
在量化模式 0 中,最低的 321 个量化级别是 FSD/4096 的倍数,其余级别是 FSD/2048 的连续倍数。量化模式 1 和 2 使用线性量化,步长分别为 FSD/1024 和 FSD/512。四个像素中的每一个都独立量化,四舍五入到最接近的级别。在量化模式 2 中,中间两个样本的量化值 (q1,q2) 都在 [384..511] 范围内,它们使用 9 位编码 q1,后跟 7 位编码 (q2 & 127)。否则,对于量化模式 0、1 和 2:一个 9 位字段编码 MIN(q1,q2),它必须在 [0..511] 范围内,一个 7 位字段编码 (q2-q1+64),它必须在 [0..127] 范围内。
每个外部样本 (q0,q3) 使用一个 7 位字段进行编码,该字段基于其内部邻居 q1 或 q2。在量化模式 2 中,内部样本的量化值在 [448..511] 范围内,字段值为 (q0-384)。否则,对于量化模式 0、1 和 2:外部样本编码为 (q0-MAX(0,q1-64))。q3 基于 q2 同样编码。这些值中的每一个都必须在 [0..127] 范围内。所有这些分别具有 2、9、7、7、7 位的字段都以小端顺序打包,以给出具有 LE 字节顺序的 32 位字。
当量化模式 3 上述编码都不能适用时,使用“7.5 位”转义。每个像素值都量化到最接近的 176 个级别,其中最低 95 个级别是 FSD/256 的倍数,其余级别是 FSD/128 的倍数(级别 175 表示非常接近 FSD 的值,可能需要饱和算术来解码)。
每对量化像素 (q0,q1) 或 (q2,q3) 都通过一个 15 位字段联合编码:2816*(q0>>4) + 16*q1 + (q0&15)。三个 2、15、15 位的字段以 LE 顺序打包 {15,15,2}。
压缩格式的软件解码器实现在 树莓派相机应用程序代码库 中提供。