掌桥专利:专业的专利平台
掌桥专利
首页

一种颜色编码方法

文献发布时间:2024-07-23 01:35:21


一种颜色编码方法

技术领域

本发明属于图像技术领域,具体涉及一种颜色编码方法。

背景技术

表示颜色有多种方法,例如RGB、YUV、YIQ、YCbCr、Lab、HSI等,都称为颜色空间。在数字照相机和摄像机中,采集图像和视频信息的时候通常都是采集RGB信息,然后进行存储或传输。也可以把RGB转换为其他的颜色空间,进行压缩编码。

在数字电视领域,通常采用CCIR BT.601/709/2020等标准规定的YCbCr颜色空间。YCbCr把颜色分解成亮度和两个色差信号,可以根据人眼对亮度和色差信号的空间分辨能力不同,对色差信号进行下采样,例如4:2:2和4:2:0等,从而降低数字图像和数字视频的数据量,给后续的编码、存储、传输带来方便。在显示器上显示图像和视频的时候,再把YCbCr格式的颜色信息转换成RGB格式。

RGB到YCbCr的转换公式如下:

Y = 0.2990R + 0.5870G + 0.1140B (1a)

Cb = -0.1687R - 0.3313G + 0.5000B(1b)

Cr = 0.5000R - 0.4187G - 0.0813B (1c)

将公式(1a)、(1b)、(1c)总称为公式(1)。

从公式(1)还原RGB的公式如下:

B = 1.772Cb + Y(2a)

R = 1.402Cr + Y(2b)

G = (Y – 0.2990R – 0.1140B) / 0.5870 (2c)

将公式(2a)、(2b)、(2c)总称为公式(2)。

在公式(1)和公式(2)中RGBY的取值范围都是[0,1],Cb和Cr的取值范围都是[-0.5,0.5]。

公式(1b)和(1c)其实是来源于B–Y和R–Y,见如下公式:

Cb = (B – Y)/1.772 (3b)

Cr = (R – Y)/1.402 (3c)

公式(3b)和(3c)是对B-Y和R-Y进行了缩小。之所以要进行缩小,是因为要把Cb和Cr的取值区间的长度控制为1。实际上当Y的值固定时,B-Y和R-Y的取值区间的长度都是1。只是当Y的值变化时,B-Y和R-Y的取值区间也跟着变化,造成了B-Y和R-Y整体的取值区间的长度大于1。

因此完全可以根据Y的值,动态确定B-Y和R-Y的取值范围,这样就不需要缩小了,因为缩小以后再进行量化,会损失一部分信息。既然Y是已知的,就无需做减法,直接记录B和R更加简单、直接。

在CCIR BT.601中,规定用8位二进制数表示YCbCr,其中Y的量化级数为219级,Cb和Cr的量化级数为224级。由于公式(1)中蕴含着公式(3b)和(3c)的缩小操作,实际上色差信号的量化步长要更大一些,量化步长大意味着精度较低。实践证明,量化后的YCbCr能够很好的表示颜色,说明色度信息不需要很高的量化精度,也就是说色度信息可以用较低的精度(较大的量化步长)进行整数化。

发明内容

为了克服现有技术的不足,本发明提供了一种颜色编码方法,首先获取R、G、B三个颜色分量的整数值,将其量化为0到1区间的值;然后获取R、G、B三个颜色分量分别对亮度的贡献率,计算亮度Y;最后对Y、B、R进行再量化,根据精度要求设置Y、B、R的量化级数,计算再量化后的值。本发明方法节约了表示色度信息的数据量,实现了数据压缩。

本发明解决其技术问题所采用的技术方案如下:

步骤1:获取R、G、B三个颜色分量的整数值,分别记为R1、G1、B1,量化级数为K;则令:

R= (R1 + 0.5) / K

G = (G1 + 0.5) / K

B = (B1 + 0.5) / K

得到R、G、B三个颜色分量的浮点值,取值范围都是[0,1];

步骤2:获取R、G、B三个颜色分量分别对亮度的贡献率α、β、γ,按照下式计算亮度Y:

Y = α* R+β* G+γ* B

其中α、β、γ的取值范围都是[0,1]且α+β+γ=1;

步骤3:对Y、B、R进行再量化,根据精度要求设置Y的量化级数为L,令B的量化级数M=L/(2(1-γ)),R的量化级数N=L/(2(1-α)),按照下式计算再量化后的值:

Y2 = floor ( Y * L)

B2 = floor ( B * M)

R2 = floor ( R * N)

