camera bringup介绍

2023-10-12 10:28
文章标签 介绍 camera bringup

本文主要是介绍camera bringup介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

camera bringup需要做什么

camera硬件包括

camera硬件连接关系

camera使用的通信接口

camera sensor

cmos sensor

色彩滤镜

sensor输出的分辨率

曝光控制-快门

曝光控制-曝光时间

曝光时间如何控制

曝光控制-帧率

曝光控制-增益

手动曝光

手动设置曝光-长曝光

手动设置感光度

remosaic

PDAF

actuator

校准

马达异响

OIS

OIS-4轴补偿

OIS-drift补偿

OIS常见问题

EEPROM

EEPROM常见问题

ToF

闪光灯


camera bringup需要做什么

让camera相关的硬件正常工作(供电正常,通信正常,硬件设置正常,软件运行正常)。

camera硬件包括

  1. sensor - camera的核心器件,用来生成图像
  2. eeprom - 存储校准参数
  3. actuator - 推动镜头完成对焦
  4. ois - 光学防抖组件
  5. flash - 闪光灯
  6. tof - 激光测距,提升对焦速度

其中,camera sensor是核心器件,是必不可少的。其他器件根据模组的不同是可选择的。

camera硬件连接关系

  1. CCI总线、MIPI总线、I2C总线都是挂在SOC上的。其中,CMOS sensor、actuator、OIS、EEPROM、外挂LED驱动IC 都是通过 CCI总线挂载到SOC上的。
  2. 平台接受的数据通过 cmos sensor 通过 MIPI总线进入到 SOC,然后进入到 ISP进行图像处理。
  3. 有一些项目有 TOF,是通过 I2C总线挂载到 ADSP上。
  4. 手机上的LED灯,绝大部分都是挂载到 PMIC上的,PMIC是高通的电源管理芯片。

camera使用的通信接口

I2C总线:是由Philips公司开发的一种简单、双向二线制同步串行总线。

I2C地址: 每个slave都有一个7位地址,最后一位补0代表写,补1代表读

I2C速率: 我们目前使用的三种速率 100kbit/s, 400kbit/s, 1Mbit/s

MIPI联盟:即移动产业处理器接口(Mobile Industry Processor Interface 简称MIPI)联盟。MIPI(移动产业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。

目前有两套mipi协议

The C-PHY is based on 3-Phase symbol encoding technology delivering 2.28 bits per symbol over three-wire trios, and is targeting 2.5Gsymbols/s.比较新的协议,传输速率高,目前项目中的主摄像头大多支持C-phy,F1的主摄,F4,J1,J2的主摄使用的都是C-phy。

D-PHY的最初版本的设计目标是500Mbits/s,而D是罗马数字(拉丁文数字)中500。D-PHY采用1对源同步的差分时钟和1~4对差分数据线来进行数据传输。比较旧一点的sensor采用的是 D-PHY,最新的 sensor采用的是 C-PHY。

camera sensor

camera sensor的作用是把光转换成电信号 如下图所示,光子进入光电二极管激发出电子 不同数量的光子积累的电荷不同,我们就可以 通过积累的电荷来反映光强度的不同。

cmos sensor

图像传感器按照工艺可以分为

CCD:是电荷耦合器件(charge coupled device)的简称。它能够将光线变为电荷并将电荷存储及转移,也可将存储之电荷取出使电压发生变化。

CMOS:是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体)的缩写。目前我们在手机上使用的camera sensor都是采用cmos。

色彩滤镜

sensor输出的分辨率

目前我们常用的主摄camera包括如下分辨率

  1. Fullsize - 例如48M, 64M, 108M
  2. Binning size@30fps - 例如12M, 16M, 27M
  3. 4K@60fps
  4. 1080p@120fps
  5. 1080p@240fps

sensor如何得到要输出的各种分辨率?

  1. binning
  2. crop (analog crop, digital crop, output crop)

两种方式的差别?

  1. binning只能是整数倍,crop相对要更灵活
  2. crop会导致视角(fov)变小,binning不会,但是binning会导致感光度变化

  

曝光控制-快门

