Camera开发-相机输出常用数据格式

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,BSP开发
作者主页:一个平凡而乐于分享的小比特的个人主页
文章收录专栏:IMX8MP,本专栏记录imx8mp开发板,学习开发过程中的问题及解决方法记录
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

Camera开发-相机输出常用数据格式

视觉相机常见的数据输出格式有: RGB格式、YUV格式、Rawdata格式。

1. RGB 格式

采用这种编码方法,每种颜色都可用三个变量来表示红色、绿色以及蓝色的强度。每一个像素有三原色 R 红色、G 绿色、B 蓝色组成。

1.1 RGB文件存储格式

RGB555

每个像素用16比特位表示,占2个字节,RGB分量都使用5位(最高位不用)

在这里插入图片描述

RGB1555

RGBA(ARGB)中的一种,一位用于表示透明度。0完全透明,1完全不透明

在这里插入图片描述

RGB565

每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5位。

在这里插入图片描述

RGB24/RGB888

RGB24图像每个像素用24比特位表示,占3个字节,在内存中RGB各分量的排列顺序为:BGR BGR …

在这里插入图片描述

RGB32/RGBA8888

RGB32图像每个像素用32比特位表示,占4个字节,R,G,B分量分别用8个bit表示,存储顺序为B,G,R,最后8个字节保留。在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA …
在这里插入图片描述

RGB222

RGB222是一种8位的RGB格式,各分量占用2bit位,剩下的2bit位不用

1.2 典型应用场景

常用的 RGB 格式包括颜色通道的信息位数、每种颜色可以表示的颜色数量和典型应用场景等。

RGB 格式颜色通道信息位数可表示的颜色数量典型应用场景
RGB888每种通道均为 8 位16,777,216数字图像处理、计算机游戏、电影和摄影等
RGB565R: 5位, G: 6位, B: 5位65,536嵌入式应用、机器视觉、数字标志等
RGBA8888R,G,B 各 8 位,A 通道为 8 位16,777,216图像编辑、视觉效果、移动应用等
RGB332每个通道均为 3 位,共 8 位256简单图形、低成本设备、老式显示器等

注意,这里列出的应用场景只是典型的用途,实际应用还要根据具体情况进行选择。

2. YUV 格式

其中“Y”表示明亮度(Luminance 或 Luma),就是灰阶值;而“U”和“V”表示色度(Chrominance 或 Chroma),是描述影像色彩及饱和度,用于指定像素的颜色。

2.1 YUV的存储格式

YUV在存储格式上通常分为:平面格式(Planar),半平面格式(Semi-Planar),打包格式(Packed)。

平面格式(Planar):即Y、U、V是分开存储的,每个分量占一块地方,即YYY… UUU… VVV…
半平面格式(Semi-Planar):即Y单独占一块地方,但其后U、V又紧挨着排在一起,即YYYYYY… UVUVUV…
打包格式(Packed):即YUV是按像素点存储的,即YUYVYUYV…这样顺序存储。

2.2 采样方式

采样是将4个像素作为一组进行的,原因在于:图像每行所占字节数必须是4的倍数,才能保证无误的转换。
YUV 主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。
下面三个图比较直观的显示了三种采样方式,其中黑点表示采样像素点的Y分量,空心圆表示采样像素点的UV分量。
在这里插入图片描述

YUV444,YUV 4:4:4采样,每一个Y对应一组UV分量8+8+8 = 24bits,3个字节
YUV422,YUV 4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4 = 16bits 2个字节
YUV420,YUV 4:2:0采样,每四个Y共用一组UV分量一个YUV占8+2+2 = 12bits 1.5个字节

2.3 YUV420,YUV420P和YUV420SP

YUV420,YUV 4:2:0采样,每四个Y共用一组UV分量一个YUV占8+2+2 = 12bits 1.5个字节。

YUV420(Packed),又叫YUYV420,存储:YUV交错存储,按像素点存储。如YUVYUVYUV…

YUV420(planar),根据U、V的顺序,又有2种,U前V后即YUV420P又叫I420YU12,V前U后,叫YV12(12表示一个像素 12 bits)。存储:YUV分开存储,如YYY… UUU… VVV…

YUV420(Semi-Planar),根据U、V的顺序,又有2种,U前V后叫NV12,也叫YUV420SP;V前U后叫NV21。存储:Y与UV分开存储,如YYYYYY… UVUVUV…

