【图像】图像格式(2) : 一张图理清所有的RAW RGB YUV图像格式

2023-11-11 23:50

本文主要是介绍【图像】图像格式(2) : 一张图理清所有的RAW RGB YUV图像格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 引言

之前一直做着和camera有关的工作,所以常常会涉及到图像格式的问题。感觉接触的名字和种类很多,索性好好整理一下,分个类,也方便后面再整理。

1. 直接上结论

直接总结了一张图
在这里插入图片描述

2. 图像格式

2.1 RAW

RAW图像是sensor出来的最原始的数据。
是光线透过滤镜之后直接得到的数据,每个像素只有一种颜色的数据。通常情况下,每个像素的数据量是10bits或者12bits,当然也有sensor有其他的8,14,16等等。
RAW的基本介绍可以看这篇文章.
一般的摄像头都会支持RAW格式的输出,这样我们拿到RAW数据之后,是没有办法直接使用的,还要在host端做ISP,做色彩纠正,增强,HDR,插值成RGB,转成YUV,最后再使用。像amba平台就是直接读取RAW数据,送入idsp来做一系列的3A操作的。另外记录一下,Amba平台对RAW数据有packed和compressed两种设定选择。如果未设置packed,每个像素不管是10位,12位,14位,都会占据2个字节16位,如果选择了packed,则会按照真实的位数排列。如果设置了compressed,则会进行数据压缩,整体数据量平均每个像素达到27/32个字节。
有些项目,不追求很高的sensor的3A效果,就会直接使用sensor输出的YUV或者RGB,这就是使用了sensor内置的一些差值算法,直接得到图像,比较方便,并且省host的运算资源,但是不够自由,可以调节的东西不多。
对于RAW数据,会有不同的bayer类型,是GBRG,GRBG,RBBG,GBBR的一种,其实也就是透镜的类型。

但是不管在senosr做还是在host主机做,RAW想用起来,都是要做插值得到真正的RGB图像的。

2.2 RGB

RGB是大家很熟悉的一种类型。三原色的原理就不做太多介绍了。
在windows的绘图板中,我们就可以通过调试三原色不同的比例得到不同的颜色。
在这里插入图片描述
RGB常用的数据格式有 RGB888,RGB565,RGB555这么几种。

2.3 YUV

YUV 是一个比较不好理解的类型,而且种类很多.
也是这篇文章的重点。
什么是YUV?RGB很好用,但是他对黑白图像的支持不是很好,因此,人们又会把RGB转成YUV格式。YUV中的Y,表示明亮度(Luma),就是灰度图。U和V分别对应Cb和Cr,代表色度(Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

2.3.1 采样方式

分类方式根据采样的不同,分为YUV444,YUV422,YUV420.

  • YUV444:每个像素点同时包含Y/U/V 3个参数
  • YUV422:每2个像素点共享一组U/V参数,同时每个像素拥有自己的Y参数
  • YUV420:每4个像素点共享一组u/v参数,同时每个像素拥有自己的Y参数

2.3.2 排列方式

确定了采样方式之后,数据的排列又分为3种:

  • planar(注意不是planer,也不是plannar):把Y数据,U数据和V数据单独放置3块位置,形成3个平面
  • semi-planar:把Y数据独立,UV数据放在一起,形成2个平面。
  • packed:YUV数据打包在一起,无论单独的Y数据U数据还是V数据,地址都不是连续的。

2.3.3 命名方式

YUV的命名规则也有好几种,因此同一个类型有可能会有好几种名字,

  • YUVxxxP, YUVxxxSP
    e.g. YUV422P,YUV420SP
    根据plannar,semi-planner 和 packed的类型来定义的,这种感觉最好记。
    plannar就是P,注意顺序都是Y前U中V后
    semi-plannar就是SP,注意顺序都是Y前UV后。
  • Ixxx
    e.g. I422,I420
    感觉是plannar的别称
    I422就是YUV422P
    I420就是YUV420P
  • NVxx,YVxx
    e.g NV12,NV21,NV16,YV12
    NV代表属于semi-plannar,12代表一个像素所占的实际bits。NV12是YUV420SP,每个像素占据1个Y(8Bit)+1/4 个UV(8 * 2 / 4 = 4bit) = 12bits

2.3.4 类型

YUV根据采样方式不同,排列方式不同,命名方式不同,有N多类型。
我基本都总结在文章开头的表格里了,感觉要细分的话还能再分,但是暂时不用这么细吧,实际也用不到,全部记住没什么意义,记住一些常用的即可。
毕竟开发平台定下来之后,几种常用的数据类型也就随之确定了。安霸这边主要就是用NV12和NV16.

参考链接

  • ISP(图像信号处理)之Bayer Raw 简介
  • YUV格式数据类型大解析
  • YUV常见的类型
  • YUV pixel formats
  • YUV - wiki百科
  • YUV格式小结–很多个人思考,挺好的
  • 关于YUV格式的一些总结

这篇关于【图像】图像格式(2) : 一张图理清所有的RAW RGB YUV图像格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393670

相关文章

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX