用于SLAM的摄像头快门控制
罗汉杰. 摄像头快门的调控方法、装置、计算机设备及存储介质:中国,CN201810146484.9[P]. 2018-07-24.
Introduction
输入图像的质量所决定往往能决定视觉系统的表现。传统的摄像头快门控制程序是以人的感官作为评判标准的。它们控制快门时间,使得曝光度控制在合理的范围,使得照片对比度强,亮度适中,照片中物体边缘轮廓清晰,色彩丰富,符合人的观感。如果使用传统的快门控制方法,我们可以获得一张对于人来说感观良好的照片,但是此时的图片中梯度信息可能并不是最丰富的。而对于无论是基于特征点还是灰度信息的视觉SLAM系统来说,图像的梯度信息都是十分重要的。所以对于视觉SLAM系统来说,使用传统快门控制方法获得的照片往往不是一张最佳的照片。
上图展示了其中一个户外拍摄时经常会发生的情况。左图使用摄像头自带的自动曝光程序所拍摄的图片,而右图为图像梯度最大时的图片。我们分别在这两张图上提取FAST Feature Keypoints,可以看到,两者能提取的关键点数目差距非常大。
在本文中,我们提出一种用于视觉SLAM的摄像头快门控制方法,它会使得照片中的梯度信息最大,方便后续的机器视觉任务。
Exposure Prediction
在曝光预测程序中,我们需要预测增大/减少快门时间时,图片的可能发生的变化。这里,我们通过模仿光圈的变化而对图片进行曝光预测。我们对于图片中每一个像素点\(I(x,y)\)进行一次\(f_{F-stop}(I(x,y),k)\)操作,定义如下:
\[\begin{align} f_{F-stop}(I(x,y),k) = I_{k}(x,y) &= \begin{cases} I(x,y)(\sqrt 2)^k, & I_{k}(x,y)<255 \newline 255, & otherwise \end{cases} \end{align}\]
在这里,\(k\)为光圈大小参数,\(f_{F-stop}\)函数模仿了摄像头的光圈值k发生改变时,图片灰度值发生的变化。
由上图可以看出,当\(k\)为负数并且越小时,光圈值越小,曝光量越少,图片越暗;当\(k\)为正数并且越大时,光圈越大,曝光量越多,图片越亮(\(k=0\)时表示原图)。我们可以对原图\(I\)进行一系列的\(f_{F-stop}\)操作,模仿由于快门时间变化而对曝光量所造成变化。在我们的程序中,\(k\)值设置为-1, -0.5, 0, 0.5, 1。
Image Quality Metrics
参考Zhang1提出的方法,我们设定了图片质量评估函数\(Q(I)\),用于估计图片\(I\)的图片质量,当\(Q(I)\)的值越大时,我们认为图片的质量越好,图中可获取的特征点数量越多。
首先,给定一张图片\(I\),假定它的长为\(w\),宽度为\(h\)。我们首先计算图片中每一个像素\(I(x,y)\)的梯度向量大小:
\[\begin{align} g(x,y)=‖∇I(x,y)‖^2 \end{align}\]
然后我们对所有的\(g(x,y)\)从小到大进行排序,获得了一个经过排序后的梯度值集合\(G= \lbrace g(x,y) \rbrace\),并且\(G_i\)表示集合\(G\)中第\(i\)个数,\(i∈[0,s),s=w*h\)。
我们定义图片\(I\)的梯度质量评估函数\(Q(I)\)为:
\[\begin{align} Q(I) = \sum\limits_{i \in [0,s)} {W_i}{G_i} \end{align}\]
其中,权重函数\(W_i\)定义为:
\[\begin{align} W_i &= \begin{cases} \frac{sin(πi/2ps)^k}{‖W‖}, & i<ps \newline \frac{sin(\frac{π(s-ps-i)}{2(s-ps)})^k}{‖W‖}, & i≥ps \end{cases} \end{align}\]
其中\(p \in (0,1]\),\(k\)均为控制参数,根据经验,我们一般设置为\(p=0.8\),\(k=5\)。权重函数\(W_i\)的作用在于压制过小/过大的梯度值,避免图片噪点等干扰。
在下面的实验中,我们在同一场景中,获取不同曝光时间的照片,并且计算各个图片的FAST关键点数目和质量评估值。可以看到,两者的极值位置基本一致。
Exposure Control
经过了曝光预测步骤后,我们获得一系列不同\(k\)值的图片\(I_k\),然后我们对于每一张\(I_k\)计算对应图片质量值\(Q(I_k)\),并且获得\(Q(I_k)\)值最大时对应的\(k\),定义为\(k'\)。然后我们根据下式计算新的快门速度\(∆t_{next}\):
\[\begin{align} ∆t_{next} &= ∆t(1+ck') \end{align}\]
其中\(∆t\)为当前的摄像头快门速度,\(c \in (0,1]\)为控制参数,我们一般设置为\(c=0.2\)。
当图像过暗时,\(∆t_{next}\)的值会变大;当图像过亮时,\(∆t_{next}\)的值会变小;但图片质量最好时,\(k'\)的值为0,\(∆t_{next}\)保持不变。对于同一个场景,无论起始快门速度为何值,经过上述方法不断迭代后,最终会稳定于一个快门值,获得一张质量较好的图片。
Initialization Strategy
通过上述步骤可知,无论快门初始速度如何,对于同一个场景,主动快门控方法最终会令快门速度值稳定于一个最优值。但当快门初始速度与最优值相差太远时,需要较长的迭代时间才能达到。所以,为了减少第一次运行程序时的迭代时间,这里,我们首先根据一组给定的快门时间\(T= \lbrace ∆t_{i};i=1…n \rbrace\),拍摄一系列照片\(I_{∆t_i}\),图片质量值\(Q(I_{∆t_i })\)。我们选取\(Q(I_{∆t_i })\)中的最大值时所对应的\(∆t_i\)为快门的初始值。这样做的好处是主动快门控方法能够以一个比较快的时间使得快门时间达到最优值。根据经验,我们一般将\(T\)设置为\(T= \lbrace 1,5,10,100 \rbrace\),单位为毫秒。
Validation
我们对同一个场景分别使用摄像头自带的自动曝光程序2,Shim's method3,Zhang's method4,和我们提出的方法控制摄像机快门进行拍摄,然后在图片上提取FAST关键点,通过关键的数目评价各种快门控制程序。
通过对比实验可以看出,我们提出的方法能够获得梯度信息最大的图片。
Zhang, Zichao, Christian Forster, and Davide Scaramuzza. "Active exposure control for robust visual odometry in HDR environments." Robotics and Automation (ICRA), 2017 IEEE International Conference on. IEEE, 2017.↩︎
https://www.ptgrey.com/↩︎
Shim, Inwook, Joon-Young Lee, and In So Kweon. "Auto-adjusting camera exposure for outdoor robotics using gradient information." Intelligent Robots and Systems (IROS 2014), 2014 IEEE/RSJ International Conference on. IEEE, 2014.↩︎
Zhang, Zichao, Christian Forster, and Davide Scaramuzza. "Active exposure control for robust visual odometry in HDR environments." Robotics and Automation (ICRA), 2017 IEEE International Conference on. IEEE, 2017.↩︎