2.4 YUV422,YUV422P和YUV422SP

YUV422,即YUV 4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4 = 16bits 2个字节。

YUV422(Packed),又叫YUYV422, 存储:YUV交错存储,按像素点存储。如YUYVYUYVYUYV…

YUV422(planar),根据U、V的顺序,又有2种,U前V后即YUV422P又叫I422YU16,V前U后,叫YV16(16表示一个像素 16 bits)。存储:YUV分开存储,如YYY… UUU… VVV…

YUV422(Semi-Planar),根据U、V的顺序,又有2种,U前V后叫NV16,也叫YUV422SP;V前U后叫NV61。 存储:YUV分开存储,如YYYYYY… UVUVUV…

3. RAW DATA 格式

3.1 RAW

RAW 图像是指图像传感器数字图像,这种图像未经过任何处理,未压缩和未降噪,保留了其原始数据,以便后续的数字后期制作和处理。

3.2 采集过程

环境光/补光灯照在物理表面形成反射 –> 镜头汇聚光线 –> 图像传感器彩色滤镜阵列(CFA)将单色光照在光电二极管 –> 光电转换 –> ADC采集,其他模块转换排列为 设置的 bayer格式的RAW。

RAW 一般是使用 bayer 格式进行排列,每个像素实际只包含单种特定颜色 的光的强度(比如单个像素只能为R/G/B亮度信息)。

3.3 Bayer格式

由于人眼对于绿色更加敏感,所以加重了其在感光点的权重,Bayer格式中的G分量都是B、R分量的两倍。

bayer 序格式按照排列组合,一共分为4种:

排列1排列2排列3排列4
RG
GB
BG
GR
GR
BG
GB
RG

在这里插入图片描述

4. 总结

在这里插入图片描述

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

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

相关文章

【鸿蒙培训】第一天环境安装

目录标题 安装DevEco Studio 【IDE】配置开发环境配置离线SDK创建工程配置离线插件 hvigor配置模拟器模拟器执行代码 安装DevEco Studio 【IDE】 1・解压 devecostudio-windows-4.1.3.500.zip。 2・执行 deveco-studio-4.1.3.500.exe 安装IDE。 配置开…

29. 深度学习中的损失函数及其数学性质详解

在深度学习中,优化算法的研究对象是损失函数。损失函数的数学性质对最优化求解过程至关重要。本文将详细介绍深度学习中的损失函数应具备的特性,帮助大家在后续的学习中避免概念上的误解。 函数的可微性和可导性 学过高等数学的同学对可微性和可导性已…

void * 返回类型 与 void *arg 参数的区别

void * 返回类型:void * 作为函数的返回类型,表示该函数可以返回任何类型的指针。void * 是一种特殊的指针类型,称为“无类型指针”或“泛型指针”,因为它可以指向任何类型的数据。函数通过返回 void * 类型的指针,提供…

JMeter安装与使用

安装包下载:https://pan.xunlei.com/s/VNigSM9IEjqNBVkw8by6i-LoA1?pwdu6gq# 也可以官网下载: 1.解压安装包 2.打开方式 (1)bin->ApacheJMeter.jar->打开界面 (2)如果(1)打…

ruby面试题

ruby 基础 1、each、map、collect的区别 each: 仅遍历数组,并做相应操作,数组本身不发生改变。 map:遍历数组,并做相应操作后,返回新数组(处理),原数组不变。 collect: 跟map作用一样。 collect! map!: 多了一个作…

LoadBalance 负载均衡

什么是负载均衡 负载均衡(Load Balance,简称 LB),是⾼并发,⾼可⽤系统必不可少的关键组件. 当服务流量增⼤时,通常会采⽤增加机器的⽅式进⾏扩容,负载均衡就是⽤来在多个机器或者其他资源中,按照⼀定的规则合理分配负载. 负载均衡的⼀些实现 服务多机部署时,开发⼈…

专业软件测试公司分享:安全测评对于软件产品的重要性

在互联网普及的今天,随着各类软件的大规模使用,安全问题也变得愈发突出。因此,对软件进行全面的安全测评,不仅可以有效保障用户的信息安全,还能提升软件产品的信任度和市场竞争力。 安全测评对于软件产品的重要性就如…

LLDB 详解

LLDB 详解 LLDB 详解编译器集成优势LLDB 的主要功能命令格式原始(raw)命令选项终止符: -- LLDB 中的变量唯一匹配原则helpexpressionprint、call、po控制流程:continue、next、step、finishregister read / writethread backtracethread retu…