手机使用的摄像头都是电子快门,又可以细分为两种

  1. rolling shutter
  2. global shutter

曝光控制-曝光时间

曝光时间如何控制

sensor有专门的寄存器用来控制曝光时间,写入的寄存器值我们一般称为linecount,linecount的单位为Tline,曝光时间可以通过如下的公式计算出来:

vt clock = lineLengthPixelClock x frameLenthlines x frameRate

虽然vt clock可以用过上述公式计算,实际上vt clock在sensor工作时是一个定值

Tline = lineLengthPixelClock / vt clock      (一般来说Tline大概在10us这个量级)

曝光时间 = Tline x linecount

软件控制曝光的时候,实际上是这样计算linecount的

linecount  = 曝光时间 /  Tline

一般的linecount寄存器为16bit,那么最大的曝光时间约等于多少?

曝光控制-帧率

sensor也同样提供了控制帧率的寄存器,寄存器值一般称为frame length lines,正是上面我们计算Tline使用的值。

vt clock = lineLengthPixelClock x frameLenthlines x frameRate

通过这个公式可以推出

frameRate = vt clock / (lineLengthPixelClock x frameLenthlines)

frameLengthLines还需要满足一个如下的额外的条件,其中vertialOffset和具体sensor关

frameLengthLines > linecount + vertialOffset

曝光控制-增益

sensor可以提供两个增益

模拟增益 - analog gain

数字增益 - digital gain

平台的ISP还提供了ISP gain

gain的总和 = analog gain x digital gain x isp gain

由于曝光时间和增益对图像亮度的影响都是线性(几乎)的,那么如果有两组曝光时间和增益的乘积相同,即:

linecount_A x gain_A = linecount_B x gain_B

那么这两组曝光参数对应的图片亮度也是一样的

手动曝光

手动设置曝光-长曝光

目前我们最新的项目,长曝光都支持到了32s,但是曝光寄存器只有16位,一般情况下Tline是10us,最长曝光只有655.32ms,超出的范围怎么实现?

超出此范围的曝光时间都需要sensor硬件支持,目前支持长曝光的sensor都有一个shift寄存器,可以把Tline的时间成倍的提高

Tline_new = Tline x 2^shift                (大部分sensor的shift都可以到7)

手动设置感光度

  1. ISO speed表示sensor的感光度,ISO越大,sensor感光的能力就越强
  2. ISO100 gain的取值,对应sensor的N倍gain,是由tuning决定的
  3. sensor支持的最小增益 gain_min,sensor支持的最大增益gain_max,ISO speed的范围[gain_min / ISO100_gain,  gain_max / ISO100_gain]

remosaic

  1. remosaic功能需要sensor的硬件支持,支持remosaic功能的sensor采用了Quad CFA的排列。
  2. 采用Quad CFA排列的sensor通常分辨率非常高,我们常见的有48M,64M, 108M。
  3. 普通模式我们使用binning size输出,保证画质。当需要高分辨率图像时,sensor切换到remosaic模式,即为我们手机上的48M,64M,108M等模式。

PDAF

PDAF简介_pdaf类型_repinkply的博客-CSDN博客

actuator

是一颗控制VCM马达的驱动IC,软件通过I2C写入DAC code来控制马达的位置

从控制方式上可以分为:

open loop

DAC code对应的是actuator输出的电流值,低端模组常用,精度不高,需要补偿重力影响。

close loop

DAC code对应的是actuator的hall位置,高端模组常用,精度高,性能好,通常不需要补偿重力影响。

VCM结构

校准

马达异响

OIS

OIS-4轴补偿

OIS-drift补偿

OIS常见问题

EEPROM

EEPROM常见问题

ToF

闪光灯

这篇关于camera bringup介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java File中renameTo的介绍和使用说明

