首页 > 其他分享 >简单讲讲YV12格式

简单讲讲YV12格式

时间:2023-06-05 20:23:49浏览次数:42  
标签:采样 YV12 讲讲 UV YUV 色度 格式 分量

一、YUV格式简介

  YUV是一种颜色编码方式,广义上包括Y'UV、YUV、YCbCr、YPbPr等专有名词,狭义上都称为YUV格式。RGB格式中三个分量R、G、B都表示颜色;YUV格式与之不同,Y分量表示明亮度,也就是灰阶值,U分量和V分量表示的则是色度,用于描述影像色彩及饱和度,用于指定像素的颜色。如果一张YUV图像中只有Y分量而没有UV分量,则这张图像是一张灰度图。

  Cb和Cr分别是蓝色差和红色差。

二、YUV分类

  YUV格式可以根据采样的不同进行分类,也可以根据内存布局的不同进行分类。

2.1 采样

  YUV有三种采样格式,分别是4:4:4和4:2:2和4:1:1(4:2:0),这些采样格式分别代表了Y、U、V分量在采样数量上的比例。对于最后一种采样格式,其实都是表示着4个Y分量和一组UV分量,理论上是4:1:1,不过人们常常称为4:2:0采样格式。

  相比色度,人眼对亮度信息更敏感,可以很明确的看出,上述的采样格式中,亮度Y分量都是满采样的,而色度UV分量则是可以适当丢弃。

  对于4:4:4采样格式,很明显每一个像素点都有其自己的Y、U、V分量。

  对于4:2:2采样格式,可以看出是每个像素点都有自己的Y分量,每两个Y分量共享一组UV分量。但是,具体是哪两个Y分量去共享呢,共享的又是谁的UV分量呢。根据笔者收集的信息,色度样本在水平方向上的采样率是亮度样本的一半,即一行上相邻的两个像素共享一个色度样本对,而这个色度样本对则是相邻两个像素点中第一个像素的UV分量。

  对于4:2:0采样格式,则是每4个Y分量共享一组UV分量。根据笔者收集的信息,通常情况下,色度样本在水平方向上的采样率是亮度样本的一半,而在垂直方向上的采样率也是亮度样本的一半。也就是说4:2:0的采样是一个正方形的采样方式,而共享的色度样本对则是左上角的像素点的UV分量。

2.2 色度编码方式

  YUV还可以根据其色度信息在存储时的位置和顺序不同而进行类型划分。

  首先,根据存储位置,可以分为平面格式(packed)和交错格式(planar)。平面格式指每种分量是存储在不同平面的,也就是分开存储的,比如先存储全部的Y分量,再存储全部的U分量,最后再存储全部的V分量。交错格式是指所有的分量是存储在同一个平面的,以YUV444为例,每个像素点的YUV分量相邻存储。

  除去上面的两种存储格式,还有一种存储位置格式,Semi-Planar,主要用于手机系统,此处不展开。

三、YV12

  YV12是4:2:0采样格式的,是YUV420P的一种。

  YUV420P包括YU12和YV12。他们都是平面格式,第一个平面存储的都是Y分量,但是YV12是先存储V分量平面,再存储U分量平面。

四、YUV与RGB的转换

  RGB转换成YUV的公式如下:

Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.147 * R - 0.289 * G + 0.436 * B
V = 0.615 * R - 0.515 * G - 0.100 * B

  YUV转换成RGB的公式如下:

R = Y + 1.402 * (V - 128)
G = Y - 0.344136 * (U - 128) - 0.714136 * (V - 128)
B = Y + 1.772 * (U - 128)

  上面的转换是基于8位采样精度的。一般而言,Y分量是无符号整数,取值范围是0~255;UV分量是有符号整数,取值范围为-128~127。

  对于YV12格式,假设分辨率为width*height,像素点(x,y)的像素分量分别为

Y = width*y + x
U = width*height*5/4 +(y/2 * width/2 + x/2)
V = width*height + (y/2 * width/2 + x/2)

  注意,YV12是色度样本在水平方向上的采样率是亮度样本的一半,而在垂直方向上的采样率也是亮度样本的一半。

  

