YCrCb 模型

不久前做的激光笔项目里面有一块内容是,查找一张图片中的红点,算法之一就是通过YCrCb 模型模型来寻找最亮的点。

YCrCb 模型更适合图形压缩. 因为人眼对图片上的亮度 Y 的变化远比色度 C 的变化敏感. 我们完全可以每个点保存一个 8bit 的亮度值, 每 2x2 个点保存一个 Cr Cb 值, 而图象在肉眼中的感觉不会起太大的变化.。
所以, 原来用 RGB 模型, 4 个点需要 4x3=12 字节. 而现在仅需要 4+2=6 字节; 平
均每个点占 12bit. 当然 JPEG 格式里允许每个点的 C 值都记录下来; 不过 MPEG 里
都是按 12bit 一个点来存放的, 我们简写为 YUV12。

[R G B] -> [Y Cb Cr] 转换
-------------------------


(R,G,B 都是 8bit unsigned)

       | Y  |     |  0.299       0.587       0.114 |   | R |     | 0 |

       | Cb |  =  |- 0.1687    - 0.3313      0.5   | * | G |   + |128|

        | Cr |     |  0.5       - 0.4187    - 0.0813|   | B |     |128|

Y = 0.299*R + 0.587*G + 0.114*B  (亮度)
Cb =  - 0.1687*R - 0.3313*G + 0.5   *B + 128
Cr =    0.5   *R - 0.4187*G - 0.0813*B + 128

[Y,Cb,Cr] -> [R,G,B] 转换
-------------------------


R = Y + 1.402  *(Cr-128)
G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)
B = Y + 1.772  *(Cb-128)

标签:Windows