Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YUV简介

YUV简介

作者头像
全栈程序员站长
发布于 2022-09-13 02:19:40
发布于 2022-09-13 02:19:40
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

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

本文目的:介绍YUV的相关概念

颜色空间 color space

在电脑图形中我们常会遇到RGB颜色。RGB中的红绿蓝直接分别对应了可见光的部分。 RGB值能建立一个精确的数字坐标系统,称作颜色空间(color space)。红色部分定义了坐标系中的一个轴。 其次是绿色和蓝色。如下图所示。所有有效的RGB值都在这个颜色空间里。

例如 洋红色(pure magenta) 是 100% blue,100% red, 和 0% green.

RGB是代表颜色的一种方式。其它坐标系也可以代表颜色。

YUV是一种颜色编码方法。数字视频常用YUV格式来压缩。

YUV定义

YUV是将亮度信息和颜色信息分别编码的一系列颜色空间的统称。和RGB相似,YUV使用3个值来表示颜色。 这3个值称为Y’,U,和V。(事实上,YUV这个称呼在电脑视频中总是指代Y'CbCr。然而在本文中YUV经常用来指代和Y'CbCr相同原理的颜色空间)

YUV类似RGB,都能代表颜色表示颜色

Y'部分,也称作luma,代表颜色中的亮度值。这个记号(')是用来与称为Y的luminance(亮度)作区别的。

