• 正文
  • 相关推荐
申请入驻 产业图谱

色彩表示方法:RGBxyz以及它们之间的相互转化

12小时前
29
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。

本篇主要是色彩表示方法:RGBxyz以及它们之间的相互转化

RGB图像:每一个像素点由R、G、B三基色来构成(大多数显示器摄像头传感器等直接使用此种表示方法进行输入或者输出);通过对R、G、B的量化,编码为RGB888、RGB565等等。

什么是量化和编码?

世界上的颜色有千万种,可以通过不同比例的R、G、B混合出来。我们单独拿出来R(红色)来进行分析。

红色也是有很多很多红色,那么在数字时代该如何去表示呢?

首先我们可以认为从没有红色到最红色是一段线段,线段的不同位置表示不同的红色。

线段上的点有无数个,还是无法表示。

那么此时可以在线段上平均加上一些点,让这些点能够平分这个线段。例:可以加10个点(包括左右端点)。那么当需要表示的红色不在这些点上时,可以就近表示(此时就会有误差)。然后我们就可以用0到9来表示这些点,此时0到9就表示了不同的红色值。

在数字时代,机器内部都是二进制,所以我们会有二进制表示这些点。假设我们将线段上加256点,那么此时正好用8个二进制来表示;如果其他的颜色分量也用8个二进制来表示,组合到一起正好就是RGB888。

RGB888转化为RGB565

有些时候数据输入为RGB888的,但是结果却需要映射为RGB565的。

此时我们应该将R的高5位作为新的R;将G的高6位作为新的G;将B的高5位作为新的B。

这就类似考试成绩出来了,百分制的。但是成绩单只能是十分制的,我们自然要取高位(十位)来作为成绩,否则大小都不合理了。

RGB565转化为RGB888

有些时候数据输入为RGB565的,但是结果却需要映射为RGB888的。

第一种方法:可以将R的5位后面拼接3个0,成为新的R;G的6位后面拼接2个0,成为新的G;B的5位后面拼接3个0,成为新的B(一定要在后面拼接,在前面拼接的话,数值都不合理)。

第二种方法:第一种方法得出的低位永远是0,无法占满所有的颜色分量量程。例:十分制的9,按照第一种方法,改为百分制后,是90;而99才是最高;

此时我们可以将高位的值拼接后低位;以R为例:将R的5位变成新R的高5位,再将R的高三位变为新R的低三位,构成一个新的八位。其他的分量也可以这样做。

 

想要了解更多信息,可以关注“郝旭帅电子设计团队”,想要获取源代码,可以联系作者。本篇内容中有部分资源来源于网络,如有侵权,请联系作者。

相关推荐