不知大家是否有接触过YCoCg颜色空间,它其实是对RGB颜色空间的无损转换,其中Cg是色度绿色Chroma green缩写,Co是色度橙色Chroma orange缩写。从压缩的角度来看,一个好的颜色空间它的各个分量之间应该是尽量不相关的,显然RGB颜色空间离这个目标有点远。
2003年5月H.264的JVT-H031提案中,由微软提出了RGB和YCoCg的转换,来提高编码RGB序列的性能。如下图,这个变换矩阵的系数都是简单分数(YUV和RGB转换是浮点数),要更容易计算。
在2003年7月,微软在YCoCg的基础上,于JVT-I014提案中又提出了具有更低动态范围(取值范围)的YCoCg-R颜色空间,这里的R表示的是Reversible。
YCoCg-R相比YCoCg,有哪些改进呢?
YCoCg-R是YCoCg的可逆版本。大家可以观察上图中RGB和YCoCg之间转换的系数,最小系数的绝对值是1/4,这意味着在进行整数RGB到整数YCoCg转换时,由于整数除法的缘故会存在着精度损失。如果要实现像素整数的无损转换,可以给所有R,G,B像素值先乘以4再去处理。但这样就相当于把原像素值的取值范围给扩大了4倍。
而YCoCg-R可以在像素取值范围扩大小于4倍情况下,来实现RGB和YCoCg的无损转换。其依据的思想是S-transform,需要对Co和Cg分量右移除以2,整体的正向变换和反变换只要4次加减法和2次右移就可以实现无损变换。
虽然YCoCg这个颜色空间在视频编码里被提出是在20年前,但实际没怎么用起来,视频编码的颜色空间还是以YCrCb(YUV)为主,毕竟像编码RGB序列这种保证高端画质的事,似乎并不利于降本。
在后来HEVC-SCC和VVC标准中有了屏幕内容RGB/YUV444的编码场景以后,标准里都采用了YCoCg变换来提高视频压缩性能,对应工具的名字叫做自适应颜色空间变换ACT,对于RGB序列压缩性能收益还是很可观的。
作者:手撕编解码
来源:https://mp.weixin.qq.com/s/-oizN2YSL94ZZyuuuyXwww
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。