摘要
近期,脉冲相机在记录高动态场景中展示了其优越的潜力。不像传统相机将一个曝光时间内的视觉信息进行压缩成像,脉冲相机连续地输出二的脉冲流来记录动态场景,因此拥有极高的时间分辨率。而现有的脉冲相机重建方法主要集中在重建和脉冲相机相同分辨率的图像上。然而,作为高时间分辨率的权衡,脉冲相机的空间分辨率是有限的。为了处理这一问题,我们设计了一种脉冲相机超分辨率框架,旨在从低分辨率的二值脉冲流中得到超分辨率的光强图像。由于相机和捕捉物体之间的相对运动,传感器同一像素上激发的脉冲无法形容外在场景中的相同点。本文利用相对运动,推导出光强与每个脉冲之间的关系,以恢复高时间分辨率和高空间分辨率的外部场景。实验结果表明,该方法可以从低分辨率的脉冲流中重建出良好的高分辨率图像。
介绍
随着实时计算机视觉应用的发展,传统数码相机的缺点逐渐暴露。传统相机通常在一个曝光窗口内积累光电信息来形成快照帧。这样的的成像原理可以为静态场景产出富含细节的清晰图片。然而,对于拥有高速移动的动态场景,移动物体上的某一点会被投影到传感器的不同像素点上,导致运动模糊。
为了解决这一问题,脉冲相机被提出。脉冲相机可以持续地监控到达的光子并且激发连续的脉冲流,从而记录高分辨率的动态场景。相比于事件相机,脉冲相机可以记录绝对的光照强度而不是相对光强变化。
在本文中,我们针对脉冲相机设计了一种全新的图像重建框架。通过利用相对运动,我们可以恢复场景的分辨率远远高于由脉冲流直接提供的分辨率。我们仔细分析了脉冲相机的成像原理,基于脉冲相机成像原理,构建了图像光强和每个脉冲之间的关系,从而可以从脉冲流中得到超像素的光强信息。文章的主要贡献如下:
1、我们为脉冲相机提出了一种超分辨率框架。
2、我们不是简单地将图像超分辨率算法应用于脉冲相机的LR(低分辨率,low resolution)重建,而是推导出光强与每个脉冲之间的关系,从而从买从流中估计像素级的超分辨率光强。
3、实验结果显示所提出的方法可以从二值LR脉冲流中重建出不错的HR光强图像,这是现有方法做不到的。
背景知识
脉冲相机的工作机制
脉冲相机包含了一系列的像素点,每一个像素点独立地记录光照强度。每一个像素包含三个主要的部分:感光器、积分器和比较器。感光器从外部场景捕获入射光,并将光强转换为积分器可以识别的电压。积分器对转化而来的电荷做累加,比较器持续地检测积累的信号。一旦达到阈值 θ \theta θ,脉冲则会被激发,积分器重置,开始新一轮的“积累与发射”循环。
由于每一个像素独立工作,我们可以将我们的讨论限定在一个像素 p = ( r , c ) p=(r,c) p=(r,c)上。 p p p在 t t t时刻的电荷量可以表示为:
A ( t ) = ∫ Ω p ∫ 0 t α ⋅ I ( z , x ) d x d z m o d θ (1) A(t)=\int_{\Omega_p}\int_0^t\alpha\cdot I(z,x)dxdz\mod\theta\tag{1} A(t)=∫Ωp∫0tα⋅I(z,x)dxdzmodθ(1)
这里, Ω p \Omega_p Ωp表示像素 p p p包含的空间区域, I ( z , t ) I(z,t) I(z,t)表示 t t t时刻 z = ( x , y ) z=(x,y) z=(x,y)位置上的光照强度, α \alpha α表示光电转化效率。脉冲可以在任意的时间 t t t被激发,但是相机只能以离散时间二值信号 S ( n ) S(n) S(n)的形式读出脉冲(如图二所示)。具体来说,相机以一个固定的短时间间隙 T T T来检查flag,如果 t t t时刻(其中 ( ( n − 1 ) T < t ≤ n T ) ((n-1)T<t≤nT) ((n−1)T<t≤nT))有flag,则 S ( n ) = 1 S(n)=1 S(n)=1。否则, S ( n ) = 0 S(n)=0 S(n)=0。当光子连续到达时,传感器上的像素会同时独立地进行工作,激发出脉冲来表示特定数量光子的到达。随着时间的推进,相机会产生一些列的二值脉冲 S ∈ { 0 , 1 } H × W × N S\in \{0,1\}^{H\times W\times N } S∈{0,1}H×W×N(如图一(a)所示)。
问题描述
脉冲相机的目的是记录高速运动场景的动态光强变化过程。一旦脉冲阵列被捕捉到,我们旨在恢复出任何时刻的瞬时光强。特别是当考虑到脉冲相机有限的空间分辨率,我们的目标是超分辨高质量的光强图像与细节。我们没有采用简单结合脉冲重建算法和现有图像超分辨率算法的方法,而是直接估计每一个像素对应的超分辨率强度。这是一个病态的逆问题,可以表示为如下的形式。给定脉冲阵列 S ∈ { 0 , 1 } H × W × N S\in\{0,1\}^{H\times W\times N } S∈{0,1}H×W×N,我们的目标是从低分辨率的脉冲阵列中恢复高质量的高分辨率强度图像 I H D ∈ [ 0 , 255 ] c H × c W × c N I^{HD}\in[0,255]^{cH\times cW\times cN } IHD∈[0,255]cH×cW×cN,其中 c c c是放大因子。
方法
如图三所示,由于相机和物体之间的相对运动,传感器同一像素所激发的脉冲不再能描述物体上的相同点,而是记录了不同位置的光强。也就是说每一个脉冲会被映射到场景中的不同位置。通过合理地探索相机和场景之间的相对运动,恢复更高分辨率的场景是可能的。为此,我们开发了一个运动引导的脉冲相机超分辨率(MGSR, motion-guided spike camera super-resolution)框架,以从低分辨率的脉冲流中得到超分辨率图像。
强度脉冲关系
每一个脉冲对应了一定量的光子 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te),其中 p = ( r , c ) p=(r,c) p=(r,c)表示像素的位置, t s t_s ts和 t e t_e te分别表示当前脉冲循环的开始和结束时间。基于公式(1),脉冲 s s s和强度 I I I之间的关系可以表示为:
θ = ∫ Ω p ∫ t s t e α ⋅ I ( z , t ) d t d z (2) \theta=\int_{\Omega_p}\int_{t_s}^{t_e}\alpha\cdot I(z,t)dtdz\tag{2} θ=∫Ωp∫tsteα⋅I(z,t)dtdz(2)
假设我们打算重建 k k k时刻的场景。基于灰度一致性假设,给定任意时刻某一点的光强 I ( z , t ) I(z,t) I(z,t),都可以将其转换为 k k k时刻对应物体点的光强 I ( z + u t → k ( z ) , k ) I(z+u_{t\rightarrow k}(z),k) I(z+ut→k(z),k)。其中 u t → k ( z ) u_{t\rightarrow k}(z) ut→k(z)表示将 t t t时刻上 z z z位置映射到 k k k时刻对应位置的偏移量。因此,我们可以构建场景强度和任意脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)之间的模型:
θ = ∫ Ω p ∫ t s t e α ⋅ I ( z , k ) M s ( z , t ) d t d z (3) \theta=\int_{\Omega_p}\int_{t_s}^{t_e}\alpha\cdot I(z,k)\mathcal{M}_s(z,t)dtdz\tag{3} θ=∫Ωp∫tsteα⋅I(z,k)Ms(z,t)dtdz(3)
这里, Ω \Omega Ω表示相机传感器的感受野, I ( z , k ) I(z,k) I(z,k)表示 k k k时刻 z z z位置的光强, M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)是二值mask,表示强度 I ( z , k ) I(z,k) I(z,k)是否对 t t t时刻的脉冲 s s s有贡献。也就是说,如果 z z z的对应点 z + u k → t ( z ) z+u_{k\rightarrow t}(z) z+uk→t(z)处在像素 p p p包含的空间区域,则 I ( z , k ) I(z,k) I(z,k)对像素有贡献,将 M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)设置为1。否则 M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)被设为0。从而可以得到 M s ( z , t ) \mathcal{M}_s(z,t) Ms(z,t)的表达式:
M s ( z , t ) = { 1 , z + u k → t ( z ) ∈ Ω p 0 , o t h e r w i s e (4) \mathcal{M}_s(z,t)=\begin{cases} 1, \quad z+u_{k\rightarrow t}(z)\in \Omega_{p}\\ 0, \quad otherwise\\ \end{cases}\tag{4} Ms(z,t)={1,z+uk→t(z)∈Ωp0,otherwise(4)
其中 Ω p \Omega_p Ωp表示 p p p覆盖的空间区域。为了简单起见,我们使用 I k I_k Ik来表示 k k k时刻场景的光照强度。考虑到 I k ( z ) I_k(z) Ik(z)在时间上的连续性,公式(3)可以改写成:
θ = ∫ Ω ∫ t s t e α ⋅ I k ( z ) ⋅ M s ( z , t ) d t d z = ∫ Ω α ⋅ I k ( z ) ( ∫ t s t e M s ( z , t ) d t ) d z = ∫ Ω α ⋅ I k ( z ) ⋅ W s ( z ) d z (5) \theta=\int_{\Omega}\int_{t_s}^{t_e}\alpha\cdot I_k(z)\cdot \mathcal{M}_s(z,t)dtdz=\int_{\Omega}\alpha\cdot I_k(z)(\int_{t_s}^{t_e}\mathcal{M}_s(z,t)dt)dz=\int_{\Omega}\alpha\cdot I_k(z)\cdot \mathcal{W}_s(z)dz\tag{5} θ=∫Ω∫tsteα⋅Ik(z)⋅Ms(z,t)dtdz=∫Ωα⋅Ik(z)(∫tsteMs(z,t)dt)dz=∫Ωα⋅Ik(z)⋅Ws(z)dz(5)
其中 W s ( z ) = ∫ t s t e M s ( z , t ) d t \mathcal{W}_s(z)=\int_{t_s}^{t_e}\mathcal{M}_s(z,t)dt Ws(z)=∫tsteMs(z,t)dt代表 I k ( z ) I_k(z) Ik(z)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的贡献程度。
脉冲相机超像素
基于以上的分析,任意的 I k ( z ) I_k(z) Ik(z)和脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)之间的关系可以被建模。为了超像素化光强图像,我们可以对重建平面进行重采样,建立如下的关系:
θ = ∑ q α ⋅ I k H R ( q ) ⋅ W s ( q ) (6) \theta=\sum_q\alpha\cdot I_k^{HR}(q)\cdot\mathcal{W}_s(q)\tag{6} θ=q∑α⋅IkHR(q)⋅Ws(q)(6)
这里 q = ( m , n ) q=(m,n) q=(m,n)表示 I k H R I_k^{HR} IkHR的坐标位置, W s ( q ) \mathcal{W}_s(q) Ws(q)表示 I k H R ( q ) I_k^{HR}(q) IkHR(q)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的贡献程度。一旦在 k k k时刻附近有足够的脉冲被积累,我们可以通过最小化下面的损失函数 J ( I K h r ) J(I_K^{hr}) J(IKhr)来超分辨率化 I k H R I_k^{HR} IkHR:
J ( I K H R ) = ∑ s = 1 N ∣ ∣ α ⋅ W s I k H R − θ ∣ ∣ 2 2 (7) J(I_K^{HR})=\sum_{s=1}^N||\alpha\cdot\mathcal{W}_sI_k^{HR}-\theta||_2^2\tag{7} J(IKHR)=s=1∑N∣∣α⋅WsIkHR−θ∣∣22(7)
其中 N N N表示选定时间框内的脉冲数量。 W s ∈ R 1 × M \mathcal{W}_s\in\mathbb{R}^{1\times M} Ws∈R1×M, M = c H × c W M=cH\times cW M=cH×cW表示待重建的高分辨率图像中的像素个数。
为了解决这一问题,我们设计了一种运动辅助的脉冲相机超分辨率(MGSR, motion-guided spike camera super resolution)框架,如图四所示。
首先,一个基础的亮度推测算法被运用在脉冲流 S S S中,生成一系列基础的亮度图像 { I t L R } , t ∈ ϕ k \{I_t^{LR}\},t\in\phi_k {ItLR},t∈ϕk。 ϕ k \phi_k ϕk的一个典型选择是 { k , k ± 1 , k ± 2 , ⋅ ⋅ ⋅ } \{k,k±1,k±2,\cdot\cdot\cdot\} {k,k±1,k±2,⋅⋅⋅}。有了基础的重建,我们可以估计出不同帧的位移量并且将 I k H R I_k^{HR} IkHR上的点映射到其他帧中。然后我们可以进一步计算出每个亮度图像像素 I k H R ( q ) I_k^{HR}(q) IkHR(q)对每个脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的贡献程度(这里 q q q指的是图像上的像素点, p p p指的是传感器上的像素点,可以通过图5或者更加直观的理解),构建出一系列的贡献图 { W s } \{\mathcal{W}_s\} {Ws}。基于贡献图 { W s } \{\mathcal{W}_s\} {Ws},高分辨率图像 I H R I^{HR} IHR可以通过求解公式(7)得到。
光强推测
假设一个短脉冲间隔内的光照强度是稳定的,我们粗略地推测出瞬时光强:
I t L R ( p ) = θ α ⋅ ( t e − t s ) (8) I_t^{LR}(p)=\frac{\theta}{\alpha\cdot(t_e-t_s)}\tag{8} ItLR(p)=α⋅(te−ts)θ(8)
其中, t e < t < t s t_e<t<t_s te<t<ts。值得注意的是,这些基本的重建只是用来估计相对运动。
运动估计
我们使用光流法来进行粗略估计,从而得到关键帧 I k L R I_k^{LR} IkLR到参考帧 I t L R I_t^{LR} ItLR的运动场信息:
u k → t = F ( I k L R , I t L R ) (9) u_{k\rightarrow t}=\mathcal{F}(I_k^{LR},I_t^{LR})\tag{9} uk→t=F(IkLR,ItLR)(9)
其中 F ( ⋅ ) \mathcal{F}(\cdot) F(⋅)表示光流法。 u k → t = ( u k → t h , u k → t v ) u_{k\rightarrow t}=(u_{k\rightarrow t}^h,u_{k\rightarrow t}^v) uk→t=(uk→th,uk→tv)表示 I k L R I_k^{LR} IkLR到 I t L R I_t^{LR} ItLR的运动场信息,可以将 I k L R I_k^{LR} IkLR映射到 I t L R I_t^{LR} ItLR。
权重计算
给定运动场信息 u k → t u_{k\rightarrow t} uk→t,给定任意点 z z z,我们都可以轻松地根据公式(4)推断出是否 I k H R ( z ) I_k^{HR}(z) IkHR(z)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)有贡献。然后可以计算出每个图像像素 I k H R ( q ) I_k^{HR}(q) IkHR(q)对脉冲 s : ( p , t s , t e ) s:(p,t_s,t_e) s:(p,ts,te)的权重(贡献程度):
W s ( q ) = ∫ z ∈ Ω q ∫ t s t e M s ( z , t ) d t d z (10) \mathcal{W}_s(q)=\int_{z\in \Omega_q}\int_{t_s}^{t_e}\mathcal{M}_s(z,t)dtdz\tag{10} Ws(q)=∫z∈Ωq∫tsteMs(z,t)dtdz(10)
其中 Ω q \Omega_q Ωq表示像素 q q q在 I k H R I_k^{HR} IkHR中覆盖的范围。由于相机和场景的相对运动,一个脉冲通常通常和和 I k H R I_k^{HR} IkHR中的多个像素有关。相关像素的数量也会随着运动速度和脉冲生命周期 t e − t s t_e-t_s te−ts的增加而增加。图5展示了权重的计算,图6真实了不同相对运动对应的权重图。
超像素成像
一旦足够的脉冲被积累,我们可以通过解公式(7)来得到 c H × c W cH\times cW cH×cW的超像素图像。在本文中,我们使用了梯度下降法来求解这个问题,可以被表示为:
I k H R : = I K H R − γ ⋅ ∇ I k H R J ( I k H R ; W s ) (11) I_k^{HR}:=I_K^{HR}-\gamma\cdot\nabla_{I_k^{HR}}J(I_k^{HR};\mathcal{W}_s)\tag{11} IkHR:=IKHR−γ⋅∇IkHRJ(IkHR;Ws)(11)
其中 γ \gamma γ是更新梯度。特别地,我们也可以使用这个算法作为一个一般的重建算法,此时我们可以将 c c c设置为1,以重建与脉冲流相同空间分辨率的图像。在算法1中总结了所提出的MGSR方法。
实验结果