OIS、EIS原理

news2025/4/8 9:15:50

OIS概念

光学防抖OIS,全称Optical Image Stabilization,从字面理解就是稳定的光学图像。其工作原理是基于陀螺仪检测并进行位移补偿。即通过镜头内的陀螺仪侦测手机抖动产生的微小移动,然后将信号传至CPU处理,CPU会即刻计算需要补偿的位移量,再根据计算结果移动相机镜片组中的悬浮镜片,以抵消抖动产生的微小位移,从而有效克服因相机振动产生的影像模糊。

注:OIS可以稳定由于摄影师手抖造成的图像模糊,但它无法补偿由场景运动引起的模糊。

OIS补偿方式

OIS的补偿方式分为两种:lens shift和module tilt,如下图所示:

其中:

  • Lens Shift的位置传感器主要采用Hall Sensor
  • module tilt的位置传感器主要采用Photo-sensor
  • Lens Shift无法进行补偿roll维度的抖动
  • Lens Shift能够补偿的角度相对小一些
  • module tilt相对会增加模组的高度

补偿原理

一开始在稳定状态下,物体能够投射到sensor中心位置,但是当发生晃动或者抖动的时候,物体并没有成像在sensor中心,这时就需要OIS进行补偿,改变光路,使其物体重新成像在sensor中心。本文以Lens Shift为例,演示OIS的补偿过程。

OIS防抖工作原理

OIS系统组成部分

OIS的大体俯视图如下所示,其电路主要由四个主要组件组成,分别是Gyro sensor、Hall Sensor、Driver IC和MCU。

  • Gyro sensor

能够感知手机上的运动或振动,但目前相机模组上不单独安装Gyro Sensor,而是通过SPI来获得手机端Gyro Sensor的数据,可以节省相机模组的空间。(问:为什么用SPI方式传输数据,而不是常用的I2C)

答:陀螺仪的精度是决定整个系统性能的关键特性,是控制精度的基础。phase delay必须减少到最小,以避免在控制环时序中插入延迟;zero-rate offset必须接近于0,来减少积分误差;输出数据速率必须高于要控制的系统频率的两倍(过采样);测量范围必须保证高达±250dps;速率噪声密度必须非常低才能最大限度地提高信号的精度;功耗在正常模式和待机模式下都必须极低以适应手机。最重要的一点是陀螺仪的角度数据必须快速稳定的发送到MCU中,所以建议使用SPI方式,其能达到6Mbit/sec的速率,比I2C要快。

  • Hall sensor

感知lens的移动位置。

  • Driver IC

主要有两个功能:(1)根据控制算法的计算,将Lens(Module)引导到正确的位置;(2)从Hall Sensor中获得有关Lens(Module)的位置信息。

  • MCU

(1)执行控制算法来矫正相机位移;(2)另外还应进行采集信号的预处理和Hall Sensor校准补偿(由于温漂造成的);(3)与Gyro sensor和Driver进行通信,告知Driver新的参考位置。

OIS系统计算流程

(1)由主板的(Gyro和加速计)提供角速度和加速度信息;

(2)加速度可以得到重力方向信息

(3)角速度积分后(积分后是角位移?),换算成手机X/Y方向上的位移量;

(4)为了抵消位移量,计算出期望的Lens X/Y位置的Hall target,传给OIS driver的闭环控制;

(5)开始闭环控制:计算Hall target和Hall数据的差值,通过PID controller输出到执行器,使Hall数据达到Hall target。

OIS 执行器的种类和实现原理

Ball-type OIS 马达:semco 技术主导的 OIS 执行器类型。镶嵌在导槽的滚珠滚动让 Lens
可动,通过磁石和音圈的相互作用实现 Lens 在 X/Y 方向的位移,抵消手机的位移。优点:
结构简单、OIS 性能较好, 缺点:serve off 后镜头晃动、滚珠和润滑油在极端气候下影响大。

SMA OIS 马达:SMA(shape memory alloy)主要由英国 CML、国内某供应商供应,模组
LG innotek 推动的 OIS 执行器类型。利用 SMA 热敏记忆合金,通过电流控制长度”电流→温
度→长度“,拉动 Lens 在 bracket 中位移,一般需要一对 SMA 线(2 wires)来控制一个方向。
优点:结构简单、肩高较低、没有磁性器件(不影响手机的其他器件/多个 AF 模组的情况)
、容易实现 rotation 控制。缺点:虽然薄但面积较大、成本较高。

悬丝(弹片)OIS 马达:Apple 主要使用的 OIS 马达。金属丝或者簧片既作供电功能又具
有弹性,令 Lens 可动,通过磁石和音圈的相互作用实现 Lens 在 X/Y 方向的位移。优点:成
本低、国产成熟。缺点:结构较大、OIS 性能一般、容易产生镜头 tilt、可靠性风险。

OIS driver 内部各模块

