当前位置:天才代写 > tutorial > C语言/C++ 教程 > RGB565,RGB24和RGB32的量化压缩与量化赔偿

RGB565,RGB24和RGB32的量化压缩与量化赔偿

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:628

副标题#e#

关于RGB565,RGB555, RGB888,RGB32的转换,在我的前一篇博文中我已经先容过了关于RGB565->RGB888的步和谐思想。

本日上午又研究了一个上午,就谢了下来,但愿能给需要辅佐的哥们一点小小指导,虽然了..也等候着好手过来拍砖。

关于RGB的一点先容:

RGB色彩模式(也翻译为“红绿蓝”,较量罕用)是家产界的一种颜色尺度,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变革以及它们彼此之间的叠加来得

到各式百般的颜色的,RGB等于代表红、绿、蓝三个通道的颜色,这个尺度险些包罗了人类视力所能感知的所有颜色,是今朝运用最广的颜色系统之一。

RGB语法:

( red,green,blue )    参数red:integer范例,指定颜色中的赤色分量强度,有效值在0到255之间;green:integer范例,指定颜色中的绿色分量

强度,有效值在0到255之间;blue:integer范例,指定颜色中的蓝色分量强度,有效值在0到255之间返回值Long。函数执行乐成时返回由指定分量确定的颜色,

用长整数暗示。产生错误时返回-1。假如任何参数的值为NULL,RGB()函数返回NULL。   用法RGB()函数利用下述公式计较暗示颜色的长整数:

65536 *Blue + 256 * Green+Red个中,Blue代表蓝色分量,Green代表绿色分量,Red代表赤色分量。各分量中,数值越小,亮度越低,数值越大,亮度越高。

下面就言归正传了:就RGB各类差异位数的存储方法在我的博客http://3417300.blog.51cto.com/3407300/860523中可以找到,在这我就不再累赘了。

就RGB888->RGB565而言:其转换的详细思路如下:(注:只代表小我私家的要领)

1.取RGB888中第一个字节的高5位作为转换后的RGB565的第二个字节的高5位

2.取RGB888中第二个字节的高3位作为转换后的RGB565第二个字节的低3位

3.取RGB888中第二个字节的第4–6位,作为转换后的RGB565第一个字节的高3位

4.取RGB888中第二个字节的第三个字节的高5位作为转换后的RGB565第一个字节的低5位

就RGB565->RGB888而言:

RGB565的存储方法为:

R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0

1.取RGB565第一个字节中低5位作为RGB888的高5位

2.取RGB565第二个字节中的低3位,将其左移5位,作为RGB888第二个字节的高5位

3.取RGB565第一个字节的高3位将其右移3位,作为RGB888第二个字节的4–6位

4.取RGB565第二个字节中的高5位作为RGB888第三个字节。

细心地哥们必然会发明假如我们是低位往高位上转的话,就存在一些数据精度的丢失问题,在网上查了写资料,警惕了一下别人的要领;所谓的量化赔偿,


#p#副标题#e#

讲一下量化压缩与量化赔偿吧

在举办色彩名目转换的时候,常常会碰着色彩量化位数的改变,好比说从 24bit RGB888 到 16bit RGB565 的色彩转换。所谓量化压缩与量化赔偿都是我小我私家所提出的观念,现说明如下。

量化压缩,举例:

 24bit RGB888 -> 16bit RGB565 的转换

24ibt RGB888 R7 R6 R5 R4 R3 R2 R1 R0 G7 G6 G5 G4 G3 G2 G1 G0 B7 B6 B5 B4 B3 B2 B1 B0

16bit RGB656 R7 R6 R5 R4 R3 G7 G6 G5 G4 G3 G2 B7 B6 B5 B4 B3

量化位数从8bit到5bit或6bit,取原8bit的高位,量化上做了压缩,却损失了精度。

量化赔偿,举例:

16bit RGB565 -> 24bit RGB888 的转换

16bit RGB656 R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0

24ibt RGB888 R4 R3 R2 R1 R0 0 0 0 G5 G4 G3 G2 G1 G0 0 0 B4 B3 B2 B1 B0 0 0 0

24ibt RGB888 R4 R3 R2 R1 R0 R2 R1 R0 G5 G4 G3 G2 G1 G0 G1 G0 B4 B3 B2 B1 B0 B2 B1 B0

说明:第二行的 24bit RGB888 数据为转换后,未举办赔偿的数据,在精度上会有损失

第三行的 24bit RGB888 数据为颠末量化赔偿的数据,对低位做了量化赔偿

可以很容易的证明,这样的赔偿要领是一种公道的线性赔偿。赔偿的道理很简朴,各人仔细想一下就大白了,因此不再具体说明。

总结一下:

量化压缩的要领:三个字取高位

量化赔偿的要领:

1. 将原数据填充至高位

2. 对付低位,用原始数据的低位举办赔偿

3. 假如仍然有未填充的位,继承利用原始数据的低位举办轮回赔偿

本文出自 “驿落薄暮” 博客,请务必保存此出处http://yiluohuanghun.blog.51cto.com/3407300/860798

 

    关键字:

天才代写-代写联系方式