Android camera之硬件架构

文章目录

1、preface

1)摄像头在一个嵌入式设备里成本占比比较大,在极致降本的科技时代,摄像头的封装/接口必然呈现多种类型(类似TV中的屏幕),实际产品研发中,在成本与性能之间权衡选用合适的方案;

2)camera与显示类似,是一个复合类模块,包含很多模块组成一个子系统!

3)都是图像输入,与TV/HDMI这些的差异?

1、摄像头需要控制输入端 生成图像 -- 类似GUI构造,先生成图像,再进行图像传输;

2、TV/HDMI这类仅仅是图像数据传输;

4)有时摄像头也叫sensor,准确而言sensor只是个部件单元,注意不要混淆;

2、camera影像原理

相机(Camera) 成像原理详解: https://blog.csdn.net/m0_66890670/article/details/144409018

摄像头原理: https://blog.csdn.net/qq_40732350/article/details/88541417

1)成像原理

1、利用透镜即镜头的光圈(小孔成像原理)收集目标的影像(倒影);

2、谁来记录这些光影数据?使用sensor(CCD/CMOS)来记录并转化为电信号;

3、主流两类方案

1)随着视觉、图像处理的蓬勃发展,可以说一款智能产品上必然配备摄像头(机器人、自动驾驶、手机、平板、电脑),摄像头技术已经是相当成熟,根据产品设计用途不一样,演变出两类技术方案:

1、USB接口 - 一般是模组形式,有标准规范,集成度高(图像处理模块都统一集成在模组中,大大降低开发者开发门槛,即插即用),用户只需要设置常规参数(分辨率、帧率等等);相当于串口命令控制的WIFI/BT模组(无需WIFI/BT驱动);

2、MIPI接口 - 一般只有CMOS传感器,图像处理模块集成在SOC,因此开发难度会更大,但灵活性最好,相当于USB/PCie接口的WIFI/BT芯片(需要WIFI/BT驱动);

2)USB摄像头和MIPI摄像头对比

1、https://ask.csdn.net/questions/9162944

3)总的来说本质上都是采集图像(技术相同,封装不同),USB摄像头方便易用,MIPI摄像头高度定制;

4、USB接口的camera(低复杂度)

USB摄像头优势在于即插即用,但集成度高灵活性低,成本也较高;

1)USB camera规范

硬件规范:USB_Video_Example 1.5.pdf

通用软件规范:UVC 1.5 Class specification.pdf

厂商需要跟进以上规范来设计自己的模组

2)舜鑫, SX-M003M-V1.0(USB)

3)USB camera的逻辑框图

USB摄像头规范里的内部结构

1、一个USB摄像头必定有一个VideoControl接口,用于控制。有0个或多个VideoStreaming接口,用于传输视频。

1)可以看到,USB摄像头内部集成比较完善,实现在不同平台即插即用!

2)这个是USB摄像头协议规定的,厂商设计之初要根据规范要求来,因此才能即插即用!

2、在VideoControl内部,有多个Unit或Terminal,上一个Unit或Terminal的数据,流向下一个Unit或Terminal,多个Unit或Terminal组成一个完整的UVC功能设备。

1)Terminal:位于边界,用于联通外界。有:IT(Input Terminal)、OT(Output Terminal)、CT(Camera Terminal)。

2)Unit:位于VideoControl内部,用来进行各种控制

SU:Selector Unit(选择单元),从多路输入中选择一路,比如设备支持多种输入源,可以通过SU进行选择切换

PU:Processing Unit(处理单元),用于调整亮度、对比度、色度等,有如下控制功能:

  • User Controls

    • Brightness 背光
    • Hue 色度
    • Saturation 饱和度
    • Sharpness 锐度
    • Gamma 伽马
    • Digital Multiplier (Zoom) 数字放大
  • Auto Controls

    • White Balance Temperature 白平衡色温
    • White Balance Component 白平衡组件
    • Backlight Compensation 背光补偿
    • Contrast 对比度
  • Other

    • Gain 增益
    • Power Line Frequency 电源线频率
    • Analog Video Standard 模拟视频标准
    • Analog Video Lock Status 模拟视频锁状态

EU:Encoding Unit(编码单元),对采集所得的数据进行个性化处理的功能。编码单元控制编码器的属性,该编码器对通过它流式传输的视频进行编码。它具有如下功能:

XU:Extension Unit(扩展单元),厂家可以在XU上提供自定义的操作,模型如下:

5、MIPI-CSI-2接口的camera(高复杂度)

1)注意MIPI是协议,不是接口,它规定了一系列占用体积小且拥有传输速度高 的接口;

2)通常介绍摄像头时直接使用MIPI来表示使用MIPI-CSI接口;

1)MIPI协议介绍

1、MIPI指的是一类接口,针对移动设备(手机/平板等,移动设备的特点是传输距离短、集成度和传输速度尽可能高,必然是因为当前没有合适的选择,才去重新设计!)设计的一系列标准接口,比如MIPI协议的各类接口在手机内部的应用如下:

2、MIPI-CSI-2协议是MIPI联盟协议的子协议(常用D-PHY),专门针对高清摄像头芯片的接口而设计,D-PHY如下

3、MIPI-CSI-2插槽

3)D-PHY接口典型图例如下:

对于摄像头,D-PHY接口仅仅是用来传递数据:

  • 摄像头发送数据,它被称为:CSI Transmitter
  • 主控接收数据,它被称为:CSI Receiver
  • 主控通过I2C接口发送控制命令,它被称为:CCI Master(CCI名为Camera Control Interface)
  • 摄像头接收I2C接口控制命令,它被称为:CCI Slave