线性代数|机器学习-P19SVDLUQR分解自由参数计算和鞍点

文章目录 1. 矩阵A分解1.1 A L U ALU ALU 1. 矩阵A分解 对于矩阵A来说,我们有常见矩阵分解: A L U , A Q R , A X Λ X − 1 , A Q Λ Q T ; A Q S , A S V D \begin{equation} ALU,AQR,AX\Lambda X^{-1},AQ\Lambda Q^T;AQS,ASVD \end{equatio…

React Native优质开源项目推荐与解析

目录 2. React Native的优势 2.1. 跨平台开发 2.2. 热更新 2.3. 丰富的社区资源 2.4. 优秀的性能 3. 优质开源项目推荐 3.1. React Navigation 3.1.1 项目简介 3.1.2 特点和优势 3.1.3 应用场景 3.2. Redux 3.2.1 项目简介 3.2.2 特点和优势 3.2.3 应用场景 3.3…

精彩回顾 | 2024高通边缘智能创新应用大赛系列公开课

5月29日-6月6日,我们陆续开展了四场精彩绝伦的2024高通边缘智能创新应用大赛直播公开课。高通、阿加犀、广翼智联以及美格智能的业务领袖和行业大咖齐聚一堂,聚焦边缘智能,分享前沿技术、探讨创新应用,抢先揭秘比赛设备的核心特性…

MIT6.s081 2021 Lab System calls

xv6系统调用实现 不同于 Lab1 利用已实现的系统调用来实现一些用户态下的命令行程序,本 Lab 是要在内核层面实现一些系统调用。这其中难免涉及到一些对内核数据结构的操作,以及处理器体系结构(本系列 Lab 基于 RISCV)相关的内容&…

什么是慢查询——Java全栈知识(26)

1、什么是慢查询 慢查询:也就是接口压测响应时间过长,页面加载时间过长的查询 原因可能如下: 1、聚合查询 2、多表查询 3、单表数据量过大 4、深度分页查询(limit) 如何定位慢查询? 1、Skywalking 我们…

js url参数转对象类型(对象类型转url参数)支持中文解码编码

先上代码 后面上函数参数说明以及调用返回结果 /** Author: 夏林* Date: 24.6.27* desc 时间差算法* params params -> 传入数据 String | Object* params _needEncode -> 是否需要编码 默认 true*/ export function dealUrlSearchParams(_params , _needEncode tr…

IND83081芯片介绍(一)

一、芯片介绍 IND83081是indiemicro推出的一款高性能的汽车矩阵LED照明控制器,集成了四个子模块,每个子模块包含三个串联的MOSFET开关,每个开关均可通过12位PWM内部信号控制,可配置的上升和下降速率及相位移以实现精确控制&#x…

JOSEF约瑟 JOXL-J拉绳开关 整定范围宽

用途 双向拉绳开关的壳体采用金属材料铸造,具有足够的机械强度,抵抗并下工作时脱落的岩石,爆块等物体的撞击不被破坏,当胶带输送机发生紧急事故时,启动拉绳开关,可立即停机报警,防止事故的扩大,保证工作现场的人身安全…

常用的通信协议有哪些

常用的通信协议有很多种,主要根据其应用领域和通信需求可以分为几类: 网络通信协议: TCP/IP:传输控制协议/互联网协议,用于互联网及局域网通信。 UDP:用户数据报协议,用于实时数据传输&#…

java 操作 milvus 2.1.4

1. 确认 docker 运行的 milvus容器镜像版本情况&#xff1a; 2. pom 依赖&#xff1a; <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.1.0</version><exclusions><exclusi…

Java学习 - Redis慢查询与发布订阅与流水线

慢查询 慢查询是什么 慢查询本质是慢查询日志&#xff0c;它记录了一些执行速度很慢的命令 慢查询与生命周期 生命周期 ------- ------------------------------------------ | | 1.发送请求 | redis服务端 …

Simulink缓存文件有什么用?

在使用Simulink进行仿真的过程中&#xff0c;经常会发现目录下存在一些后缀为.slxc的文件&#xff0c;这些其实就是Simulink模型的缓存文件&#xff08;.slx cache&#xff09;。 Simulink缓存文件的主要作用是提高仿真和代码生成的效率。 借助缓存文件&#xff0c;可以避免…