c++ ffmpeg 浅谈YUV444、YUV422、YUV420(2)

news2024/11/26 10:02:47

本期将会给大家介绍YUV相关基础知识,同时也介绍威创网络分布式系统的卓越色彩处理技术。

    1.什么是YUV色彩空间

    2.YUV采样格式

    3.YUV不同采样格式对图像画质的影响分析

一、什么是YUV色彩空间?

        YUV是视频、图片、相机等应用中常常使用的一类图像格式,是所有“YUV”像素格式共有的颜色空间的名称。与RGB格式(红-绿-蓝)不同,YUV格式用一个称为Y(相当于灰度)的“亮度”分量和两个“色度”分量表示,分别称为U(蓝色投影)和V(红色投影)。对于同一个观测像素点,在RGB空间和YUV空间可进行了不同角度的表示,两者满足单射线性变换,两者可以通过线性变换公式进行转换,如图1所示。

图1 RGB空间与YUV空间

YUV也可以称为YCbCr,虽然这些术语定义略有不同,但它们往往会混淆并可互换使用。

    Y表示亮度分量:如果只显示Y的话,图像看起来会是一张黑白照。

    U(Cb)表示色度分量:B-Y,图像蓝色部分去掉亮度,反映了RGB输入信号蓝色部分与RGB信号亮度值之间的差异。

    V(Cr)表示色度分量:R-Y,图像红色部分去掉亮度,反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。

    二、YUV采样格式

    从前述定义中,可以了解YUV空间描述RGB空间的像素颜色按“亮度”分量和两个“色度”分量进行了表示。这种编码表示也更加适应于人眼,据研究表明,人眼对亮度信息比色彩信息更加敏感。而YUV下采样就是根据人眼的特点,将人眼相对不敏感的色彩信息进行压缩采样,得到相对小的文件进行播放和传输。

    1)YUV444

    色度信号分辨率最高的格式是YUV4:4:4,每4点Y采样,就有相对应的4点U和4点V。换句话说,每个Y值对应一个U和一个V值。在这种格式中,色度信号的分辨率和亮度信号的分辨率是相同的。这种格式主要应用在视频处理设备内部,避免画面质量在处理过程中降低。

图2 YUV444采样格式

    一种简单的YUV444区分方法:如图2所示,4个Y值,第1行获得4组UV色度值(如像素1、2、3、4均可独立表示),第2行也获得4组UV色度值(如像素5、6、7、8均可独立表示)。

 2)YUV422

    色度信号分辨率格式YUV4:2:2,每4点Y采样,就有相对应的2点U和2点V。可以看到在水平方向上的色度表示进行了2倍下采样,因此YUV422色度信号分辨率是亮度信号分辨率的一半。

    图3 YUV422采样格式

    一种简单的YUV422区分方法:如图3所示,4个Y值,第1行获得2组UV色度值(其中像素1、2合并为1组UV值表示,3、4合并为1组),第2行获得2组UV色度值(其中像素5、6合并为1组,7、8合并为1组)。

    3)YUV420

    色度信号分辨率格式YUV4:2:0,每4点Y采样,就有相对应的1点U和1点V。YUV420色度信号分辨率是亮度信号分辨率的1/4。

    图4 YUV420采样格式

    一种简单的YUV420区分方法:如图4所示,4个Y值,第1行获得2组UV色度值(其中1、2合并为1组,3、4合并为1组),第2行获得0组UV色度值(5-8像素的色度值全丢弃)。即在水平方向压缩的基础上,再在垂直方向上再进行了压缩。

    三、YUV不同采样格式对图像画质的影响分析

    根据前述的YUV采样格式分析,这里我们分析一下对图像画质的影响。我们将一个原始图像为8*8像素的红蓝相间的图案,分别按YUV444、YUV422、YUV420不同的采用格式采样,然后再还原输出。

    图5(a):我们可以看到YUV444的色度信号的分辨率和亮度信号的分辨率无损失,我们获得了与原始图案一致的还原画面图案。

    图5(b):YUV422获得还原图案在水平方向上,已经出现了丢失,从绿色所框选的像素来看,YUV422在水平方向上丢失了另一个像素点的色彩值,故在画面还原时仅是对前一个像素值简单的复制重构。

    图5(c):YUV420获得还原图案在水平方向以及垂直方向上,均出现了丢失,获得的还原图像与原始图像出现很大的失真。

图5 YUV不同采样格式对图像画质

    由图5所示的直观观测,对图像高频细节的图像表达上,YUV444优于YUV422,YUV422优于YUV420。

    在信号传输带宽的节省上,YUV420效率优于YUV444,YUV422优于YUV444。因此在普通的视频编解码算法上,为节省传输带宽开销,普遍采用YUV420或者YUV422的采样格式。

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

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

相关文章

达美乐面试(部分)(未完全解析)

