Android YUV存储方式

排名


性能:YUV444 > YUV422 > YUV420 > YUV411

  1. YUV444:YUV444 提供最高质量的色彩准确性和图像细节,但需要更多的存储空间和传输带宽。适用于对图像质量要求很高的应用,如专业视频编辑或高端图像处理。
  2. YUV422:YUV422 在性能和存储/传输开销之间取得了平衡。相对于YUV444,它降低了色彩准确性和图像细节,但提供了较小的存储需求。适用于大多数广播和视频领域的应用。
  3. YUV420:YUV420 是最常用的 YUV 格式,通过更进一步的压缩(降低采样率),在牺牲一定图像质量的情况下,大幅减少存储空间和传输带宽。适用于大多数常见的视频应用,包括流媒体和视频通话。
  4. YUV411:YUV411 是最低分辨率的 YUV 格式,通过更大幅度的压缩(更低的采样率)来减少存储空间和传输需求。图像质量牺牲较大,适用于一些低分辨率或存储受限的应用。

实用性:YUV420 > YUV422 > YUV444 > YUV411

  1. YUV420:由于 YUV420 是目前最常用的 YUV 格式,它的广泛支持与兼容性使其成为大多数应用的首选格式。
  2. YUV422:YUV422 在广播和视频领域得到广泛采用,并在许多专业和消费设备中得到支持。
  3. YUV444:YUV444 在专业视频编辑和高端图像处理中被广泛使用,但可能不太常见于一般消费者产品。
  4. YUV411:YUV411 的应用相对较少,适用于特定的低分辨率或存储受限的场景。

兼容性:YUV420 > YUV422 > YUV444 > YUV411

  1. YUV420:YUV420 是最常用的 YUV 格式,几乎所有广播、视频和图像处理设备都支持。它是各种视频编解码器和播放器的标准格式,也被广泛支持于各种平台和操作系统,包括桌面电脑、移动设备和流媒体服务。
  2. YUV422:YUV422 在广播和视频领域得到广泛采用,并在许多专业和消费设备中得到支持。它在大多数现代平台和操作系统上都有良好的兼容性,但相对于 YUV420,一些较旧或较低成本的设备可能不完全支持。
  3. YUV444:YUV444 在专业视频编辑和高端图像处理中被使用,但其广泛兼容性可能受到限制。一些消费者级设备可能不支持 YUV444 格式,特别是在较旧的设备或某些平台上。
  4. YUV411:YUV411 的应用较少,兼容性相对较低。使用 YUV411 格式可能需要特定的设备或平台支持,而一些常见的播放器和编解码器可能不支持此格式。

注:Y表示亮度信息,U和V分别表示蓝色和红色(色度)

YUV411

优点:

  • 存储需求较小:通过将U和V分量的分辨率降低一半,YUV411能够有效地减小颜色信息的存储需求,从而节省存储空间。
  • 兼容性好:YUV411是一种较为流行的色彩编码格式,在许多多媒体应用中广泛使用,因此具有较好的兼容性。

缺点:

  • 色度细节损失:由于U和V分量的分辨率被降低了一半,YUV411在色度信息的表示上存在一定程度的损失,从而导致色度细节的损失。
  • 不适用于细节丰富的图像:由于色度细节的损失,YUV411不适用于细节丰富的图像,例如对于颜色变化较为复杂和细腻的图像,使用YUV411可能会导致颜色失真或细节模糊。

Planar 存储方式:
亮度分量Y1, Y2, Y3, Y4分别对应每个像素的亮度样本。色度分量U1, U2, U3, U4和V1, V2, V3, V4分别对应每个像素的色度样本。每四个相邻的像素共用一个色度U样本和一个色度V样本,这种存储方式提供了更高的色度分量的分辨率,但同时也要占用更多的存储空间。

| Y1 | Y2 | Y3 | Y4 |
|----|----|----|----|
|    |    |    |    |
|    |    |    |    |
|    |    |    |    |
|    |    |    |    |
| U1 |    | U2 |    |
|----|----|----|----|
|    |    |    |    |
|    |    |    |    |
|    |    |    |    |
|    |    |    |    |
| V1 |    | V2 |    |
|----|----|----|----|

