Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android二维码扫描开发(二):YUV图像格式详解

Android二维码扫描开发(二):YUV图像格式详解

作者头像
非著名程序员
发布于 2018-02-02 04:13:42
发布于 2018-02-02 04:13:42
2K0
举报
文章被收录于专栏:非著名程序员非著名程序员

前一篇提到了,相机返回的是YUV格式的图像数据,那么YUV到底是怎样一种格式呢?本篇将对YUV图像格式进行详细的解释。

上一篇中,我们了解了Android二维码扫描开发的实现思路和原理。其中从相机里获取到的数据是NV21格式的,NV21属于YUV图像,当然有些外置摄像头会返回其他YUV格式的数据,那么我们就来看一看,到底什么是YUV图像。

RGB图像大家都了解,RGB图像分为了三个颜色分量,R红色分量,G绿色分量,B蓝色分量。而YUV图像,也是分为了三个分量,Y亮度分量,用来表示明亮度,也叫灰阶值,U分量和V分量是色值分量,用来表示图像色彩与饱和度,其中U分量也叫Cb,表示的图像蓝色偏移量,V分量也叫Cr,用来表示图像红色部分偏移量,所以YUV有时也写作YCbCr。

YUV图像把亮度和色度分开了,避免了亮度和色度的相互干扰,可以在降低色度采样率的情况下,保持图像的视觉质量。

[采样比率]

下面我们来看看YUV图像的采样方式,是如何改变色度采样率的。YUV图像有以下几种采样比例:

  • 444采样中,Y:U:V=4:4:4,每一个Y对应一个UV,水平和垂直方向都保持原数据;
  • 422采样中,Y:U:V=4:2:2,每两个Y共用一个UV,水平方向采用2:1采样,垂直方向保持原数据;
  • 411采样中,Y:U:V=4:1:1,每四个Y共用一个UV,水平方向采用4:1采样,垂直方向保持原数据;
  • 420采样中,Y:UV=4:2或Y:U:V=4:1:1,每四个Y共用一个UV,水平方向和垂直方向都采用2:1采样。

如果用×表示Y数据,用〇表示UV数据,那么下面几种采样如下图所示:

[存储方式]

YUV数据的存储方式分为打包的(packed)和平面的(planar)。

packed存储方式是,每一组YUV作为一个连续存储,每个组后面跟着另外一组,常见的有UYVY、YUYV等类型,以YUYV(属于YUV422)为例,储存方式如下图所示:

从上图中可以看出,两个相邻的Y共用一组UV,Y和UV是交错储存的。

planar储存方式是,先是连续的Y,然后是连续的UV,UV可以交错也可以不交错。以YUV420为例,YUV420分为YUV420P和YUV420SP,区别是YUV420P中U和V是分开连续存储的,YUV420SP中,UV是交错存储的。如下图所示:

[常见YUV格式]

  • YUYV,YUYV属于YUV422,根据上面的图像也可以看出来,Y和UV是按照(YUYV)(YUYV)(YUYV)...的格式交错存储的。
  • UYVY,UYVY也是YUV422图像,和YUYV类似,不过是Y和UV的存储顺序按照(UYVY)(UYVY)(UYVY)...的顺序存储的。
  • YUV422P,属于YUV422图像,其中Y、U、V分别连续存储。
  • NV21和NV12,这两种格式都属于YUV420SP图像,Y连续存储,然后是交错的UV,二者区别是,NV21是V在U前,NV12是U在V前。
  • YU12和YV12,这两种格式属于YUV420P图像,Y、U、V分别连续存储。区别是YU12是Y在前,其次是U,最后是V;而YV12是Y在前,其次是V,最后是U。
  • I420,即YU12图像。

[YUV图像处理]

①YUV422和YUV420之间的转换

YUV422转YUV420,需要在垂直方向上隔行采样,只保留奇数行或偶数行的UV数据。YUV420转YUV422,需要在垂直方向上,将一行拷贝成两行。

②YUV转RGB

YUV和RGB的计算方法,用矩阵公式表示的话,如下图所示:

如果用算数公式表示的话如下所示:

RGB转YUV:

Y = 0.299 R + 0.587 G + 0.114 B

U = - 0.1687 R - 0.3313 G + 0.5 B + 128

V = 0.5 R - 0.4187 G - 0.0813 B + 128

YUV转RGB:

R = Y + 1.402 (V - 128)

G = Y - 0.34414 (U - 128) - 0.71414 (V - 128)

B = Y + 1.772 (U - 128)

注意,这里只是单个像素点的转换方法,图像里的批量转换,还需根据YUV的储存格式进行考虑。

YUV图像就先讲解到这里,下一篇我将对YUV图像和RGB图像的亮度计算,以及zxing的使用方法进行介绍。

源码地址:https://github.com/xushanmeng/QRCodeScannerDemo

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
常见图像格式总结
raw数据是sensor输出的原始数据,一般有raw8, raw10, raw12等,分别表示一个像素点有8bit、10bit、12bit数据。是sensor将光信号转化为电信号时的电平高低的原始记录,单纯地没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。
刘盼
2023/09/11
2.2K0
常见图像格式总结
YUV文件格式[通俗易懂]
转:https://blog.csdn.net/armwind/article/details/52190123,文章不错特转载过来备忘
全栈程序员站长
2022/09/13
2.4K0
YUV文件格式[通俗易懂]
图像基础知识之YUV
YUV是编译true-color颜色空间(color space)的种类,Y’UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度与浓度(Chrominance、Chroma)
全栈程序员站长
2022/09/07
1.3K0
图像基础知识之YUV
Android Bitmap转I420的坑,以及图文详解YUV420数据格式
今天Android要把Bitmap里的数据转成I420,用的YUV库,但是总有色差。查了好久,最终发现
望天
2020/03/11
3.7K0
音视频知识体系(基础篇3)----图像颜色空间
我们从视频的信号表示方法开始讲起,逐步深入到视频压缩编码的原理。我们主要从下面几个要点来讲解或者加深记忆。
jerrypxiao
2021/02/04
2K0
YUV420 YUV420sp 图像格式「建议收藏」
YUV定义:分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
全栈程序员站长
2022/07/25
1K0
详解YUV数据格式
我们在讲 FFmpeg 系列的时候,有提到 YUV 的。其中包括YUV播放器、简单的YUV格式介绍。
233333
2019/08/02
2K0
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。
全栈程序员站长
2022/09/13
3.3K0
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
YUV数据格式
最近在做直播视频通话、自定义采集应用,恶补了YUV格式相关的问题,这篇文章就记录一下。
ppchao
2020/11/13
1.5K0
YUV数据格式
一文读懂 YUV 的采样与格式
RGB 三个字母分别代表了 红(Red)、绿(Green)、蓝(Blue),这三种颜色称为 三原色,将它们以不同的比例相加,可以产生多种多样的颜色。
音视频开发进阶
2019/06/03
4K2
一文读懂 YUV 的采样与格式
播放器基础--YUV色彩模型
做过camera, 播放器,图片处理的对YUV都不会陌生,但是关于YUV有很多的格式YUV420, NV21, YUV420sp, YV12等等往往令人混乱
小蚂蚁与大象
2020/06/09
1.1K0
Sony RX0M2(杂记)
我最近兼职赚了点小钱,就想买个玩具。我年前有点想买佳能,为了ML的相机固件,我把目光聚焦到5D2,虽然1k8可以买到一个相机,但是是单机身而已,而且说实话是这个机器实在是太老了。。。最气的是,我买相机用来干什么?肯定没人找我拍照的,我就是未来折腾而已。后面就把目光聚集到Sony的阿尔法1代,后面还是很尴尬,因为,我这个钱就是可以买机身,还是很麻烦,而且我是一直想使用Sony的SDK。所以这个选项也就打消了,直到看到RX0M2的时候,眼前一亮,小小机身,塞进这么多的功能。重点是USB摄像头,SDK控制的功能,我真的爱了,一直就想买个测试机。看了一些缺点也很明显,不过作为一名工程师,岂是可以难的住我的。
云深无际
2022/03/07
1.3K0
Sony RX0M2(杂记)
深度解析视频颜色空间YUV420P和YUV420SP的异同
本文重点介绍Planar平面模式的存储形式,YUV420P和YUV420SP的差异从名字上就可以看出一二,主要看S的含义。S是Semi(半的)的缩写,SP就是Semi-Planar,意思是半平面存储形式。前者是Y、U、V分量分别存储在三个平面中,总共占用三个平面;后者是Y分量单独存储在一个平面中,UV分量共同存储在另一个平面中,总共占用两个平面。
liuzhen007
2025/03/27
1680
深度解析视频颜色空间YUV420P和YUV420SP的异同
zv-1像素_尺寸 像素
像素格式描述了像素数据存储所用的格式,定义了像素在内存中的编码方式。RGB 和 YUV 为两种经常使用的像素格式。
全栈程序员站长
2022/11/10
8620
zv-1像素_尺寸 像素
【音视频原理】图像相关概念 ⑤ ( YUV 数据存储 | I444 格式说明 | I422 格式说明 | I420 格式说明 | NV12 格式说明 | NV21 格式说明 )
YUV 4:4:4 采样格式 , Y 亮度分量 与 UV 色度分量 的比例是 1:1 ;
韩曙亮
2024/01/21
1.3K0
【音视频原理】图像相关概念 ⑤ ( YUV 数据存储 | I444 格式说明 | I422 格式说明 | I420 格式说明 | NV12 格式说明 | NV21 格式说明 )
YUV和RGB存储规则
我们开发平常图片的数据都是RGB,但是设计视频相关的都会使用到YUV格式,为什么呢?
码客说
2023/06/10
1.2K0
YUV和RGB存储规则
一文掌握 YUV 图像的基本处理
YUV 是一种色彩编码模型,也叫做 YCbCr,其中 “Y” 表示明亮度(Luminance),“U” 和 “V” 分别表示色度(Chrominance)和浓度(Chroma)。
字节流动
2020/06/01
3.3K0
对yuv存储格式中的yuv420p和yuv420sp的理解
  yuv是一种颜色编码系统,它将图像的亮度和色度分离开来。y表示亮度,即黑白信息;uv表示色度,即颜色信息。yuv常用于视频压缩和传输中,因为它可以更有效地表示人眼对亮度和色度的敏感度不同的特性。人眼对亮度更加敏感,而对色度则不那么敏感。这就是为什么在视频压缩中,可以通过减少色度分量的采样率以减少数据量,而不会对观看体验产生明显的影响。
故乡的樱花开了
2024/02/23
3.4K0
对yuv存储格式中的yuv420p和yuv420sp的理解
ISP-YUV格式
数字图像处理的过程中,YUV文件是比较常见的视频源数据。YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。
AomanHao
2022/01/14
1.2K0
ISP-YUV格式
音视频直播技术--YUV视频格式详解
YUV(也称YCbCr)是电视系统所采用的一种颜色编码方法。其中 Y 表示明亮度,也就是灰阶值,它是基础信号;U 和 V 表示的则是色度,UV 的作用是描述影像色彩及饱和度,它们用于指定像素的颜色。U和V不是基础信号,它俩都是被正交调制的.
音视频_李超
2020/04/02
1.8K0
相关推荐
常见图像格式总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档