简单介绍一下 OIS 内部 各模块
Orientation: 是 因为 OIS 和 陀螺仪本身 可能存在 XY 轴 互换 因此在 OIS 中 通过
该模块 对 X Y 作对调。
GETGRX/Y : 这里是 OIS 最先获取的 陀螺仪的原始数据,但是注意的是 如果存在 XY
互换,那么经过 Orientation 获取的 GETGRX 的值 实际上 是 陀螺仪的原始 Y 数据。
Gyro filter : 信号滤波。
XGG/YGG : Xgain 和 Ygain 数字放大。
Polarity : 极性翻转 如果存在陀螺仪的 X 方向的正方向 和 对应的是 OIS X 轴的
负方向,所以需要将 OIS 的 X 轴作一下极性的翻转。
SRX/Y : 最终通过 OIS 内部 硬件算法处理后 的 OIS 的 X Y 的 位移值 ,最终 OIS
会根据 这个位移值时时调整 镜头的位置。

OIS 的 bring up

ois porting 的主逻辑和 sensor 以及其他 sub device 一样,主要分为三步:

1. 配置 dtsi 保证上电时序和电压参数正确
dtsi 的配置不过多追述基本和其他 sub devices 一致,主要注意就是电压的范围设置,
I2C 的配置这些

2. 配置 xml,主要是 slave addres,以及各个 mode 下的寄存器设置,简单介绍一下,xml
里面的主要一些 porting 相关的参数
<slaveAddress>0x68</slaveAddress>
//ois i2c 地址
<i2cFrequencyMode>FAST_PLUS</i2cFrequencyMode>
//ois i2c 速率
<powerUpSequence>
//ois 上电时序
</powerUpSequence>
<powerDownSequence>
//ois 下电时序
</powerDownSequence>
<oisinitSettings>
<enableOisSettings>
// ois init
//ois enable

<disableOisSettings>
// ois disable
<centeringOnSettings>
// ois centeringOn
<centeringOffSettings>
// ois disable centeringOn
<opcode>
<!--OIS code prog -->
<prog>0x0000</prog>
<!--OIS code coeff -->
<coeff>0x0000</coeff>
<!--OIS code pheripheral -->
<pheripheral>0x0000</pheripheral>
<!--OIS code memory -->
<memory>0x0000</memory>
<!--OIS fw address type -->
<fwAddrType range="[1,4]">2</fwAddrType>
<!--OIS fw address increase flag -->
<addrIncrease>1</addrIncrease>
<addrIndataflag>122</addrIndataflag>
</opcode>

上面这一段是 OIS 固件升级传到内核的一些参数;如果该 OIS 的升级流程走的是高通
的默认的升级 code,则需要和 fae 校对各地址去填写,保证正常升级。

3. 编译,调试,验证

这里主要讲一下验证,因为早期 在板子上很难看出来 OIS 的效果,所以我们只需要保
证 OIS 的上电正常 并且 I2C 通信能通就行。


如果有 vendor 的 fae 在的话,可以让他们抓一下 打开相机时 OIS I2C 上数据通信,确
保下的寄存器值正确且下的时序正常。


如果 vendor 不在的情况下,一般就是加一下 log 打印,一点时确保 OIS 的 config mode
走对了,二是打印一下对应的寄存器,比如重点的读一下 enable 的寄存器在打开后是
否使能。

EIS

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

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

相关文章

小白继续深入学习C++

第1节 指针的基本概念 1、变量的地址&#xff1a; 变量是内存地址的简称&#xff0c;在C中&#xff0c;每定义一个变量&#xff0c;系统就会给变量分配一块内存&#xff0c;内存是有地址的。 C用运算符&获取变量在内存中的起始地址。 语法&#xff1a; &变…

国庆作业 day1

C语言基础考题&#xff08;40&#xff09; 选择题 20分每题2分 1、已知字母A的ASCII码为十进制数值65&#xff0c;且S为字符型&#xff0c;则执行语句SA6-3&#xff1b;后S中的值为 ( ) A.D B.68 C.不确定的值 D.C 2、若有定义语句&#xff1a;int a12;&#xff0c;则执…

Java之线程池的详细解析

1. 线程池 1.1 线程状态介绍 当线程被创建并启动以后&#xff0c;它既不是一启动就进入了执行状态&#xff0c;也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢&#xff1f;Java中的线程 状态被定义在了java.lang.Thread.Stat…

安全渗透测试基础之漏洞扫描工具之Nessus使用介绍

前置条件:Nessus工具使用前要确保工具是服务状态 systemctl start nessusd.service 启动nessus服务 systemctl status nessusd.service 查看nessus服务状态 1.配置扫描模板 2.新增高级扫描 2.1 设置日程表: 2.2设置邮件收件人(可选): 2.3主机发现: 2.

软件设计模式系列之二十一——观察者模式

1 观察者模式的定义 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象之间建立一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。这个模式也被称为发布-订阅模式…

Android stdio的Gradle菜单栏无内容问题的解决方法

右边Gradle菜单栏里没有Tasks选项内容的问题 正常情况↓ 如果这个问题如果无法解决的话&#xff0c;Gradle打包就只能通过控制台输入命令来解决&#xff0c;但这无疑是把简单问题复杂化了&#xff0c;我们来看看怎么解决这个问题吧。 这里有几个方法提供&#xff0c;可以自行选…