Semi-Planar 存储方式:
每四个相邻的像素共用一个色度U样本和一个色度V样本,并且每个像素都有一个亮度Y样本。其中,Y1、Y2、Y3、Y4分别代表四个亮度样本,U1、U2、U3、U4分别代表相应的U样本,V1、V2、V3、V4分别代表相应的V样本。

| Y1 | Y2 | Y3 | Y4 |
|----|----|----|----|
| U1 | U2 | U3 | U4 |
|----|----|----|----|
| V1 | V2 | V3 | V4 |

YUV420:

优点:

  • YUV420是最常见和广泛支持的色彩编码格式。它在视频压缩和传输中被广泛采用,因此在各种设备和平台上具有很好的兼容性。
  • YUV420通过对亮度和色度分量进行适度的子采样,实现了较高的压缩比。相比于YUV444格式,它可以有效地减少存储和传输所需的数据量。
  • 子采样的方式有助于保持图像的主要细节和视觉感知。虽然色度分量的分辨率相对较低,但人眼对色彩细节的感知度较低,因此对于大多数应用场景来说,图像的质量仍然足够好。

缺点:

  • YUV420相对于YUV444来说,在色彩保真度方面有一定损失。由于色度分量的子采样,部分色彩细节可能会丢失或降低。
  • 在一些对色彩准确度要求较高的应用中,如专业图像处理、电影制作等领域,YUV420可能不够理想,因为它在细节和颜色还原方面的表现较弱。
  • YUV420格式在进行图像编辑和处理时可能需要更多的计算和处理步骤,因为需要对亮度和色度分量进行插值和恢复以达到源图像的准确还原。

Planar 存储方式:
每个像素都有一个亮度Y样本。相邻的四个像素共享一个色度U和一个色度V样本,即U1和V1为第一个四个像素的色度样本,U2和V2为第二个四个像素的色度样本。在上述例图中,Y1到Y4代表亮度样本,U1到U4代表色度U样本,V1到V4代表色度V样本。这种存储方式通过对亮度和色度进行适度子采样,实现了较好的图像质量,并在大多数情况下仍能保持良好的压缩比。Planar存储方式能够提供更精确的色彩还原能力,但相应地需要更多的存储空间和较低的编码解码效率。

| Y1 | Y2 | Y3 | Y4 |
|----|----|----|----|
| U1 | U2 | U3 | U4 |
|----|----|----|----|
| V1 | V2 | V3 | V4 |

Semi-Planar 存储方式:
每个像素都有一个亮度Y样本。相邻4个像素共享一个色度U和一个色度V样本。Y1到Y4代表亮度样本,U1、V1、U2、V2依次代表色度U和V样本。这种存储方式通过对亮度和色度进行适度子采样,实现了较高的压缩比,并在大多数情况下仍能保持良好的图像质量。Semi-Planar存储方式相较于Planar存储方式,在U和V分量的存储上进行了合并,以便提高编码和解码的效率。

| Y1 | Y2 | Y3 | Y4 |
|----|----|----|----|
| U1 | V1 | U2 | V2 |
|----|----|----|----|

YUV422:

  • 优点:相比于 YUV444,YUV422 通过减少 U 和 V 分量的采样率,可以在减少存储和传输开销的同时,保持较高的图像质量和色彩准确性。
  • 缺点:相对于 YUV444,YUV422 的图像质量和色彩准确性稍有损失,因为 U 和 V 分量的采样率降低了一半。
  • 起源时间:YUV422 是在早期的彩色视频系统中引入的,以平衡存储和传输开销与图像质量之间的权衡。

Planar 存储方式:
在YUV422的Planar存储方式中,每个像素都有一个亮度Y样本,并且每四个相邻的像素共用一个色度U样本和一个色度V样本。

| Y1 | Y2 | Y3 | Y4 |
|----|----|----|----|
| U1 | U2 | U3 | U4 |
|----|----|----|----|
| V1 | V2 | V3 | V4 |

Semi-Planar 存储方式:

亮度信息Y存储在连续的像素中,而色度信息U和V交替存储在一组像素中,每两个相邻像素共用一个色度样本。

