Python版本 以及 C++版本 实现 RGB与YUV之间的转换

本文介绍了RGB模型和YUV模型,包括它们的概念、表示方式和适用场景。详细阐述了RGB模型中的浮点和整数表示,以及不同位数的索引形式。接着探讨了YUV模型,特别是Y'CbCr在数字图像中的应用。最后,提供了Python和C++版本的RGB到YUV的转换实现。
摘要由CSDN通过智能技术生成

一.RGB模型与YUV模型

1. RGB模型

我们知道物理三基色分别是红(Red)、绿(Green)、蓝(Blue)。现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种可见光的颜色。在图像储存中,通过记录每个像素的红绿蓝强度,来记录图像的方法,称为RGB模型 (RGB Model)。常见的图片格式中,PNG和BMP这两种就是基于RGB模型的。

1.1 模型介绍

RGB: 是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加,以产生多种多样的色光;且三原色的红绿蓝不可能用其他单色光合成。

  • 浮点表示方式: 取值范围为 0.0 ~ 1.0(如在 OpenGL 中对每个子像素点的表示就是使用这个表示方式)。
  • 整数表示: 取值范围为 0 ~ 255 或者 00 ~ FF(如 RGBA_8888、RGB_565)。
1.2 索引形式

RGB1: 每个像素用 1 个 bit 表示 0,1 两种值,可表示的颜色范围为双色,即最传统的黑和白;需要调色板,不过调色板只包含两种颜色。
RGB4: 每个像素用 4 个 bit 表示,4 个 bit 所能够表示的索引范围是 0~15,共 16 个。也就是可以表示 16 种颜色。即调色板中包含 16 中颜色。
RGB8: 每个像素用 8 个 bit 表示。8 个 bit 所能够表示的索引范围是 0~2

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值