zoukankan      html  css  js  c++  java
  • 音视频入门-01-认识RGB

    * 音视频入门文章目录 *

    RGB 简介

    RGB 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

    RGB格式

    RGB16 格式

    RGB16 数据格式主要有两种:RGB565 和 RGB555。

    1. RGB565

    每个像素用 16 比特位表示,占 2 个字节,R,G,B 分量分别使用 5 位、6 位、5 位。

    R R R R R G G G G G G B B B B B
    

    从上面排列格式,得到 RGB565 各分量的值:

    #define RGB565_MASK_RED 0xF800
    #define RGB565_MASK_GREEN 0x07E0
    #define RGB565_MASK_BLUE 0x001F
    R = (color & RGB565_MASK_RED) >> 11; // 取值范围0-31
    G = (color & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
    B = color & RGB565_MASK_BLUE; // 取值范围0-31
    

    2. RGB555

    每个像素用 16 比特位表示,占 2 个字节,R,G,B 分量都使用 5 位(最高位不用)。

    X R R R R R G G G G G B B B B B (X表示不用,可以忽略)
    

    从上面排列格式,得到 RGB555 各分量的值:

    #define RGB555_MASK_RED 0x7C00
    #define RGB555_MASK_GREEN 0x03E0
    #define RGB555_MASK_BLUE 0x001F
    R = (color & RGB555_MASK_RED) >> 10; // 取值范围0-31
    G = (color & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
    B = color & RGB555_MASK_BLUE; // 取值范围0-31
    

    RGB24 格式

    每个像素用 24 比特位表示,占 3 个字节,R,G,B 分量都使用 8 位。

    R R R R R R R R G G G G G G G G B B B B B B B B
    

    从上面排列格式,得到 RGB 各分量的值:

    #define RGB24_MASK_RED 0xFF0000
    #define RGB24_MASK_GREEN 0x00FF00
    #define RGB24_MASK_BLUE 0x0000FF
    R = (color & RGB24_MASK_RED) >> 16;
    G = (color & RGB24_MASK_GREEN) >> 8;
    B = color & RGB24_MASK_BLUE;
    

    RGB32 格式

    每个像素用 32 比特位表示,占 4 个字节,R,G,B,X 分量都使用 8 位。

    R R R R R R R R G G G G G G G G B B B B B B B B X X X X X X X X (X表示不用,保留字节)
    

    从上面排列格式,得到 RGBX 各分量的值:

    #define RGB32_MASK_RED 0xFF000000
    #define RGB32_MASK_GREEN 0x00FF0000
    #define RGB32_MASK_BLUE 0x0000FF00
    #define RGB32_MASK_X 0x000000FF
    R = (color & RGB32_MASK_RED) >> 24;
    G = (color & RGB32_MASK_GREEN) >> 16;
    B = (color & RGB32_MASK_BLUE) >> 8;
    X = color & RGB32_MASK_X;
    

    ARGB32

    与 RGB32 的区别在于,保留的 8 个 bit 用来表示透明度,也就是 alpha 的值。

    R R R R R R R R G G G G G G G G B B B B B B B B A A A A A A A A
    

    从上面排列格式,得到 RGBA 各分量的值:

    #define ARGB_MASK_RED 0xFF000000
    #define ARGB_MASK_GREEN 0x00FF0000
    #define ARGB_MASK_BLUE 0x0000FF00
    #define ARGB_MASK_ALPHA 0x000000FF
    R = (color & ARGB_MASK_RED) >> 24;
    G = (color & ARGB_MASK_GREEN) >> 16;
    B = (color & ARGB_MASK_BLUE) >> 8;
    A = color & ARGB_MASK_ALPHA;
    

    参考资料:

    百度百科 RGB

    图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别

    视音频数据处理入门:RGB、YUV像素数据处理

    内容有误?联系作者:
    联系作者


  • 相关阅读:
    使用gzip优化web应用(filter实现)
    在Spring、Hibernate中使用Ehcache缓存(2)
    Ehcache 整合Spring 使用页面、对象缓存(1)
    ehcache-----在spring和hibernate下管理ehcache和query cache
    使用Spring MVC构建REST风格WEB应用
    开涛spring3(12.4)
    开涛spring3(12.3)
    LLE局部线性嵌入算法
    图像固定条纹干扰
    多尺度字典学习超分辨率——相关中文文献
  • 原文地址:https://www.cnblogs.com/binglingziyu/p/audio-video-basic-01-rgb-intro.html
Copyright © 2011-2022 走看看