图像基础知识之YUV

图像基础知识之YUV一、YUV常用格式YUV是编译true-color颜色空间(colorspace)的种类,Y'UV,YUV,YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮

大家好,又见面了,我是你们的朋友全栈君。

 一、YUV常用格式

  YUV是编译true-color颜色空间(color space)的种类,Y’UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度与浓度(Chrominance、Chroma)

  YUV格式有两大类:packedplanar。注:planar还分平面存储平面打包格式。

  • 对于packed的YUV格式,每个像素点的Y,U,V是连续交错存储的。
  • 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,然后是所有像素点的V(平面存储格式),或者 紧接着UV交错存储(平面打包格式)。

  常用的CODEC格式-planar,如图:
<span role="heading" aria-level="2">图像基础知识之YUV<span role="heading" aria-level="2">图像基础知识之YUV

                                  YV12

   

   <span role="heading" aria-level="2">图像基础知识之YUV  <span role="heading" aria-level="2">图像基础知识之YUV

                              NV12

                               

    W即图像的宽度,H即图像的高度,Stride表示图像行的跨度,超出W部分为填充数据,主要目的是为了字节对齐,一般以16字节或者或者32字节对齐居多。

    从左侧数据存储结构图看出高度(H)是分层次的,YV12三层和NV12两层,这个层次结构称为 Plane,即YV12在代码中用 Plane[0]表示Y数据的起始地址,Plane[1]表示V数据的起始地址,Plane[1]表示U数据的起始地址。
    而NV12的UV是在一个Plane中交错存放,因此用两个Plane表示即可。

    从右侧的数据排布图可见YV12和NV12都是YUV 4:2:0采样,每四个Y共用一组UV分量,已用颜色标明Y1、Y2、Y7、Y8共用U1、V1,并且在内存中连续排布。

 

二、YUV拓展知识

    YUV格式主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。
  用三个图来直观地表示采集的方式,黑点表示采样该像素点的Y分量,以空心圆圈表示采样该像素点的UV分量:

   <span role="heading" aria-level="2">图像基础知识之YUV

    YUV 4:4:4采样,每一个Y对应一组UV分量。
    YUV 4:2:2采样,每两个Y共用一组UV分量。
    YUV 4:2:0采样,每四个Y共用一组UV分量。

 

(1) YUVY 格式 (属于YUV422)

  <span role="heading" aria-level="2">图像基础知识之YUV
  YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y’00、Y’01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。

 
(2) UYVY 格式 (属于YUV422)
 
<span role="heading" aria-level="2">图像基础知识之YUV

  UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。
 
(3) YUV422P(属于YUV422)
 
<span role="heading" aria-level="2">图像基础知识之YUV
 
YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y’00、Y’01 而言,其Cb、Cr的值均为 Cb00、Cr00。
 
(4)YV12,YU12格式(属于YUV420)
<span role="heading" aria-level="2">图像基础知识之YUV

YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y’00、Y’01、Y’10、Y’11共用Cr00、Cb00,其他依次类推。

(5)NV12、NV21(属于YUV420)

<span role="heading" aria-level="2">图像基础知识之YUV

NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y’00、Y’01、Y’10、Y’11共用Cr00、Cb00

 

注:

YUV420P,Y,U,V三个分量都是平面格式,分为I420和YV12。I420格式和YV12格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。
YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。
I420: YYYYYYYY UU VV    =>YUV420P
YV12: YYYYYYYY VV UU    =>YUV420P
NV12: YYYYYYYY UVUV     =>YUV420SP
NV21: YYYYYYYY VUVU     =>YUV420SP

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154698.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HashMap扩容机制解读[通俗易懂]

    HashMap扩容机制解读[通俗易懂]扩容机制什么时候需要扩容:当hashmap中的元素个数超过数组大小*loadFactor(负载因子)时,就会进行数组扩容,loadFactor的默认值(DEFAULT_LOAD_FACTOR)是0.75这是一个折中的取值,也就是说,默认情况下数组大小为16,那么当hashmap中的元素个数超过16*0.75=12(阈值或者边界值的时候)就把数组的大小扩展Wie2*16=32,然后重新计算出每个元素在数组中的位置,而这是一个非常耗性能的操作,所以我们最好能够提前预知并设置元素的个数。注

    2022年6月17日
    30
  • hikaripool信息_HikariPool源码(三)资源池动态伸缩「建议收藏」

    hikaripool信息_HikariPool源码(三)资源池动态伸缩「建议收藏」Java极客|作者/铿然一叶这是Java极客的第54篇原创文章1.资源池的动态伸缩1.为了提升资源池的性能,需要设置最小闲置资源数量,在资源池初始化时完成初始化;而当使用的资源超过最小闲置资源数,消费者释放回池中超过一定时间后要收缩到最小闲置资源数。2.为了避免无限申请资源导致超出负载,需要设置最大资源数,池中资源不能超出最大资源数。2.动态伸缩相关类结构职责说明:类职责Hou…

    2022年6月23日
    32
  • 拉格朗日中值定理_拉格朗日中值定理解决高考题

    拉格朗日中值定理_拉格朗日中值定理解决高考题定理表述定理表述如果函数f(x)满足:(1)在闭区间[a,b]上连续;(2)在开区间(a,b)内可导;那么在开区间(a,b)内至少有一点使等式成立。其他形式其他形式记令则有上

    2022年8月6日
    8
  • 免费个人网页制作指南Dreamweaver教程

    免费个人网页制作指南Dreamweaver教程1.网页是什么1.1.什么是网页网页的称作HTML文件,是一种可以在www网上传输,并被浏览器识别和翻译成文本页面显示出来的文件。WWW的全名是“WorldWideWeb”;HTML的全称是“HypertextMarkupLanguage”,中文翻译为“超文本标记语言”。“超文本”就是指页面内可以包含图片、链接、甚至音乐,程序等非文字的元素。网页就是由H

    2022年6月5日
    51
  • rand()函数的用法[通俗易懂]

    rand()函数的用法[通俗易懂]C++中rand()函数的用法1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。2、如果你要产生0~99这100个整数中的一个随机整数,

    2022年8月2日
    7
  • 算法帝国:华尔街交易怪兽的核武器缔造史

    算法帝国:华尔街交易怪兽的核武器缔造史这是一段通俗的读物,更是一段算法交易的历史钩沉,华尔街的每个角落逐渐被算法所侵蚀,思考者,依然还是拖着额头,但却不得不接受未来的现实!1980年华尔街的黑客生涯:天时地利20世纪70年代末期,算法开始进入人们的工作,这一趋势席卷了世界各地的金融市场,标志着华尔街黑客时代已然来临。华尔街逐渐吸引了美国越来越多杰出的数学家和科学家投身于编写交易算法的工作。在布莱克·斯科尔斯统治市场之前,已经有少数工程师和科学家进入曼哈顿下城市场了,但他们大都是外来移民。麻省理工、哈佛和此类高等学府的工程楼和科学.

    2022年7月11日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号