您的位置:首页 > 其它

【图像处理】颜色空间

2015-12-16 22:25 218 查看

这里介绍RGB、YUV颜色空间,及其他们的转换。

RGB颜色空间

通过RGB三个通道的变化及其它们的相互叠加来得到各式各样的颜色。不同的图片可能采用不同的位深来表示RGB分量,比较常见的有:RGB8 :256色,每个像素用8为表示,需要用调色板。调色板表示存储颜色信息的区域,以RGB8的值为索引,在调色板中获取对应的颜色分量信息。RGB565:每个像素用16位表示,R:G:B = 5:6:5RGB24 :每个像素用24位表示,RGB分量各使用8位。

YUV颜色空间

YUV:Y表示亮度信息,UV表示色度信息。对于YUV颜色空间,通常一个Y并不对应一对UV。这是由于人的眼睛对光比较敏感,在视频信号的传输过程中,为了提高信道利用率,UV分量通常进行压缩。常用的有YUV420,YUV411,YUV422。后面的422,411,420代表色度抽样。当YUV444时,各分量不进行压缩。

YUV的色度抽样

需要注意的是:Y:U:V = 4:2:0表示:1)第一个值:每行4个像素,总共两行。(这里的两行是标准中的约定,而4则代表着每行4个像素)2)第二个值:第一行中,有2个色度抽样。表示4个像素平分2个色度抽样。3)第三个值:第二行中,没有色度抽样,那么就会采用与上一行相同的色度抽样。一个色度抽样代表一对UV,那么在4:2:0的色度抽样中,每对UV代表2x2区域的像素。如下图所示。而4:1:1中,每对UV代表1x4区域。在一些教科书中,经常有这样的表示,每个黑点对应于一对UV。

YUV420码流

以下为具体编码时的码流格式:YUV420中,每个像素的亮度值都会传输,而每个色度值只会有一对U和V。每对UV对应于一个2x2的数据块。对应于具体的马骝具体的yuv数据获取:
<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;font-size:18px;">size.total = size.width * size.height;
y = yuv[position.y * size.width + position.x];
u = yuv[(position.y / 2) * (size.width / 2) + (position.x / 2) + size.total];
v = yuv[(position.y / 2) * (size.width / 2) + (position.x / 2) + size.total + (size.total / 4)];</span></span>

RGB转YUV

以下为具体的RGB转YUV矩阵运算。这些公式来源于NTSC standard [/code]
所以,一般RGB转灰度时,有:Gray= R*0.299 + G*0.587 + B*0.114
参考资料:
https://en.wikipedia.org/wiki/YUV#cite_note-13

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: