YUV,是一种颜色编码方法,Y表示明亮度(Luminance、Luma),U和V则是色度、浓度(Chrominance、Chroma)。
YUV,Y`UV,YCbCr,YPbPr等都可以称为YUV,彼此有重叠。
YUV和Y`UV通常用来描述模拟信号,YCbCr与YPbPr则是用来描述数位的影像信号。
YUV颜色编码方法相比于RGB的优势体现在两个方面:
将亮度信息与色彩信息分离,没有色彩信息可以显示完整的图像,很好地解决了彩色电视机与黑白电视的兼容问题;
YUV不像RGB要求三个独立的视频信号同时传输,用YUV方式传送占用极少的频宽。
YUV存储格式,主要描述像素的Y、U、V分量排列方式,分为两种格式:紧缩格式和平面格式。
紧缩格式(packed formats):将Y、U、V值储存成Macro Pixels阵列,和RGB的存放方式类似。
平面格式(planar formats):将Y、U、V的三个分量分别存放在不同的矩阵中。
YUV采样方式,主要描述像素Y、U、V分量采样比例,即表达每个像素时,Y、U、V分量的数目,通常有三种方式:YUV4:4:4,YUV4:2:2,YUV4:2:0。
用三个图直观地表示采集的方式,以黑点表示采样该像点的Y分量,以空心圆圈表示采用该像素点的UV分量。
YUV4:4:4采样,每一个Y对应一组UV分量;YUV4:2:2采样,每两个Y共用一组UV分量;YUV4:2:0采样,每四个Y共用一组UV分量。
常见YUV格式说明:YV12、IYUV、I420、NV12、NV21 采样方式都是4:2:0,其存储格式都是平面格式,下面简要说明以上常见格式的内存布局。
YV12
所有 Y 样例都会作为不带正负号的char值组成的数组首先显示在内存中。此数组后面紧接着所有 V (Cr) 样例。V 平面的跨距为 Y 平面跨距的一半,V 平面包含的行为 Y 平面包含行的一半。V 平面后面紧接着所有 U (Cb) 样例,它的跨距和行数与 V 平面相同。
IYUV和I420
IYUV、I420和YV12的内存布局格式是一样的,只是U、V分量的顺序是相反的,IYUV和I420格式中,U分量紧跟Y分量后,V分量紧跟U分量后,如图所示。
NV12
所有 Y 样例都会作为由不带正负号的char值组成的数组首先显示在内存中,并且行数为偶数。Y 平面后面紧接着一个由不带正负号的char值组成的数组,其中包含了打包的 U (Cb) 和 V (Cr) 样例,如图 所示。当组合的 U-V 数组被视为一个由 little-endian WORD值组成的数组时,LSB 包含 U 值,MSB 包含 V 值。NV12 是用于 DirectX VA 的首选 4:2:0 像素格式。预期它会成为支持 4:2:0 视频的 DirectX VA 加速器的中期要求。
NV21
NV21和NV12的内存布局是一样的,只是U、V分量交错存储的顺序是相反的,NV21格式中,是以V-U的交错方式存储,如图所示。
参考资料:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2011-05-16 IAR编译duplicate definitions for IAR报错解决办法
2011-05-16 DM9000 寄存器的定义
2011-05-16 SQLite轻量级数据库简介(转)
2011-05-16 php 5.3.6 连接sqlite3
2011-05-16 Jquery 取值 发送ajax,并修改原网页的数据