luminance可从线性RGB值中导出,luma从非线性(gamma-corrected)RGB值中导出。 luminance更接近真实亮度,但luma在技术上更常用。 点记号(')通常被忽略,但YUV颜色空间总是使用luma。后文会混用YY'

标准定义电视中,luma计算公式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Y' = 0.299R + 0.587G + 0.114B

这个公式揭示了人眼对于特定波长的光更为敏感。蓝色是最暗淡的,绿色是最明亮的,红色处于两者之间。 这个公式也影响了早期电视使用的荧光粉。

现代电视技术使用了更新的公式,用于高清电视

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Y' = 0.2125R + 0.7154G + 0.0721B

公式相关定义可查询ITU-R BT.601

U和V部分,称为色度值或颜色区分值。由以下公式计算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
U = B - Y'
V = R - Y'

YUV能够完整地还原回RBG值。传输来的YUV,能转换为相应的颜色值。

采样方式

采样通常用3部分的比例表示J:a:b(例如4:2:2)。如果有alpha通道,也用4个数的比例(例如4:2:2:4)。

概念上来说,我们考虑的是J个像素宽,2个像素高的区域。

  • J: 水平采样的参考,也可以说是宽度,通常是4
  • a: 第一行J个像素的色度个数(Cr, Cb)
  • b: 第一行和第二行有差别的色度个数(Cr, Cb)。注意b的值通常为0或者等于a。

主流的采样方式有三种:YUV4:4:4,YUV4:2:2,YUV4:2:0

YUV4:4:4

第一行有4组UV。第二行有另外的4组UV。这也叫做“全采样”。

YUV4:2:2

第一行有2组UV。第二行有另外2组UV。

看起来就像是2个像素点共用1组UV(1个U和1个V)

YUV4:2:0

我们看虚线框内。第一行有2组UV。第二行没有自己的UV,用的UV和第一行相同。

看起来就像是4个像素共用1组UV。

YUV的优点

由于历史原因,模拟电视部分使用了YUV格式。模拟彩色电视信号能够兼容以前的黑白电视。 彩色电视信号携带着色度值(U和V)与灰度值。黑白电视忽略色度值,显示出灰度图片。 彩色电视可以提取出色度信息并将信号还原回RGB。

在今天YUV有着另一个优点。相比于亮度的变换,人眼对于色彩的变换更迟钝。那么一张图片中,可以少存放一些色度信息。 例如,最开始1个像素有Y’UV这3个值。可以将同水平线(horizontal resolution)上的色度值的数量降为亮度值数量的一半。

换言之,一行像素中,每2个亮度值共用1个U和V值。 假设每个值是8位,则每2个像素需要4个字节来表示(2个Y’,1个U和1个V)。平均下来每个像素用16位来表示。 相当于损失了30%的24位RGB编码。

上面的小例子:最开始2个像素共需要6个字节(2套Y’UV)。现在2个像素共需要4个字节(2个Y’,1个U和1个V)。

YUV并没有压缩RGB信息。除非色度值被降低采样率。一个YUV像素和一个RGB像素有着相同的大小。 从RGB换算成YUV并没有损失信息。若没有降采样率,一个YUV像素可以无损地转换回RGB像素。 降低采样率会损失一些颜色信息但能让YUV图像更小。如果处理得当,这种损失是可以接受的。

计算机视频中的YUV

上面的YUV并不是数字视频中最准确的转换方式。数字视频通常使用一种称为Y'CbCr的YUV格式。 通常,Y'CbCr对于YUV的范围是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Y'     16235
Cb/Cr  16240, with 128 representing zero

上面这些范围以8位Y'CbCr为前提。 接下来是Y'CbCr的计算过程,使用BT.601的luma定义。

  1. RGB值范围是[0,1]。换言之纯黑是0,纯白是1.这些是非线性的RGB值。
  2. 计算luma。BT.601中,Y' = 0.299R + 0.587G + 0.114B,如前文所述。
  3. 计算色度值(B – Y’) 和 (R – Y’)。这些值范围, (B – Y’)范围是 +/- 0.886;(R – Y’)范围是+/- 0.701
  4. 缩放色度值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Pb = (0.5 / (1 - 0.114)) × (B - Y')
Pr = (0.5 / (1 - 0.299)) × (R - Y')

这里的缩放因子的设计目的是为了计算得到同样的范围,+/- 0.5。 它们定义了一个称为Y'PbPr的YUV颜色空间。这种颜色空间用于模拟信号视频。 5. 通过Y'PbPr计算出Y'CbCr

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Y' = 16 + 219 × Y'
Cb = 128 + 224 × Pb
Cr = 128 + 224 × Pr

计算得到的值的取值范围就是前面所列的Y'CbCr范围。当然也可以直接将RGB值转换为Y'CbCr

参考

拓展阅读

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【iOS】越狱后的“救命稻草”
pwn最近更新了好几次unc0ver,相信各位朋友已经在各大公众号,论坛看到了,这里就不说它了
zby1101
2020/08/05
9890
【iOS】越狱后的“救命稻草”
全系(iOS7-iOS14)清除越狱教程
前几天一个群友11.0.3想清除越狱了,这系统一看就是买来手机没升级过系统,为了保留系统,清除掉越狱,众所周知,10.3+有了系统快照(system snap)那就直接用snapback呗,后来询问得知,越狱环境也有问题,cydia装不上插件,后来小编请教了一位大佬,回忆起11.0-11.3可以利用脚本清理越狱,今天就整理一下iOS7-iOS14系清理越狱的教程吧(全凭小编自己的知识存储,可能某些系统还有别的方法,我尽可能的多写几种方法)
zby1101
2020/10/23
15.1K0
全系(iOS7-iOS14)清除越狱教程
【教程】checkra1n越狱教程+常用插件推荐
重要:越狱骨灰级玩家请忽略本篇文章,篇幅较长,大约2500+字,突有不适感,请返回上一页,继续忙你的事情
zby1101
2020/08/05
11K0
【教程】checkra1n越狱教程+常用插件推荐
iOS越狱是什么?大佬来解释来咯(一)
那么root是什么呢,无论安卓和iOS都有两个用户,一个是root,另一个是mobile,前者相当于windowns的system,也就是管理员administrator,后者相当于一个非管理员用户,没有拥有系统管理权限,通过一些特殊手段,例如第三方root工具,这里我就不详细说了,因为我接触安卓不多,不再赘述。
zby1101
2020/08/05
1.1K0
afc2add是什么_appsync怎么使用
APPsync是iPhone、iPad、iPod touch越狱后最常安装的补丁,安装后可以绕过系统验证,随意安装运行破解的ipa软件。
全栈程序员站长
2022/08/18
1.3K0
afc2add是什么_appsync怎么使用
iOS逆向工具之Cydia(iOS)软件介绍
我之前的工具介绍中,也有OpenSSH的介绍. 文章地址: 汇编逆向工具集(二) --> OpenSSH
conanma
2021/11/04
1.3K0
iOS逆向-ipa包重签名及非越狱手机安装多个微信
前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的。随着苹果生态圈的逐渐完善、及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大量的越狱用户。 前段时间我自己申请了个微信小号,申请小号的目的就是原来微信号好友中乱七八糟的人实在太多,感觉自己的朋友圈都是一些无关紧要的垃圾信息,曾经关闭了一段时间的朋友圈,但是最近遇到了好多技术上很强的同行,还想了解大佬们的动态。于是我就想着申请了个小号,但是麻烦来了,iPhone手机并不像安卓手机那
czjwarrior
2018/05/31
3.9K0
运维:推荐一款功能强大的磁盘分析工具——Files Inspector
Files Inspector是一款功能强大的磁盘分析工具,能够帮助用户随时查找并清除电脑磁盘中不需要的文件,同时还能清理不需要的数据。它还能够对Express测试进行分析,并分析文件夹、文档、图像、视频、音乐和其他文件,并显示磁盘上占用的空间。如果您需要此款工具,欢迎下载使用。
小明互联网技术分享社区
2024/04/16
5430
运维:推荐一款功能强大的磁盘分析工具——Files Inspector
如何在iPhone上安装Android操作系统,而且还不需要刷机,体验也很流畅
本文是教各位如何安装谷歌的Android操作系统到iPhone上。事先警告,动手能力不强,不喜欢折腾的同学还是不要试了。
知识与交流
2024/04/02
4K0
如何在iPhone上安装Android操作系统,而且还不需要刷机,体验也很流畅
iOS逆向之使用unc0ver越狱 iOS13.5
因为工作需要,笔者最近在研究越狱,网上看了很多文章,这篇文章记录了给iOS 13设备越狱的方式和过程,希望对你有帮助。
VV木公子
2020/09/11
13.1K0
iOS逆向之使用unc0ver越狱 iOS13.5
偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
Intro 虽然“只有偏执狂才能够生存”这句话已经被假药停给毁了,但是作为一只有逼格的高大上的iOS逆向分析研究员,难道如果有现成的macOS/iOS全版本镜像可以下载并且无限“漫游”,难道你就不想来一套么? 在本文中,你将能够获得的是: 1.macOS:10.12、10.11、10.10、10.9、10.8、10.7:六个版本的虚拟机一键安装; 2 .使用苹果的KDK套件(Kernel Develop Kit)对虚拟机里的macOS Sierra 10.12进行内核调试; 3 .iPhone 4s
FB客服
2018/02/27
3K0
偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
【iOS】浅析近期越狱工具+“平刷”工具
越狱工具:unc0ver,chimera,checkra1n(chimera1n)
zby1101
2020/08/05
6.2K0
【iOS】浅析近期越狱工具+“平刷”工具
IOS7完美越狱方法教程及工具下载
就在几天之前,Apple发布了IOS7 beta2测试版。相比于beta1而言,第二个测试版对于性能和稳定性都做出了不少优化,并且带来了Ipad支持。相信不少喜欢尝鲜的朋友已然更新到IOS7 beta2了。但对于国内的很多用户而言,越狱仍然是必不可少的一个步骤。虽然IOS7的越狱工具还没有出现,但如果你有一台iPhone 4,则可以利用已有的工具对IOS7进行越狱。
reizhi
2022/09/26
1.3K0
IOS7完美越狱方法教程及工具下载
iOS逆向之必要软件安装
通常,在iOS设备越狱后,需要安装一些必要的插件来增强越狱设备的可操作性。过去iOS设备越狱后大家首先会在cydia上添加pp源(http://apt.25pp.com)。但因为pp助手已停止服务,所以这个源已经不可用,对于一些cydia官方源没有提供的插件,我们需要自己寻找源或者寻找插件安装包。
VV木公子
2020/09/17
9.7K0
iOS逆向之必要软件安装
ios13.6降级13.3_ios14强制降级ios13
大家好,又见面了,我是你们的朋友全栈君。 演示 https://player.bilibili.com/player.html?aid=88886632 7p IOS13.3 bypass i
全栈程序员站长
2022/09/27
9540
(1)越狱环境搭建
什么是iOS Jailbreak(iOS越狱) 利用iOS系统漏洞,获取iOS系统的最高权限(Root),解开各种限制(合法行为) Jailbreak优缺点: 优点 自由安装各种实用的插件、主题、APP 修改系统APP的一些默认行为 自由安装非AppSore来源的APP 灵活管理文件系统,让iPhone可以像U盘那样灵活 给开发者提供了逆向工程的环境 缺点 不予保修 费电,越狱后的iOS系统会常驻一些进程,耗电速度约提升10%~20% 不再受iOS系统默认的安全保护,容易被恶意软件攻击,个人隐私
czjwarrior
2018/05/28
1.3K0
如何通过U盘越狱iPhone绕ID最新详细简单教程
3.将准备的U盘插上电脑,点击"Select drive",选中插上的U盘
知识与交流
2021/04/02
7.1K0
如何通过U盘越狱iPhone绕ID最新详细简单教程
手把手教大家学习,全网最详细的手机全机型 刷机教程
通俗来讲刷机就是给手机重装系统。刷机可以使手机的功能更加完善并且可以使手机还原到原始状态。一般情况下Android手机出现系统被损坏造成功能失效或无法开机也通常通过刷机来解决。一般Andriod手机刷机分为线刷卡刷。
知识与交流
2024/05/07
7K0
手把手教大家学习,全网最详细的手机全机型 刷机教程
iOS逆向之手动安装ipa
在对iOS app进行安全分析时,为了动态调试iOS app或者hook iOS app,需要先将app安装到手机中。有的iOS app可以通过App Store或者其他手机助手app直接下载安装,而另外的app如未签名app、或者从网上下载得到的app的安装文件ipa则需要通过手动安装到手机中。下文则主要介绍通过手动安装ipa到iOS设备中。
用户4682003
2022/05/19
3.5K0
iOS逆向之手动安装ipa
IOS 越狱插件介绍与一点经验
总体来说,如果你的系统是13.5的话(尚未升级到13.5.1),实际上整个流程比Android的Root还要简单。因为Iphone是我的主力机,为了避免不必要的麻烦,一直没有做越狱操作。
xuing
2020/06/17
3.1K0
IOS 越狱插件介绍与一点经验
相关推荐
【iOS】越狱后的“救命稻草”
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验