标签:采样,YV12,讲讲,UV,YUV,色度,格式,分量
From: https://www.cnblogs.com/unrealCat/p/17458829.html

相关文章

  • 前端实现导出word文档docx格式
    说明前端实现导出word文档,我们需要用到docxtemplater这个库使用的是vue2.6和vue-cli5还需要准备一个word模板,更多模板变量请去docxtemplater官网获取准备word模板安装需要用到的库//安装docxtemplaternpminstalldocxtemplaterpizzip--save//安装jszip-utilsn......
  • Permute 3 Mac(万能格式转换工具) v3.10.2中文版
    Permute3Mac是一款功能强大的万能格式转换工具,专为macOS系统设计。它可以帮助用户轻松、快速地将音频、视频和图像文件转换成各种格式,以满足用户不同的需求。→→↓↓载Permute3MacPermute3Mac支持多种文件格式的导入和输出,包括MP4、MOV、MKV、AVI、FLAC、MP3、PNG......
  • SQL Server 日期格式转换(Convert用法)
    [color=red][b]有时间的记得要:datetime[/b][/color]SelectCONVERT(varchar(100),CONVERT(datetime,'2012-08-0117:41:54',120),120)SQLServer中,Convert可以将日期转换成不同格式,格式控制是由CONVERT(data_type[(length)],expression[,style])中的style来完成的。下面......
  • Spring返回json格式数据的三种方式
    SVN多版本库环境的搭建OAuth2.0是什么?看这篇文章就够了。前端JavaPython等资源合集大放送目前前后端分离大行其道,如何进行前后分类是各个项目需要考虑的问题。如何使用Spring进行前后端分离呢?返回json格式数据是前后端分离的最佳选择。下面介绍使用Spring进行前后端分离的常用三......
  • EVE-NG 导入Cisco 的bin格式镜像文件
    上一篇文章讲了如何安装EVE-NG 模拟器,本篇讲如何导入镜像文件使用非常好用的MobaXterm 终端控制软件输入管理账户 root 及密码注意,需要由于目录是根、树枝(目录)、树叶(文件名)结构,先定位到根目录,才能进入其他树枝(目录)鼠标移到CiscoIOUKeygen.py    iourc.txt   两......
  • 调整word序号的格式
     点击定义新编号格式是设置左顶格或右顶格。 右键字体设置大小......
  • Word复制过去源格式也不对问题
    我在做毕业论文的时候,各种材料文档要集成在一个文档。结果复制过去,不是表格断了就是字间距宽了,OpenType选项变灰等字体问题,等等。这其实是word文档的兼容模式,老文档字间距紧凑,而新文档间距拉长。结果可能造成表格断开到第二页。如果要转换成最新的版本,方法是:菜单栏的“文件”(“......
  • Web 开放字体格式 woff
    Web开放字体格式(WOFF)-Web开发者指南|MDNhttps://developer.mozilla.org/zh-CN/docs/Web/Guide/WOFFWeb字体简介:TTF,OTF,WOFF,EOT&SVG-知乎https://zhuanlan.zhihu.com/p/28179203 翻译搜索复制......
  • PHP 之生成名片二维码与vcard格式
    一、vcard格式BEGIN:VCARDVERSION:3.0FN:样子TEL;CELL;VOICE:18333333333TEL;WORK;VOICE:010-66600000TEL;WORK;FAX:010-66600001EMAIL;PREF;INTERNET:[email protected]:http://baidu.comorG:网络工作室ROLE:技术部TITLE:CTOADR;WORK;POSTAL:北四环中路35号;100101REV:20......
  • 如何使用JavaScript格式化日期 – JS中的日期格式化
    日期是许多JavaScript应用程序的基本组成部分,无论是在网页上显示当前日期还是处理用户输入以安排事件。但以清晰一致的格式显示日期对于积极的用户体验至关重要。在本文中,我们将探讨在JavaScript中格式化日期的各种技术,使您能够以您的应用程序所需的格式显示日期。(前端教程......