RGB转换为YCbCr

几种常见的视频格式: 
BT.601:4:2:2YCbCr,25fps
电视制式:NTSC: 720×525,  PAL: 720×625
亮度Y:16(全黑)~240(全白)
色差/度CbCr: 16~240,128无色
 
通常,从摄像仪和扫描仪所获得的颜色,以及计算机显示所用的颜色都是RGB色空间。如果不进行转换,在传输和处理过程中,会占用大量的带宽和存储量,不利于传输和处理。
为此,人们找到了另一种色空间YCbCr。因为人们对亮度的变化比对色度的变化更为敏感,所以减少带宽引起的颜色损失很小,人眼几乎感觉不出来。基于以上原因,
需要找出一种RGB到YCbCr的转换方法。
 
RGB是一种相加成像系统,由红、绿、蓝三种基色叠加,以产生各种需要的颜色。RGB经过伽玛校正后,被表示为R'G'B'。每个元素范围为0~255(8b)。当三个元素均为0时,产生黑色;均为255时,产生白色。
 
YCbCr用亮度和两个色差信号来表示颜色,其中y代表亮度信息,使用8b的16~235级电平;色差信息C6和Cr使用其中的16~240级电平。常用的YCbCr格式为4:2:2
 
色空间从R'G'B'到YCbCr的转换方程如下:
用上面的公式进行转换时,R'G'B'的范围都是0~255,计算得到的YCbCr的值在16~240之间。为了避免溢出,当R'G'B'的值小于0时,取为0;大于255时,取为255。
通常得到的计算结果都是带有小数的,这样就要进行舍人操作。一般情况下,将小数全部舍掉,如果舍入的数值大于或者等于0.5,结果就会增大。一种有效方法是,
先给结果增加0.5,再进行舍人操作,这种操作用常数就可以完成。转换方程如下:
实现转换方程的原理框图如下图所示
verilog语言描述:
 
 
参考文献:
金晓冬,常青。基于FPGA的RGB到YCbCr色空间转换 [J].现代电子技术
 
 
 





posted @ 2013-04-02 21:34  茜茜的技术空间  阅读(3209)  评论(0)    收藏  举报