与图像传输接口 HDMI/VBI类似,都是复合类传输接口,包含两类接口(数据传输接口、控制接口)

4)MIPI CSI-2使用案例

2)MIPI-CSI-2 camera硬件结构

1、逻辑框图(D-PHY)

MIPI摄像头

2、OV5640(MIPI+内置ISP)

OV5640是OmniVision推出的一款高性能CMOS图像传感器,具备高分辨率、低功耗和优异成像质量,广泛应用于智能手机、安防监控、医疗成像等领域。

1、camera的三大模块:

1)image sensor core (摄像头的基本传感器)

1、摄像头部分通常包含一个图像传感器,如CMOS(互补金属氧化物半导体)或CCD(电荷耦合器件),它们负责将光线转换为电信号。在选择摄像头模块时,要考虑其分辨率、帧率、感光度以及色彩深度等参数,以满足应用需求。

2、sensor可以调什么参数?ISO、光圈值、白平衡等

2)image sensor process (图像处理模块,可以集成在模组,也可以集成在SOC,也可以同时集成,功能互补)

1、摄像头可能还包括ISP(图像信号处理器)来预处理图像数据,如白平衡、曝光控制和噪声消除等,OV5640有内置ISP。

2、模组端的ISP可以调什么参数?图像白平衡、去马赛克、去噪、颜色空间转换、色调重建等

3)image output interface(图像输出模块 - DVP/MIPI接口)

1、摄像头接口DVP/MIPI对比 - 相当于PCI/PCIe的关系

https://blog.csdn.net/qq_40732350/article/details/88554497

2、DVP并口一般用于低速传输,一些没有MIPI接口的MCU可以使用GPIO根据DVP协议造出波形;

3、MIPI接口用于高速传输,需要CPU带有MIPI控制器;

2、VCM (Voice Coil Motor)

https://zhuanlan.zhihu.com/p/37332613

4、OV5640是一款经典摄像头模组,相关资料也比较多

1)手册解读:https://blog.csdn.net/weixin_42502089/article/details/151262462

2)驱动设计:https://blog.csdn.net/weixin_42502089/article/details/151262462

3)OV5640摄像头显示设计(DVP): https://zhuanlan.zhihu.com/p/1981320237094827549

3、GC2063(MIPI+内置ISP)

1)基本介绍:https://blog.csdn.net/gitblog_06681/article/details/143339597

2)GC2063 是一款高质量的 1080P CMOS 图像传感器,适用于安防摄像头产品、数码相机产品以及手机摄像头应用。

3)逻辑框图(与OV5640是类似的),GC2063也内置ISP模块;

3)RK3568 camera方案

1)整体框架

抓图顺序:

1)摄像头的初始化(通过CCI配置Sensor的寄存器,设置输出格式、分辨率、输出速率),使能MIPI-CSI-2/D-PHY;

2)配置主控板的ISP模块(颜色空间转换、缩放、裁剪、旋转等),指定输出到内存/显存的通路(MP主通道、SP自身通道);

3)输出到内存供显示模块使用;

2)主控端ISP2.1

1、主控端ISP2.1处理流程 - 流程非常长,功能强大,涉及多个IP硬件模块处理 - 这也是为什么要用到subdev和media子系统管理

2、ISP在相机系统中占有核心主导的地位,是构成相机的重要设备。ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。换言之涉及算法的厂商一般会闭源,只提供接口供开发者使用;

3)MI(Memory Interface)

1)MI模块提供多种途径将摄像头获取的图像存放到内存DDR,提供给显示模块读取使用;

4)全志V853 camera方案

https://docs.aw-ol.com/v853/soft/soft_camera/

1)Camera通路框架(使用VIN camera驱动框架)

2)Camera架构-芯片手册

它的处理过程分为:

  • 输入Parser:格式解析
  • 主控端ISP:Image Signal Processor,即图像信号处理器,用于处理图像信号传感器输出的图像信号
  • VIPP: Video Input Post Processor(视频输入后处理器),能对图片进行缩小和打水印处理。VIPP支持bayer raw data经过ISP处理后再缩小,也支持对一般的YUV格式的sensor图像直接缩小。

6、多camera方案

【嵌入式视觉处理】基于RK3588的多摄像头输入系统设计:硬件架构、驱动开发与智能场景应用

https://download.csdn.net/download/fq1986614/92072848

相关推荐
2501_944525543 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
松☆5 小时前
Dart 核心语法精讲:从空安全到流程控制(3)
android·java·开发语言
_李小白6 小时前
【Android 美颜相机】第二十三天:GPUImageDarkenBlendFilter(变暗混合滤镜)
android·数码相机
STCNXPARM8 小时前
Linux camera之Media子系统
linux·camera·v4l2·media子系统
小天源9 小时前
银河麒麟 V10(x86_64)离线安装 MySQL 8.0
android·mysql·adb·麒麟v10
2501_915921439 小时前
傻瓜式 HTTPS 抓包,简单抓取iOS设备数据
android·网络协议·ios·小程序·https·uni-app·iphone
csj5010 小时前
安卓基础之《(20)—高级控件(2)列表类视图》
android
JMchen12310 小时前
Android计算摄影实战:多帧合成、HDR+与夜景算法深度剖析
android·经验分享·数码相机·算法·移动开发·android-studio
恋猫de小郭12 小时前
Flutter 在 Android 出现随机字体裁剪?其实是图层合并时的边界计算问题
android·flutter·ios