首页 > 其他分享 >相机色彩格式及其转换

相机色彩格式及其转换

时间:2023-04-05 14:34:17浏览次数:67  
标签:Planner UV YUV 相机 bmatrix Formats 格式 色彩 分量

2023年04月05日 相机色彩格式及其转换

参考文章

YUV 格式详解,只看这一篇就够了 - 简书 (jianshu.com)

RAW、RGB、YUV 图像格式区别 - 知乎 (zhihu.com)

YUV - 维基百科,自由的百科全书 (wikipedia.org)

YUV格式

YUV的发展历史

YUV的发明是彩色电视和黑白电视的过渡时期,黑白视频只有Y(Luma, Luminance,明度)视频,也就是灰阶值。到了彩色电视规格的制定,是以YUV/YIQ(NTSC,National Television Standards Committee)的格式来处理彩色电视图像,把UV视作表示彩度的C(Chrominance或Chroma),如果忽略C信号,那么剩下的Y(Luma)信号就跟之前的黑白电视频号相同,这样一来便解决彩色电视机与黑白电视机的兼容问题。Y'UV最大的优点在于只需占用极少的带宽。

因为UV分别代表不同颜色信号,所以直接使用R与B信号表示色度的UV。 也就是说UV信号告诉了电视要偏移某象素的的颜色,而不改变其亮度。 或者UV信号告诉了显示器使得某个颜色亮度依某个基准偏移。 UV的值越高,代表该像素会有更饱和的颜色。

彩色图像记录的格式,常见的有RGB、YUV、CMYK等。彩色电视最早的构想是使用RGB三原色来同时传输。这种设计方式是原来黑白带宽的3倍,在当时并不是很好的设计。RGB诉求于人眼对色彩的感应,YUV则着重于视觉对于亮度的敏感程度,Y代表的是亮度,UV代表的是彩度(因此黑白电影可省略UV,相近于RGB),分别用Cr和Cb来表示,因此YUV的记录通常以Y:UV的格式呈现。

** 来自wiki

我们常说的YUV,通常是指YCbCr, 其中Y指的是明度,Cb指蓝色色度分量,Cr指红色色度分量。

YUV格式分类

分类依据

数据采样方式

根据Y和UV数据量的占(为了节省带宽,对数据抽样),可以将YUV格式分成一下几类:

  1. 4:4:4表示完全采样。

    每一个像素分别对应一个Y,U,V分量。

  2. 4:2:2表示水平2:1取样,垂直完全采样。

    每一个像素对应一个Y分量,在图像的每一行中,相邻两个像素共用一个U分量和一个V分量。数据压缩到原来的2/3。

  3. 4:2:0表示水平2:1取样,垂直2:1取样。(android设置默认格式)

    每一个像素对应一个Y分量,在2x2的像素格子中,(4个像素)共用一个U分量和一个V分量。数据压缩到原来的1/2。

  4. 4:1:1表示水平4:1取样,垂直完全采样。(这类格式不常用)

    每一个像素对应一个Y分量,在图像的每一行中,相邻四个像素共用一个U分量和一个V分量。数据压缩到原来的1/2。

数据在内存中的分布方式

根据YUV在内存不同的排列方式不同,可以主要分成下面三种类型:

  • Packed Formats: 将Y,U,V值存储为Macro Pixels(宏像素)数组,类似RGB的存放方式。
  • Planner Formats: 将Y,U,V三个分量分别存储在不用的矩阵中。
  • Semi-Planner Formats: 将Y分量单独存储在一个矩阵中,UV分量存储为Macro Pixels数组。(Andorid采用这种模式)

具体类型(4x4像素为例)

YUV格式

标题 类型 说明 采样
I420 YU12 Planner Formats 三个分量分开存储,按照Y, U, V顺序存放在内存中。 420
YV12 Planner Formats 三个分量分开存储,按照Y, V, U顺序在存放内存中。 420
NV12 Semi-Planner Formats Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 U 开始。 420
NV21 Semi-Planner Formats Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 V 开始。(Android默认格式) 420
I422 Planner Formats 三个分量分开存储,按照Y, U, V顺序在存放内存中。 422
YV16 Planner Formats 三个分量分开存储,按照Y, V, U顺序在存放内存中。 422
NV16 Semi-Planner Formats Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 U 开始。 422
NV61 Semi-Planner Formats Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 V 开始。 422
YUVY Packed Formats 在 Packed 内部,YUV 的排列顺序是 Y U V Y,两个 Y 共用一组 UV。 422
VYUY Packed Formats 在 Packed 内部,YUV 的排列顺序是 V Y U Y,两个 Y 共用一组 UV。 422
UYVY Packed Formats 在 Packed 内部,YUV 的排列顺序是 U Y V Y,两个 Y 共用一组 UV。 422
I444 Planner Formats 三个分量分开存储,按照Y, U, V顺序存放在内存中。 444
YV24 Planner Formats 三个分量分开存储,按照Y, V, U顺序在存放内存中。 444
NV24 Semi-Planner Formats Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 U 开始。 444
NV42 Semi-Planner Formats Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 V 开始。 444
YUV444 Packed Formats 在 Packed 内部,YUV 的排列顺序是 Y U V,每一个像素对应一组Y,U,V分量。 444

RGB格式

使用宏像素(Micro pixels)模式排列,每一个分量占用8bit,也称为24比特模式。RGBA中加入了透明度分量(Alpha)。