看到项目中有个地方用的File的renameTo这个方法,本以为这个方法就是用来文件重命名的,但是项目中确用它来进行文件的移动。就是使用renameTo将一个文件从一个目录移动另一个目录下! 下面就简单介绍一下renameTo,并整理一个renameTo的使用! renameTo的介绍 官方文档说明 /*** 重新命名此抽象路径名表示的文件。此方法行为的许多方面都是与平台有关的:重命名操作

【一】并发编程故事背景介绍

背景 每一个故事都有一个开始,那么并发编程的故事的开始是什么呢? 由于人类的科学技术的发展,需要处理的任务越来越复杂也多样化,导致之前单核的处理器无法处理这些复杂的任务,于是处理器从之前的单核处理器逐渐发展到多核处理器【其实这里也有一个摩尔定律】。 多核处理器很好的解决了多任务和任务复杂度的问题,那么我们就应该学习一下多任务处理,这里指的是多线程,Java语言在创建时就支持多线程,很高明!在

图文教程,Nginx+Keepalived(双机热备)介绍已经搭建高可用负载均衡环境

上一次分享了Nginx相关的应用场景如下: ​Nginx介绍以及一些应用场景说明 在实际使用,单机版的Nginx就不能满足高可用的要求了,在这种情况下,我们使用Nginx+Keepalived(双机热备)搭建一套高可用的环境,这就是本文的核心内容。 首先我们先了解一下Keepalived是个什么东东? Keepalived介绍 Keepalived是一个类似于layer3, 4 & 5交

mybaits中configuration标签介绍-------mybatis(三)

常用标签介绍 <properties resource="source/mybatis.properties"></properties> properties标签作用为引入外部的配置文件,从而将数据的连接信息分离出去 <settings> settting 标签中有很多属性,最常用的就是驼峰属性name=“mapUnderscoreToCamelCase”,默认false, 一般我们在写j

第一篇 安卓系统的介绍及特点

安卓系统介绍及特点 一、    安卓系统的介绍 1、 Andriod是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为“Android”公司开发,谷歌在2005年收购了该公司后,继续对Android系统开发运营,它采用了软件堆层的架构,主要分为三部分,底层Linux内核只提供基本的功能,其他的应用软件则由各公司自行开发,部分程序以Java

java版数字藏品深色UI仿鲸探数藏盲盒合成短视频卡牌模式支持高并发功能介绍

根据您提供的艺术品发售系统的需求,以下是一个更为详细和全面的系统设计概述: 1. 藏品发售 藏品分类:藏品可以按照不同的类别进行分类,如绘画、雕塑、摄影等。稀有度设置:后台可以为每个藏品设置不同的稀有度,如普通、稀有、史诗、传说等,并设置相应的售价。购买限制:可以设定购买数量限制、用户等级限制等。 2. 二级市场 交易系统:用户可以将自己的藏品直接挂售到二级市场商城,并设定售价。交易记录:

Python—①Python介绍及工具配置

Python—①Python介绍及工具配置 <<<CSDN排版不美观,想看排版美观的进Python—①Python介绍及工具配置>>> 1、Python简介 ①简介 Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。开发设计者:吉多·范罗苏姆(Gui

js中的正则介绍

文章目录 正则基础正则创建方式正则分组正则正/负向预查replace方法replace应用match方法 正则基础 正则用于处理字符串正则对象.test(字符串);这是正则匹配。用于检查字符串是否符合正则,符合返回true,不符合返回false正则对象.exec(字符串)这是正则捕获。 返回结果是数组,如果捕获不到返回null 第一项:代表捕获到的内容第二项:inde

TypeScript介绍|基础

TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的一个超集,主要增加了静态类型定义。学习 TypeScript 可以帮助开发者在开发大型应用时提高代码的可维护性和可读性。下面是一些关键概念适合初学者入门: 基本概念 静态类型与动态类型: 动态类型(如JavaScript):变量的类型在运行时确定,可以随时改变。静态类型(如TypeScript):变量的类型在

介绍一下3D游戏开发的简单常识,以及最终幻想13游戏流程为什么会过于线性的原因。

介绍一下3D游戏开发的简单常识,以及最终幻想13游戏流程为什么会过于线性的原因。 (1) 回复 1楼2012-01-25 14:10 举报 | keyblade2 坐等B青现身给LZ答疑解惑 回复 2楼2012-01-25 14:17 举报 | 吧友222.42.88.* 一款现代