Java如何保证非线程安全的数据结构(比如HashMap)的原子性?读多写少时用哪种锁好? A: 方法1:CAS等乐观锁机制,方法2:如果读多写少,可以使用读写锁(ReentrantReadWriteLock&#xff0…

【MySQL 数据库】3、多表查询

目录 一、多表关系二、多表查询三、内连接四、外连接五、自连接六、联合查询七、什么是子查询八、标量子查询九、列子查询十、行子查询十一、表子查询十二、多表查询练习题 一、多表关系 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块…

移动端H5页面PDF操作及预览

环境:nodejs 适配:移动端主流浏览器支持企业微信低版本 插件:pdfjs-dist 2.6.347 方案一 本地构建 拉取项目: git clone https://github.com/mozilla/pdfjs-dist.git 全局安装gulp npm install -g gulp-cli 安装项目依赖 np…

chatgpt赋能python:Python中的s.len()方法介绍

Python中的s.len()方法介绍 Python中有各种字符串处理方法,其中s.len()方法是一个重要的方法之一。s.len()返回一个字符串s的长度。这是一个非常基本的方法,但是在很多情况下都会被使用。本文将介绍Python中s.len()方法的一些用法和注意事项。 s.len()…

Redis持久化及集群

Redis可以通过将数据保存在磁盘里实现持久化功能, 以防止宕机导致的数据大量丢失.但是持久化只能保证在磁盘不损坏的情况下, 长时间保存数据, 如果一旦磁盘损坏, 数据仍然会丢失. 为了解决这个问题, 主从复制应允而生. 主从复制是Redis集群中的一总, 其中一个Redis做主, 其他R…

C++数据结构:线性顺序表(数组)

文章目录 前言一、vector简介二、泛型编程自定义数组结构1、定义类2、删除、读取元素和首尾指针3、修改元素、获取元素数量、和插入 总结 前言 将一个线性表存储到计算机中,把线性表的结点按逻辑顺序依次存放到一组地址连续的存储单元里,用这种方法存储…

nodejs+vue+elementui个人心情日志博客网站系统5ht83

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 前端vueelementui,博客管理系统模块 该模块是博客管理系统中的重要模块,它也是博客管理系统的主模块,该模块的…

从 WebKit 看浏览器内核架构

浏览器常见的浏览器内核有:Blink、WebKit、Gecko、Trident 等,目前 WebKit 内核占据了非常大的的市场,包括 Chrome、Safari、安卓浏览器等市面上的主流浏览器,都使用了 WebKit 内核。 从 WebKit 看浏览器内核架构 既然 WebKit 这么…

lwip的arp协议的意义和更新时机

ARP协议存在的目的 ARP(Address Resolution Protocol)协议是 TCP/IP 协议族中的一个协议,它的主要目的是将 IP 地址解析为 MAC(Media Access Control)地址,以便在局域网中进行通信。 具体而言&#xff0c…

## 如何顺序处理设备上报的数据

1. 引言 随着智能技术的发展,市场上出现了很多的智能设备,其具有连接网络的能力。用户可以实现远程控制,并且设备也可上报自己的状态,实现云端对设备的运行情况分析。在某些情况下需要保证设备上报状态的有序性,例如传…

Unity之ShaderGraph 节点介绍 Input输入节点

目录 Input(输入)  1、Basic(基本)   1) Boolean(布尔)   2) Color(颜色)   3) Constant(常量)   4) Integer(整型)   5)…

weblogic CVE-2023-21839 复现

影响版本 Weblogic 12.2.1.3.0 Weblogic 12.2.1.4.0 Weblogic 14.1.1.0.0 这里是用的docker下载的vulhub的CVE-2023-21839 靶机和攻击机都是192.168.85.131 docker 启动环境 ocker-compose up -d 然后看一下说明书 vim README.zh-cn.md 让你访问ip:7001/console 好&a…

chatgpt赋能python:PythonWoody:网站优化工具的首选

Python Woody: 网站优化工具的首选 在当今数字化时代,网站被认为是企业的门面。 然而,这只是建立网络存在的起点。 在许多情况下,优化网站并提高其排名对于企业的成功至关重要。 在这里,Python Woody成为了网站优化工具的首选。 …

LVGL-最新版本及其版本定义标准

lvgl的最新版本是9.0.0,处于开发分支中。 稳定版本是8.3.0. 建议一般开发使用稳定版8.3.0. .\lvgl.h定义了当前版本 /*************************** CURRENT VERSION OF LVGL ***************************/ #define LVGL_VERSION_MAJOR 8 #define LVGL_VERSION_MINO…

《JavaEE》HTTPS

文章目录 HTTPS起源HTTPS对称加密非对称加密两者的区别 HTTPS的安全问题使用对称加密正常交互黑客入侵解决方案 非对称加密引入非对称加密后的流程 中间人攻击黑客的入侵方案加入后的流程解决方案黑客再次加注解决方案 ​👑作者主页:Java冰激凌 &#x1…

ChatGPT突然上线APP!iPhone可用、速度更快,GPT-4用量限制疑似取消

新建了一个网站 ChatGPT人工智能中文站 - ChatGPT人工智能中文站http://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT免费镜像站 OpenAIChatGPT正式推出iOS应用程序的官方公告突然发布。 立即在苹果商店的免费列表中排名第二,在效率列表中排名第一。 &am…

VScode+LaTeX 配置时遇到的一些问题

文章目录 VScodeLaTeX 配置时遇到的一些问题1. json 配置文件总览2. 使用 SumatraPDF 作为 pdf 阅读器时的双向跳转3. 选择使用 VScode 内置的 tab 打开 pdf 或者使用外部 SumatraPDF 打开4. 关于 LaTeX Workshop 插件的安装 VScodeLaTeX 配置时遇到的一些问题 1. json 配置文…

『MySQL 实战 45 讲』17 - 如何正确地显示随机消息?(随机抽取 3 个词)

如何正确地显示随机消息?(随机抽取 3 个词) 需求:从用户的英语单词表中,随机选择三个单词,创表和插入数据如下: # 建表 CREATE TABLE words (id INT(11) NOT NULL AUTO_INCREMENT,word VARCHA…

Chatgpt版本的opencv安装教程

文章目录 前言一、安装opencv方法一二、安装opencv方法二 前言 最近刚买了台RTX 3070的电脑,顺手刷了个ubuntu系统专门玩Carla,为了方便查资料,也顺手搭了浏览chatgpt的环境,用的clash,还挺好用的。然后刚好在看Carla…