Ipa Guard软件介绍:启动界面和功能模块全解析,保护你的iOS应用源码

ipaguard界面概览 ipaguard界面分左右2块&#xff1a;左边菜单导航栏&#xff0c;右边的功能区 左侧菜单&#xff1a;按模块分成启动界面&#xff0c;代码模块&#xff0c;文件模块&#xff0c;重签名与测试模块 右侧主功能区会随着功能变化&#xff0c;但是整体分3块&#xf…

Webpack 基础入门以及接入 CSS、Typescript、Babel

一、什么是 Webpack Webpack 是一款 JS 模块化开发的技术框架&#xff0c;其运作原理是将多个 JS 文件关联起来构成可运行的应用程序。 Webpack 拥有丰富的 plugins / loaders 插件生态圈&#xff0c;可以让 js 识别不同的语言如 .css, .scss, .sass, .json, .xml, .ts, .vue…

揭秘:机构招生电子传单制作的五个黄金法则

机构招生微传单制作一直都是让很多人在意的事情。一款好的微传单不仅可以吸引更多的学生&#xff0c;还可以省去很多招生工作的时间和精力。但是&#xff0c;很多人却不知道如何制作一款精美的微传单。下面就让我们来学习一下如何制作一款机构招生的微传单吧。 首先&#xff0c…

聊聊Go与依赖注入

如果你读过Robert C. Martin[1]的《敏捷软件开发&#xff1a;原则、模式与实践》[2](书的封皮见下图)&#xff0c;那么你一定知道经典的SOLID设计原则[3]中的“D”&#xff1a;依赖倒置原则&#xff08;Dependency Inversion Principle, DIP&#xff09;。 依赖倒置原则是面向对…

node版本问题:Error: error:0308010C:digital envelope routines::unsupported

前言 出现这个错误是因为 node.js V17及以后版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制&#xff0c;可能会对生态系统造成一些影响. 在node.js V17以前一些可以正常运行的的应用程序,但是在 V17 及以后版本可能会抛出以下异常: 我重装系…

华为云云耀云服务器L实例评测|部署在线图表和流程图绘制工具drawio

华为云云耀云服务器L实例评测&#xff5c;部署在线图表和流程图绘制工具drawio 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 优势及其应用场景1.3 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 drawio3.1 drawio 介绍3.2 Docker 环…

宝贝详情页制作的7个步骤,一看就懂

对于许多淘宝卖家来说&#xff0c;制作精美的详情页是吸引客户和提升销售的关键。然而&#xff0c;很多卖家可能会因为缺乏设计技能和经验而感到困惑。本文将为您揭示如何使用免费在线海报制作工具&#xff0c;如乔拓云&#xff0c;来制作具有吸引力的详情页&#xff0c;让您在…

基本数据类型在内存中存储形式

目录 内存分区模型 常量 与 变量 常量的定义 #define 与 const 区别 宏与const使用 修改const常量 整数类型 无符号整数 有符号整数 补码 内存分析 浮点数类型 float类型的IEEE编码 double类型的IEEE编码 基本的浮点数指令 数据类型转换分析 浮点数作为返回值…

嵌入式Linux应用开发-基础知识-第十六章GPIO和Pinctrl子系统的使用

嵌入式Linux应用开发-基础知识-第十六章GPIO和Pinctrl子系统的使用 第十六章 GPIO 和 Pinctrl 子系统的使用16.1 Pinctrl 子系统重要概念16.1.1 引入16.1.2 重要概念16.1.3 示例16.1.4 代码中怎么引用pinctrl 16.2 GPIO子系统重要概念16.2.1 引入16.2.2 在设备树中指定引脚16.2…

React 入门笔记

前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了&#x1f923;, 现在从市场份额来看, 确实 React 还…

分析各种表达式求值过程

目录 算术运算与赋值 编译器常用的两种优化方案 常量传播 常量折叠 加法 Debug编译选项组下编译后的汇编代码分析 Release开启02执行效率优先 减法 Release版下优化和加法一致&#xff0c;不再赘述 乘法 除法 算术结果溢出 自增和自减 关系运算与逻辑运算 JCC指…

决胜未来:解锁新科技趋势的无尽可能性

随着科技的飞速发展,我们的未来迈入一个新的时代。无论是人工智能、区块链、大数据、物联网还是机器学习等,这些技术正以前所未有的速度重塑我们的世界和生活。面对这些未来的科技趋势,我们能否抓住其中的机遇并寻找新的突破? 首先&#xff0c;我们来看一看人工智能。人工智能…

2023年中国工业脱水机行业供需分析:随着自动化和智能化技术的快速发展,销量同比增长4.9%[图]

工业脱水机行业是指专门从湿润的固体物料中去除水分的设备制造和相关服务。它广泛应用于食品加工、化工、制药、纺织、环保等行业&#xff0c;用于去除物料中的水分&#xff0c;提高产品质量和降低能耗。 工业脱水机行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研…

基于SpringBoot的师生共评的作业管理系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 课程管理 作业管理 作业互评 小组管理 作业管理 作业评分 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#xff0c;针对这个问题开发一个…