zv-1像素_尺寸 像素

zv-1像素_尺寸 像素近期由于项目需要,开始接触视频像素格式,因此在这里做一个小结;像素格式描述了像素数据存储所用的格式,定义了像素在内存中的编码方式。RGB和YUV为两种经常使用的像素格式。RGB格式一般较为熟悉,RGB图像具有三个通道R、G、B,分别对应红、绿、蓝三个分量,由三个分量的值决定颜色;通常,会给RGB图像加一个通道alpha,即透明度,于是共有四个分量共同控制颜色。YUV格式(YCr…


Jetbrains全系列IDE稳定放心使用

常用图像像素格式 RGB 和 YUV

近期由于项目需要,开始接触图像像素格式,因此在这里做一个小结。

像素格式描述了像素数据存储所用的格式,定义了像素在内存中的编码方式。RGB 和 YUV 为两种经常使用的像素格式。

RGB 格式

一般较为熟悉,RGB图像具有三个通道 R、G、B,分别对应红、绿、蓝三个分量,由三个分量的值决定颜色;通常,会给RGB图像加一个通道alpha,即透明度,于是共有四个分量共同控制颜色。

YUV 格式

(YCrCb)是指将亮度参量Y和色度参量U/V分开表示的像素格式,主要用于优化彩色视频信号的传输。
YUV像素格式来源于RGB像素格式,通过公式运算,YUV 三分量可以还原出 RGB,YUV 转 RGB 的公式如下:

    R = Y + 1.403V
    G = Y - 0.344U - 0.714V
    B = Y + 1.770U

一般,将 RGB 和 YUV 的范围均限制在 [0, 255] 间,则有如下转换公式:

R = Y + 1.403(V - 128)
G = Y - 0.344(U - 128) - 0.714(V - 128)
B = Y + 1.770(U - 128)

鉴于 RGB 格式已经见得见多,本文主要总结 YUV 常见的几种像素格式。

YUV采样

YUV 相比于 RGB 格式最大的好处是可以做到在保持图像质量降低不明显的前提下,减小文件大小。TUV 格式之所以能够做到,是因为进行了采样操作。

YUV 码流的存储格式与其采样方式密切相关,主流的采样方式有三种:YUV 4:4:4**(YUV444),YUV 4:2:2(YUV422),YUV 4:2:0(YUV420)**。

若以以黑点表示采样该像素点的 Y 分量,以空心圆圈表示采用该像素点的 UV 分量,则这三种采样方式如下:
YUV采样
即:

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

YUV存储格式

YUV 存储可以分为两种:packed(打包)和planar(平面);

  • packed:Y、U、V 分量穿插着排列,三个分量存在一个 Byte 型数组里;

  • planar:Y、U、V 分量分别存在三个 Byte 型数组中;

常见的像素格式

YUV422:YUYV、YVYU、UYVY、VYUY

这四种格式每一种又可以分为 2 类(packed和planar),以 YUYV 为例,一个 6*4 的图像的存储方式如下:

	Y Y Y Y Y Y                   
	Y Y Y Y Y Y                  
	Y Y Y Y Y Y                   
	Y Y Y Y Y Y                    
	U U U U U U                  Y U Y V Y U Y V Y U Y V
	U U U U U U                  Y U Y V Y U Y V Y U Y V
    V V V V V V                  Y U Y V Y U Y V Y U Y V
	V V V V V V                  Y U Y V Y U Y V Y U Y V
	- Planar -                          - Packed - 

YUV420:I420、YV12、NV12、NV21

  • YUV420p: I420、YV12
  • YUV420sp: NV12、NV21

同样,对于一个6*4的图像,这四种像素格式的存储方式如下:

	Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y
	Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y
	Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y
	Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y      Y Y Y Y Y Y
	U U U U U U      V V V V V V      U V U V U V      V U V U V U
	V V V V V V      U U U U U U      U V U V U V      V U V U V U
     - I420 -          - YV12 -         - NV12 -         - NV21 -
  • I420、YV12 三个分量均为平面格式,即分别存在三个 Byte 型数组中;
  • NV12、NV21 的存储格式为 Y 平面,UV 打包,即 Y 信息存储在一个数组中,UV 信息存储在一个矩阵中。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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

相关推荐

  • T61 ubuntu 10.10 中文字体 雅黑字体

    T61 ubuntu 10.10 中文字体 雅黑字体

    2021年8月8日
  • 在java中println什么意思_java printf与println

    在java中println什么意思_java printf与println在java中,System.out.println()是我们经常会用到的一个语法,它的作用是将值输出显示在console窗口中,这样程序员就可以在console窗口中看到代码运行的结果。而除了System.out.println()之外,还有其他的打印结果的方法。比如说System.out.print(),这个方法与System.out.println()很像,区别就在于,System.out….

    2022年10月2日
  • 数据库置疑的解决方法_列族数据库

    数据库置疑的解决方法_列族数据库数据库置疑处理文档修订记录日期Date修订版本RevisionVersion修改描述ChangeDescription作者Author2010-04-261.0格式化UltraSQL目录一、知识点简介1.DBCC中的CHECKDB命令2.重置置疑状态3.sp_add_log_file_reco…

    2022年8月20日
  • linux修改用户权限与所属组_linux修改用户组的权限

    linux修改用户权限与所属组_linux修改用户组的权限如何在linux下修改组权限chmodg+rpath/file加读权限当前目录chmod-Rg+rpath/file加读权限当前目录以及子目录g-r减读权限g+w加写权限g-wg+x加执行权限g-x经常会用到的命令,记一下。1.chgrp修改文件所属组#简单使用,将文本test.txt所属组改为gourp1chgrpgourp1test.txt2.chown修改文件拥有…

    2022年9月11日
  • android Apk打包过程概述_android是如何打包apk的「建议收藏」

    最近看了老罗关于android应用资源编译和打包过程的分析,过程比较复杂,这里结合其他资料,简要描述下打包过程,从整体上了解这个流程,感兴趣的再去详细研究过程。流程概述:1、打包资源文件,生成R.java文件2、处理aidl文件,生成相应java 文件3、编译工程源代码,生成相应class 文件4、转换所有class文件,生成classes.dex文件5、打包生成apk6、对apk文件进行签名7、

    2022年3月11日
  • pycharm虚拟环境与本地环境区别_pycharm自带python吗

    pycharm虚拟环境与本地环境区别_pycharm自带python吗    Python的版本众多,在加上适用不同版本的PythonPackage。这导致在同时进行几个项目时,对库的依赖存在很大的问题。这个时候就牵涉到对Python以及依赖库的版本管理,方便进行开发,virtualenv就是用来解决这个问题的。下面介绍使用PyCharm创建VirtualEnvironment的方法。    PyCharm可以使用virtualenv中的功能来创建虚拟环境。Py…

    2022年8月27日

发表回复

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

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