当前位置: 首页 > news >正文

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的算法

相关文章:

Android YUV存储方式

排名 性能:YUV444 > YUV422 > YUV420 > YUV411 YUV444:YUV444 提供最高质量的色彩准确性和图像细节,但需要更多的存储空间和传输带宽。适用于对图像质量要求很高的应用,如专业视频编辑或高端图像处理。YUV422&#xff1…...

SSM家具个性定制管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 家具个性定制管理系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用…...

来自Microsoft Teams的摄像头背景图片

原文件在👆,下面是预览图 如果你安装了Microsoft Teams也可以搜索MSTeams,就在MSTeams/Backgrounds...

飞书如何接入ChatGPT-打造个人智能问答助手实现无障碍交流

目录 前言 环境列表 1.飞书设置 2.克隆feishu-chatgpt项目 3.配置config.yaml文件 4.运行feishu-chatgpt项目 5.安装cpolar内网穿透 6.固定公网地址 7.机器人权限配置 8.创建版本 9.创建测试企业 10. 机器人测试 总结 前言 在飞书中创建chatGPT机器人并且对话&am…...

Proteus仿真--基于1602LCD的秒表设计

本文介绍基于1602LCD的秒表设计(完整仿真源文件及代码见文末链接) 仿真图如下 本设计中80C51单片机作为主控,用1602LCD作为显示模块,共有2个按键,K1按键用于秒表计时启停控制,K2用于清零显示内容 仿真运…...

香港站群服务器中1C/2C/4C/8C 的概念及区别

​  在选择香港站群服务器时,经常会看到1C、2C、4C和8C等不同的IP段。这些IP段代表了不同的子网掩码长度,也反映了服务器的IP地址数量和丰富性。 让我们来了解一下什么是IP段。IP段是指一组连续的IP地址,其中每个地址的前三个数字相同&…...

搭建SRS视频服务器

去官方网站下载FFmpeg6.1 https://ffmpeg.org/download.html拷贝到CentOS7.9中的/opt目录下,解压并重命名 tar -xvf ffmpeg-6.1.tar.xz 解压后编译安装 ./configure make make install从github下载SRS4.0release 解压后 如果ffmpeg的路径不在/usr/local/bin/ffmpe…...

【C++初阶】STL详解(八)List的模拟实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…...

Day02嵌入式---按键控灯

一、简单介绍 按键控制灯开关是一种常见的嵌入式系统示例项目,它通常用于演示嵌入式系统的基本控制能力。该项目由一个或多个LED和一个按键组成。通过按下按键,可以控制LED的开关状态,从而实现灯的亮灭控制。 二、查看功能手册 2.1 查看硬件…...

Centos设置nginx开机自启动设置

Centos设置nginx开机自启动设置 要设置CentOS中的Nginx开机自启动,可以按照以下步骤进行操作: 首先,登录到CentOS服务器上,并以root用户或具有sudo权限的用户身份执行以下命令来安装Nginx(如果尚未安装)&a…...

拼接合并yuv序列转成mp4

ffmpeg需要用支持libx264的版本,如果需要,可以从这个网站下载编译支持libx264\x265的ffmpeg https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.1-essentials_build.7z #-*- coding:utf-8-*- import osif __name__ "__main__":# 1 输入…...

访谈 破风之人毛京波,选择难而正确的路

“无论是在燃油时代还是电动时代,我们所做的一切,只为回归纯粹的驾驶乐趣。”履新路特斯中国总裁整整一年的毛京波,从不放过任何一个展示路特斯品牌驾驭精神的机会。 11月17日,广州车展开幕首日,位于5.2馆的路特斯“冠…...

java实现一个简单的监听器

在 Java 中,我们可以通过实现监听器(Listener)模式来处理事件和回调。监听器模式是一种常见的设计模式,用于实现对象间的松耦合通信。本文将介绍如何在 Java 中实现一个简单的监听器。 步骤 以下是实现一个监听器的基本步骤&…...

用HALCON标定助手对相机进行标定

任务要求: 已知相机镜头焦距f为8mm,相机单个CCD像素在水平和竖直两个方向上的尺寸均为3.75微米,相机为普通透光镜头和面阵相机,对相机进行标定,测量相机的内外参数。 操作步骤: 1. 在HALCON中运行gen_ca…...

5 个适用于 Windows 的顶级免费数据恢复软件

对于计算机来说,最重要的是用户数据。除了您的数据之外,有关计算机的其他所有内容都是可替换的。这三个是数据丢失的最常见原因: 文件/文件夹删除丢失分区分区损坏 文件/文件夹删除 文件/文件夹删除是最常见的数据丢失类型。大多数时候&am…...

MySQL 批量插入记录报 Error 1390 (HY000)

文章目录 1.背景2.问题3.分批插入4.一次最多能插入多少条记录?5.什么是 Prepared Statement?参考文献 1.背景 Golang 后台服务使用 GORM 实现与 MySQL 的交互,在实现一个通过 Excel 导入数据的接口时,使用 Save 方法一次性插入大…...

线程池(用于处理Runnable任务或Callable任务)

一&#xff0c;线程池 二&#xff0c; 如何创建线程池 案例&#xff1a; //1,通过ThreadPoolExecuter创建一个线程池对象ExecutorService pool new ThreadPoolExecutor(3,5,8,TimeUnit.SECONDS,new LinkedBlockingQueue<>(4),Executors.defaultThreadFactory(),new Thr…...

MATLAB在信号系统中的应用

1.产生一个幅度为1, 基频为2Hz&#xff0c;占空比为50%的周期方波.要求画出图形。 在MATLAB中&#xff0c;函数square(w0*t, DUTY)产生基本频率为w0 (周期T2*pi/w0)、占空比DUTY (τ/T)*100的周期矩形波&#xff08;方波&#xff09;&#xff0c;默认情况下占空比DUTY50。占空…...

Jenkins与Docker的自动化CI/CD流水线实践

Pipeline 有诸多优点&#xff0c;例如&#xff1a; 项目发布可视化&#xff0c;明确阶段&#xff0c;方便处理问题 一个Jenkins File文件管理整个项目生命周期 Jenkins File可以放到项目代码中版本管理 Jenkins管理界面 操作实例&#xff1a;Pipeline的简单使用 这里是比较…...

企业数字化转型的作用是什么?_光点科技

在当今快速变化的商业环境中&#xff0c;数字化转型已成为企业发展的重要策略。企业数字化转型指的是利用数字技术改造传统业务模式和管理方式&#xff0c;以提升效率、增强竞争力和创造新的增长机会。 提升运营效率&#xff1a;数字化转型通过引入自动化工具和智能系统&#x…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...