图像的RGB表示和YUV表示及亮度和色度的转换关系

2023-10-25 00:21

本文主要是介绍图像的RGB表示和YUV表示及亮度和色度的转换关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、RGB表示方式

1.1、浮点表示

归一化表示,取值范围0.0~1.0,如openGL对每个子像素点的表示方式。

1.2、整数表示

取值范围0~255或者00~FF,8bit表示一个子像素。
如图像格式RGBA_8888,表示4*8bit表示一个像素,
而RGB_565用5 + 6 + 5 bit表示一个像素。
一张1280 * 720, RGBA_8888格式的图片的大小 = 1280 * 720 * 32bit = 1280 * 720 * 32 / 8 byte,也是位图bitmap在内存中占用的大小。

2、YUV表示方式

视频的裸数据一般使用YUV数据格式表示。Y表示明亮度(Luminance/Luma),也称灰度值(灰阶值)。UY表示色度(Chrominance/Chroma),均表示影响的色彩和饱和度,用于指定像素的颜色。
亮度需要透过RGB输入信号建立,方式为将RGB信号的特定部分(g分量信号)叠加到一起。
色度定义了颜色的色调和饱和度,分别用Cr、Cb表示。(C代表分量(是component的缩写))
Cr反映RGB输入信号红色部分与RGB信号亮度值之间的差异。
Cb反映RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
视频帧裸数据之所以采用YUV色彩空间,使用为亮度信号Y和色度信号UV是分离的。当无UV色度信号,只有Y亮度信号时,那么这样表示的图像就是黑白灰度图像。彩色电视正是使用YUV空间使用Y亮度信号解决彩色电视与黑白电视的兼容问题、使黑白电视也能接收彩色电视信号。最常用的YUV都使用8个字节来表示,所以取值范围就是0~255。但是广播电视系统不传输很低或很高的值,为了防止信号变动造成过载,因而把过高或过低这两边的数值作为“保护带”,在Rec.601和BT.709的广播标准中,Y的取值范围16~235,UV的取值范围都是16~240。

2.1、YUV的采样格式

YUV最常用的采样格式是4:2:0,还有4:2:2、4:4:4等格式,一般灰度(也就是亮度)的采样是不会减少的,因为人眼对亮度的敏感度高于色度,因此会选择适当地减少对色度的采样,节约空间
4:4:4表示色度值(UV)没有减少采样。即Y,U,V各占一个字节,加上Alpha通道一个字节,总共占4字节这个格式其实就是24bpp(bitperpixel)的RGB格式了。
4:2:2表示UV分量采样减半,比如第一个像素采样Y,U,第二个像素采样Y,V,依次类推每个点占用2个字节,由两个相邻的像素组成一个宏像素(macro-pixel)。
4:2:0这种采样并不意味着只有Y,Cb而没有Cr分量,这里的0说的U,V分量隔行才采样一次。比如第一行采样 4:2:0,第二行采样 4:0:2,依次类推...在这种采样方式下,每一个像素占用16bits或10bits空间。
4:1:1可以参考4:2:2分量,是进一步压缩,每隔四个点才采一次U和V分量。一般是第0点采Y,U,第1点采Y,第3点采YV,第四点采Y,依次类推。

2.2、YUV码流的存储格式(与采样格式密切相关)。

YUV存储格式分为两类:planar和packed
对于packed(打包格式)的YUV格式,每个像素点的Y,U,V是连续交叉存储的。将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel)
如YUV422采样的存储格式YUYV:
Y0 U0 Y1 V0 Y2 U2 Y3 V2....
其中Y0 U0 Y1 V0 这个像素组成一个宏像素。(Y0和Y1亮度分量共用U0,V0色度分量)。

对于planar(平面格式)的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。
如YUV422采样的存储格式YUV422P。

                                                        YUV420p数据格式

3、YUV和RGB之间的转化

RGB 转换成 YUV的标准公式:
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
Cb = U = -( 0.148 * R) - (0.291 * G) + (0.439 * B) + 128
YUV 转换成 RGB的标准公式:
B = 1.164(Y - 16) + 2.018(U - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
R = 1.164(Y - 16) + 1.596(V - 128)
///当然,可以对标准公式做适当的简化,降低运算量


链接:https://www.jianshu.com/p/4c764175ab39
 

这篇关于图像的RGB表示和YUV表示及亮度和色度的转换关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278746

相关文章

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图