RAW格式

RAW 图像就是图像感应器将捕捉到的光源信号转化为数字信号的原始数据,是无损的,包含了物体原始的颜色信息等。RAW 数据格式一般采用的是 Bayer 排列方式,通过滤波光片,产生彩色滤波阵列(CFA),鉴于人眼对绿色波段的色彩比较敏感,Bayer 数据格式中包含了50%的绿色信息,以及各25%的红色和蓝色信息。 Bayer 排列格式有以下4种:

  1. | R | G | | G | B |
  2. | B | G | | G | R |
  3. | G | R | | B | G |
  4. | G | B | | R | G |

补充内容

YUV格式和RGB格式互换。

\[ \begin{array}{rll} Y &= 0.299 * R + 0.587 * G + 0.114 * B \\ U &= -0.169 * R - 0.331 * G + 0.5 * B + 128 \\ V &= 0.5 * R - 0.419 * G - 0.081 * B + 128 \end{array} \]

\[ \begin{array}{rll} R & = Y + 1.13983 * (V - 128) \\ G & = Y - 0.39465 * (U - 128) - 0.58060 * (V - 128) \\ B & = Y + 2.03211 * (U - 128) \end{array} \]

矩阵形式

\[ \begin{bmatrix} Y \\ U \\ V \end{bmatrix} = \begin{bmatrix} 0.299 & 0.587 & 0.114 \\ -0.169 & -0.331 & 0.5 \\ 0.5 & -0.419 & -0.081 \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} + \begin{bmatrix} 0 \\ 128 \\ 128 \end{bmatrix} \]

\[ \begin{bmatrix} R \\ G \\ B \end{bmatrix} = \begin{bmatrix} 1 & -0.00093 & 1.401687 \\ 1 & -0.3437 & -0.71417 \\ 1 & 1.77216 & 0.00099 \end{bmatrix} \begin{bmatrix} Y \\ U - 128 \\ V - 128 \end{bmatrix} \]

标签:Planner,UV,YUV,相机,bmatrix,Formats,格式,色彩,分量
From: https://www.cnblogs.com/qi-xmu/p/17289389.html

相关文章

  • 电脑硬盘格式由gpt改为mbr怎么改
    转自https://zhidao.baidu.com/question/634080366973241244.html 电脑硬盘分区有gpt与mbr两种格式,两者各有优点。“gpt格式”带来了很多新特性,最大支持18EB的大容量。“mbr格式”最大只支持2TB,但拥有最好的兼容性。将gpt转化为mbr的方法如下:1、装windows操作系统时,如果提示......
  • word调格式有感
    1、页眉、页脚和“节”很有关系2、如果出现页眉处的横线不同,可以考虑......
  • yaml-cpp YAML格式处理库的介绍和使用(面向业务编程-文件格式处理)
    yaml-cppYAML格式处理库的介绍和使用(面向业务编程-文件格式处理)YAML格式介绍YAML的格式介绍,有关ini、json和xml或许很多人已经很了解了,但是关于YAML,还有许多人不了解。YAML被设计成更适合人类阅读(我想正因为如此,所以相对来说更灵活,就导致到使用的时候很多人会觉得它看起来并不......
  • AltiumDesigner导入AutoCAD文件DXF,DWG格式
    这里有一篇关于导入DXF的文章,方法还可以。文章......
  • JsonCpp JSON格式处理库的介绍和使用(面向业务编程-文件格式处理)
    JsonCppJSON格式处理库的介绍和使用(面向业务编程-文件格式处理)介绍JSON是一种轻量级的数据交换格式,它是一种键值对的集合。它的值可以是数字、字符串、布尔值、序列。想知道更多有关JSON格式的介绍,可以到JSON的官网json.org学习JsonCpp是一个c++库,允许对JSON值进行操作,包括......
  • flutter系列之:在flutter中使用相机拍摄照片
    简介在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单的使用上相机的功能呢?一起来看看吧。使用相机前的准备工作flutter中为使用camera提供了一个叫做camera的插件,我们首先需要安装这个插件。安装插件的步骤很简单......
  • flutter系列之:在flutter中使用相机拍摄照片
    目录简介使用相机前的准备工作在flutter中使用camera总结简介在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单的使用上相机的功能呢?一起来看看吧。使用相机前的准备工作flutter中为使用camera提供了一个叫做came......
  • 转化Date格式
    获取现在时间;转化list<Date>列表格式;把把List列表中的两个List分出来LocalDatedate=LocalDate.now();//获取现在的时间System.out.println(date);finalList<GraphUser>graphUsers=graphDAO.selectGraphUser(date);System.out.print......
  • MongoDB-如何将BSON文档转换为人类可读的格式
    二进制Javascript对象表示法(BSON)是一种以二进制编码串行化的JSON文档。JSON更容易理解,因为它是人类可读的,但与BSON相比,它支持的数据类型更少。BSON已经被扩展,可以添加一些可选的非json原生数据类型,比如日期和二进制数据。MongoDB在内部和网络上以BSON格式存储数据。mongodump生......
  • Three.js 进阶之旅:全景漫游-初阶移动相机版
    Three.js进阶之旅:全景漫游-初阶移动相机版 声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。摘要3D 全景技术可以实现日常生活中的很多功能需求,比如地图的街景全景模式、数字展厅、在线看房、社交......