其中,floor(.)表示取小于等于括号内圆点的最大整数。

进一步地,所述Y2、B2、R2用于恢复R、G、B的公式如下:

Y = (Y 2+ 0.5) / L

B = (B2 + 0.5) / M

R = (R2 + 0.5) / N

G = (Y –αR - γB) / β。

进一步地,所述Y、B、R用于恢复R、G、B的公式如下:

G = (Y –αR –γB) / β,R和B的值保持不变。

进一步地,所述α、β、γ的取值分别为0.299、0.587、0.114时,按照下式实现从YBR到YCbCr的转换:

Cb = B – Y/1.772

Cr = R – Y/1.402。

本发明的有益效果如下:

1、浮点数YBR相较于RGB,用亮度Y代替了绿色分量G,符合人类视觉系统对颜色的处理特点;相较于YCbCr,保留了B和R,可以较好的保持颜色信息。

2、整数YBR相较于整数YCbCr,在同等精度的条件下,B和R的量化级数比Cb和Cr少,可以用更少的比特数来编码,可以节约存储空间或传输带宽。

3、从YBR到RGB和YCbCr的转换都非常简单。

附图说明

图1为本发明方法步骤图。

图2为本发明从Y2、B2、R2恢复R、G、B的步骤图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

本发明的目的在于提供一种颜色编码方法YBR代替YCbCr,在数据量相同的条件下,提高了颜色的表示精度,简化了计算;在精度相同的情况下,减少了表示颜色所需的比特数,同时也简化了计算。

本发明方法一方面直接用B和R取代Cb、Cr,不仅避免了取值范围的变化,而且避免了运算和量化误差。另一方面,对B和R用较大的量化步长进行量化,节约表示色度信息的数据量,实现数据压缩。

参照图1,为本发明提供的一种颜色编码方法的步骤图,包括以下步骤:

S1、获取R、G、B三个颜色分量的整数值,这些值是经过256级量化的整数,取0~255之间的整数,分别为R1 = 100、G1 = 150、B1= 90,量化级数K=256,令:

R = (R1 + 0.5) / K = 100.5/256 = 0.39257813

G = (G1 + 0.5) / K = 150.5/256 = 0.58789063

B = (B1 + 0.5) / K = 90.5/256 = 0.35351563

S2、获取R、G、B三个颜色分量对亮度的贡献率α=0.299、β=0.587、γ=0.114,计算亮度Y:

Y = α* R+β* G+γ* B

= 0.299 * 100.5/256 + 0.587 * 150.5/256 + 0.114 * 90.5/256

= 0.50277344

S3、对Y、B、R进行再量化,设置Y的量化级数为L=255级,用8比特二进制数表示,取值0~254,B和R的量化级数为:

M=L/(2-2γ)=255/1.772=144

N=L/(2-2α)=255/1.402=182

按照下式计算再量化后的值:

Y2 = floor ( Y * L) = floor (0.50277344 * 255) = 128

B2 = floor ( B * M) = floor (0.35351563 * 144) = 50

R2= floor ( R * N) = floor (0.39257813 * 182) = 71

如图2所示,从Y2、B2、R2恢复R、G、B的公式计算如下:

Y = (Y2 + 0.5) / L = (128 + 0.5) / 255 = 0.50392157

B = (B2 + 0.5) / M = (50 + 0.5) / 144 = 0.35069444

R = (R2 + 0.5) / N = (71 + 0.5) / 182 = 0.39285714

G = (Y –αR - γB) / β

= (0.50392157 – 0.299 * 0.39285714 – 0.114 * 0.35069444)/0.587

= 0.59025233

从上面计算结果可以看出,从Y2、B2、R2恢复的R、G、B与S1步中的R、G、B三个颜色分量的量化值略有差别,这是由于舍入误差造成的,这个误差不会影响视频和图像的主观质量。

综上,本发明提供了一种颜色编码方法以及从RGB颜色空间到YBR颜色空间的相互转换方法。相对于YCbCr颜色空间,YBR颜色空间同样能够很好的把颜色分解为亮度和色度,因为YBR正是基于YCbCr的改进,表示颜色的原理是一样的。同时,YBR与RGB之间的转换更加方便,而且可以通过调整B和R的量化级数实现数据压缩。

相关技术
  • 一种基于TMC3点云编码器的颜色属性编码方法
  • 一种基于颜色的堆叠式三维码编码方法、编码装置、解码方法、解码装置以及存储介质
  • 一种点云颜色属性自适应压缩行程编码方法
技术分类

06120116679638