【Camera基础(一)】Camera摄像头工作原理及整机架构

简介: 【Camera基础(一)】Camera摄像头工作原理及整机架构

一、摄像头的基本工作原理

如图所示,一个景象的反射光被镜头所捕捉(镜头的光圈可以调节进光量,马达用来调节对焦),最终将聚焦好的图像精准对焦到图片传感器上边(色彩滤波会产生三基色),光信号转化为数字信号,通过模数转换最终得到原始码流数据。

问题:那我们可以直接使用这个包含图像信息和颜色信息的原始码流数据吗?

答案:不能,要根据用户端请求的VC接口携带请求数据流的格式决定。

二、编码

摄像头软件层,一般会提供多种格式和分辨率的参数,供上层选择,常见的格式如:YUYV、MJPEG、H264、NV12等。其中:

  • YUYV:原始码流,每个像素点占2个字节。
  • MJPEG:可以将数据压缩7倍左右,可以是NV12也可以是YUYV
  • H264编码:主要看配置,其中I帧压缩7倍左右,P帧20倍左右,B帧50倍左右,理论上B帧越多,就可能支持的高分辨率高帧率的码流
  • NV12:原始码流,每个像素点1.5个字节。

三、编码的目的

如果没有编码,我们计算一下1s请求NV12 4K 30HZ的码流需要多大的带宽?
答案:(3840*2160*1.5*30)字节 = 373248000字节=356M

按照,我们整机常用的camera接口usb 2.0的理论带宽:480Mbps = 60M/s,

无法满足NV12原始码流4K 30HZ的预览要求的,编解码技术,可以有效的压缩数据的体积而不会或较少的影像画质。

四、传输

作为相机的数据传输协议,肯定是要统一的,广泛的,厂家和广大开发者支持的协议。其中USB协议肯定有一席之地。整机方案,基本采用的都是USB Camera方案。

UVC是USB Video Class的简写,也就是USB接口的视频设备。一个UVC设备,需包含1个VC Interface和1个或多个VS Interface

  • VC Interface进行配置参数的传递,如启动和关闭自动对焦,白平衡等。
  • VS Interface进行图片数据流的传输。

USB协议

UVC协议:

UVC模型:

UVC软件架构

小结:

在Linux系统中,应用层和USB相机通过UVC协议进行交互。系统为了兼容不同的交互协议。在kernel层抽象了V4L2驱动,方便上层进程和各个协议对接。

V4L2提供了一系列的命令,如图所示,上层进程通过ioctl和底层kernel交互。

如此,上层应用就能拿到相机设备给出的编码后的码流了。但是如果整机方案是Android系统,那和linux还是有着一定的不同的。Android系统可以向下,可以使V4l2通过ioctl和kernel交互。


五、Android系统的camera架构

Android APSP系统作为开源的系统,需要考虑很多因素,既要考虑下游硬件设备厂商,也要考虑应用开发者,还要考虑用户隐私安全。所以,Google对Android下的Camera的架构,分了3层设计。


  • CameraProvider hal层的进程,init rc启动时启动。
  • CameraServer Framework层进程,主要用于维护上层apk都可能访问Camera服务
  • Camera的Runtime层,为上层apk提供服务,并封装了一系列的api,方便广大开发者调用和快速开发。

Android camera架构图:


小结:

android系统通过分层设计,给到每个上层应用独立访问相机设备的能力,上层应用可以通过简单的api调用就可以实现相机的预览和拍照功能。

原始码流数据通过编码,把数据进行压缩通过USB送到kernel,kernel通过UVC协议Hal层进行交互,HAL层拿到数据后,CamerServer会通过hwbinder与Hal层进行交互,然后进行显示。


相关文章
|
4月前
|
机器学习/深度学习 自然语言处理 监控
23_Transformer架构详解:从原理到PyTorch实现
Transformer架构自2017年Google发表的论文《Attention Is All You Need》中提出以来,彻底改变了深度学习特别是自然语言处理领域的格局。在短短几年内,Transformer已成为几乎所有现代大型语言模型(LLM)的基础架构,包括BERT、GPT系列、T5等革命性模型。与传统的RNN和LSTM相比,Transformer通过自注意力机制实现了并行化训练,极大提高了模型的训练效率和性能。
|
7月前
|
存储 监控 算法
园区导航系统技术架构实现与原理解构
本文聚焦园区导航场景中室内外定位精度不足、车辆调度路径规划低效、数据孤岛难以支撑决策等技术痛点,从架构设计到技术原理,对该系统从定位到数据中台进行技术拆解。
367 0
园区导航系统技术架构实现与原理解构
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
8月前
|
存储 消息中间件 canal
zk基础—2.架构原理和使用场景
ZooKeeper(ZK)是一个分布式协调服务,广泛应用于分布式系统中。它提供了分布式锁、元数据管理、Master选举及分布式协调等功能,适用于如Kafka、HDFS、Canal等开源分布式系统。ZK集群采用主从架构,具有顺序一致性、高性能、高可用和高并发等特点。其核心机制包括ZAB协议(保证数据一致性)、Watcher监听回调机制(实现通知功能)、以及基于临时顺序节点的分布式锁实现。ZK适合小规模集群部署,主要用于读多写少的场景。
|
10月前
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
3152 21
RocketMQ原理—5.高可用+高并发+高性能架构
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
998 90
|
9月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
311 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析

热门文章

最新文章