| Y1 | U1 | Y2 | V1 |
|----|----|----|----|
| Y3 | U2 | Y4 | V2 |
|----|----|----|----|
| Y5 | U3 | Y6 | V3 |
|----|----|----|----|
| Y7 | U4 | Y8 | V4 |

YUV444

  • 优点:YUV411 是一种低分辨率的 YUV 格式,通过更大幅度的 U 和 V 分量的采样率降低,可以进一步减少存储和传输开销。
  • 缺点:相对于其他 YUV 格式,YUV411 提供的图像质量和色彩准确性较低,因为 U 和 V 分量的采样率大幅降低。
  • 起源时间:YUV411 是在早期的摄像机和视频存储系统中引入的,并在某些低分辨率和存储受限的应用中使用。

Planar 存储方式:
每四个相邻的像素共用一个色度(UV)样本,并且每个像素都有一个独立的亮度(Y)样本。亮度分量Y、色度分量U和色度分量V被分别存储在不同的平面上,每个平面中具有相同的分辨率,且每个像素的对应分量均位于相同的位置。

| Y1 | Y2 | Y3 | Y4 |
|----|----|----|----|
| U1 | U2 | U3 | U4 |
|----|----|----|----|
| V1 | V2 | V3 | V4 |

Semi-Planar 存储方式:
亮度分量 Y1, Y2, Y3, Y4 分别对应每个像素的亮度样本。色度分量 U1, V1, U2, V2 交替存储在同一平面上,每个像素的色度分量 U 和 V 共享一个样本。这种存储方式节省了存储空间,但在处理色度分量 U 和 V 时需要进行额外的解析步骤。

| Y1 | Y2 | Y3 | Y4 |
|----|----|----|----|
| U1 | V1 | U2 | V2 |

RGB转YUV的算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/170772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阻塞队列介绍(一)

1 基础概念 1.1 生产者消费者概念 生产者消费者是设计模式的一种。让生产者和消费者基于一个容器来解决强耦合问题。 生产者 消费者彼此之间不会直接通讯的,而是通过一个容器(队列)进行通讯。 所以生产者生产完数据后扔到容器中&#xff0c…

Qt QSpinBox与QDoubleSpinBox总结

QSpinBox 与 QDoubleSpinBox QSpinBox 和 QDoubleSpinBox是常用的数值输入和输出组件,我们将它们统称为 SpinBox。 从SpinBox读取的数据就是数值(整数或浮点数),设置数值就可以直接显。QSpinBox 用于输入和输出整数,一…

使用Python的turtle库绘制随机生成的雪花

1.1引言 在这篇文章中,我们将使用Python的turtle库来绘制一个具有分支结构的雪花。该程序使用循环和随机颜色选择来绘制20个不同大小和颜色的雪花。turtle库是一个流行的绘图库,常用于创建图形用户界面和简单的动画。这个代码实现了一个有趣的应用&…

Elasticsearch:ES|QL 查询中的元数据字段及多值字段

在今天的文章里,我来介绍一下 ES|QL 里的元数据字段以及多值字段。我们可以利用这些元数据字段以及多值字段来针对我们的查询进行定制。 ES|QL 源数据字段 ES|QL 可以访问元数据字段。 目前支持的有: _index:文档所属的索引名称。 该字段的…

vue2项目从0搭建(三):配置环境变量及对应的webpack配置

前言 实际业务开发中,一个项目很可能会同时配置好几套环境。 比如:常规开发环境,开发测试环境,正式的测试环境,预发测试环境,客户甲的生产环境,客户乙的生产环境,通用生产环境,独立应用环境,微前端环境,大屏专用环境,移动端环境。 一女多嫁的实际业务场景,就需要我们进行多样…

tensorflow和pytorch都分别存在CPU和GPU版本

TensorFlow和PyTorch都有专门为CPU和GPU优化的版本。它们之间的代码在某些方面有一些不同,但通常可以相对容易地进行转换。以下是一些主要的区别和转换规则: 特性/操作TensorFlowPyTorch转换规则张量创建tf.constant()torch.tensor()创建张量时&#xf…

Android 提示框代码 java语言

在Android中,你可以使用 AlertDialog 类来创建提示框。以下是一个简单的Java代码示例,演示如何创建和显示一个基本的提示框: import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; im…

