这种形变通常称为RS效应,或者“果冻效应”(Jello effect),指图像出现扭曲、倾斜等现象,仿佛进入了“时空扭曲”的世界一般。


3bf1319007dba7cb8bf9197c5df0574e.png


与rolling shutter 做对比的是CCD sensor 采用的全局快门 (global shutter),其特点是sensor 上所有像素是在同一瞬间全部开始曝光的,因此sensor 采集的是物体在同一时间点的画面。下图是两种曝光方式的对比。


72b51116d1461500214c5e4fbd9c05f8.png
8a6c729365e17fd34fd8080c45348493.png


一般来说,RS效应存在三种表现形式,前两种属于画面畸变,合称果冻效应。

  • 整体倾斜(skew),如下图车辆的例子


6822ad5667fa862f092dedb08c11e8fc.jpeg
600e407131ff13a49a6327bc1c5a7812.png
传送带上的电路板图像运动skew


  • 图像摇摆(wobble),如下图所示

在无人机、车载等应用中,camera本身随载具平台一起运动,平台的高频机械振动会对成像造成较大扰动,图像产生摇摆。即使在安防场景中,如果camera附近存在振动源(如空调电机)也会产生同样的问题。


ae55e9a3bc21e93fb045757d33e0f3ae.png


  • 部分闪光(partial flash),如下图所示
    普通摄影闪光灯的闪光时间 通常只有几个毫秒,显著短于一帧图像的成像时间,因此只有一部分画面能够被闪光照亮。


4119b7185f32fbdaca0665db772956f4.png



微软研究院的Simon等人使用光流法追踪摇摆像素的运动矢量,从而对摇摆进行校正。


4e166736b3462c477b297a030225ec84.png
13a3d309a23e52b677c4d6ae8e88c822.png


针对手机拍摄的场景,斯坦福的Alexandre等人使用手机自带的加速度传感器提取camera的加速度信号用于补偿图像摆动。


7dada076844c39f4d621f64852167961.png
25f74ea1dd7ecd7e71e726af47b3e267.png



1.8 积分时间 (integration time)

用户在使用camera拍摄时需要根据场景特点决定所采用的曝光时间(exposure time),或者让camera 在设定范围内自动选择最合适的曝光时间,这时所涉及的曝光时间概念主要与拍摄场景有关,一般是以毫秒为单位计算的绝对时间,也是用户比较熟悉和容易理解的概念。

而sensor 中用来控制曝光长短的寄存器参数称为积分时间,一般是以行为单位的,这个概念是源于sensor 的技术特性,一般不需要用户去理解。

曝光时间和积分时间存在确定的换算关系。比如说int_t=159,指的是sensor reset 信号和read 信号之间的间隔为159行,而每行所占的绝对时间(line_time)与sensor 主频(pixel clock, PCLK)的和每一行包含多少像素(行长 )有关,具体公式是:

line_time=h_size / pclk

其中h_size 为行长,以PCLK 数为单位,1/pclk 为一个时钟周期,即扫描一个像素需要花费的绝对时间

因此曝光时间与积分时间的换算公式如下:

exposure time = int_t * line_time

举例来说,假设一个1080p sensor PCLK=76MHz,每行配置成2000个PCLK(由有效像素和blanking组成),则有

line_time = 2000 / 76MHz = 26.32 us

如果某个场景需要10ms曝光时间,则sensor 积分时间应如下计算,

int_t = 10000us / 26.32us = 379.9 (行)

显然这个例子可以安全地将sensor 寄存器配置为380行,就能得到10ms的曝光时间。

但是当 int_t < 2 时问题就会变得有些复杂。假设计算出的理想积分时间是1.5行,此时自动曝光算法就很容易产生振荡,不停在1行和2行之间切换而无法稳定在一个固定值。因此有些sensor 会支持分数行,可以帮助解决这个问题。