AUTOSAR汽车电子嵌入式编程精讲300篇-基于机器学习的车载 CAN 网络入侵检测(续)

目录 3.2 车载 CAN 总线异常检测技术总结 基于机器学习算法的 CAN 总线入侵检测 4.1 相关知识概述

RocketMq架构和源码解析

NameServer:作为注册中心,提供路由注册、路由踢出、路由发现功能,舍弃强一致,保证高可用,集群中各个节点不会实时通讯,其中一个节点下线之后,会提供另外一个节点保证路由功能。 Broker&#xf…

vatee万腾的科技征途:Vatee独特探索的数字化力量

在数字化时代的浪潮中,Vatee万腾以其独特的科技征途成为引领者。公司在数字化领域的探索之路不仅是技术的创新,更是一种对未知的勇敢涉足,是对新时代的深刻洞察和积极实践。 Vatee万腾通过独特的探索,展示了在数字化征途上的创新力…

数据结构与算法之二叉树: LeetCode 101. 对称二叉树 (Typescript版)

对称二叉树 https://leetcode.cn/problems/symmetric-tree/ 描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1 1/ | \2 | 2/ \ | / \3 4 | 4 3中间一条线是对称轴 输入:root [1,2,2,3,4,4,3] 输出:true示例 …

Matplotlib子图的创建_Python数据分析与可视化

Matplotlib子图的创建 plt.axes创建子图fig.add_axes()创建子图 plt.axes创建子图 前面已经介绍过plt.axes函数,这个函数默认配置是创建一个标准的坐标轴,填满整张图。 它还有一个可选的参数,由图形坐标系统的四个值构成。这四个值表示为坐…

Spine深入学习 —— 数据

atlas数据的处理 作用 图集,描述了spine使用的图片信息。 结构 page 页块 页块包含了页图像名称, 以及加载和渲染图像的相关信息。 page1.pngsize: 640, 480format: RGBA8888filter: Linear, Linearrepeat: nonepma: truename: 首行为该页中的图像名称. 图片位…

Python武器库开发-前端篇之CSS盒模型(三十一)

前端篇之CSS盒模型(三十一) CSS盒模型是指网页中的每个元素可以看做是一个矩形盒子,该盒子有四个主要部分组成:content、padding、border和margin。其中: content:指盒子中的内容区域,可以包含文本、图像、视频、其他…

RedLock底层源码分析

RedLock底层源码分析 一、Redlock红锁算法 https://redis.io/docs/manual/patterns/distributed-locks/官网说明 1、为什么要学习这个?怎么产生的? ​ 一个很直接的问题,当我使用redis锁的那台机器挂了,出现了单点故障了&#…

游戏开发引擎Cocos Creator和Unity如何对接广告-AdSet聚合广告平台

在游戏开发方面,游戏引擎的选择对开发过程和最终的产品质量有着重大的影响,Unity和Cocos是目前全球两大商用、通用交互内容开发工具,这两款引擎受到广泛关注,本文将从多个维度对两者进行比较,为开发者提供正确的选择建…

Rust10 Building a Multithreaded Web Server [End]

Rust学习笔记 Rust编程语言入门教程课程笔记 参考教材: The Rust Programming Language (by Steve Klabnik and Carol Nichols, with contributions from the Rust Community) Lecture 20: Final Project: Building a Multithreaded Web Server src/main.rs use std::fs; …

84基于matlab的数字图像处理

基于matlab的数字图像处理,数据可更换自己的,程序已调通,可直接运行。 84matlab数字图像处理图像增强 (xiaohongshu.com)https://www.xiaohongshu.com/explore/656219d80000000032034dea

python小数据分析小结及算法实践集锦

在缺乏大量历史数据的新兴技术和产业中,商业分析可能会面临一些挑战。然而,有一些技术和方法可以帮助分析者在数据不充分的情况下进行科学化商业分析,并为决策提供支持。 1. 当面对缺乏大量历史数据的新兴技术和产业时所采常用的技术和方法 …

二进制数据转换成十六进制表示 binascii.hexlify()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 二进制数据转换成十六进制表示 binascii.hexlify() 选择题 binascii.hexlify()参数的数据类型可以是? import binascii number 11 byte_data number.to_bytes() hex_data bin…