イベントカメラによる輝度復元のまとめ

始めに

こんにちは.@j_ngt_です. 今回は一つの論文の紹介というよりもテーマ別サーベイのような感じでいきたいと思います. テーマはイベントカメラによる輝度復元です.

間違っていたら優しく教えて頂けると幸いです.

イベントカメラ

まず,イベントカメラについて簡単に説明します.

イベントカメラは一定の時間間隔で画像を得るのではなく,輝度に閾値以上の変化があった場合のみ, その時のタイムスタンプ,画素の座標,極性(明暗のどちらに変化したかを示すバイナリ値)を出力します.

特徴は,

  1. タイムスタンプがμs単位であり,非常に高速に動く

  2. 130dBくらいのハイダイナミックレンジで高コントラストな環境でもデータを得られる

  3. 無駄なデータが少ない

  4. 低消費電力

のようなことが挙げられます.

最近では輝度画像を同時に得ることができるイベントカメラが主流ですが, 照明条件が悪い,もしくは高速な運動を伴う時などで輝度が得られないときに,イベントデータから輝度画像を得ることが必要になります.

イベントデータからの輝度復元のアプローチの基本

イベントデータは主に輝度の時間変化分,つまり, \Delta Iを表します. そこから輝度を復元するとき, \nabla I \cdot v = -\Delta Iの関係式を用いて輝度勾配を求めることが多いです. しかし,移動ベクトル vは与えられていないので左辺はどちらも未知で不良設定問題となります. そこがイベントデータの難しいところです. (通常のカメラでは Iが与えられることで, \nabla I \Delta Iが既知になる)

そこに,運動に対して制限を与えたり,正則化が加えられたり,よりイベントデータに適したコスト関数を考えたりします.

イベントを溜め込んで一枚の画像のように \Delta Iを作るのではなく,preciseなタイムスタンプをもつひとつひとつのイベントを輝度変化として利用することもできます.

ではざっと紹介します.

Interacting maps for fast visual interpretation [Cook 2011]

リンク

この論文は下図のように,輝度Iと輝度勾配G,輝度勾配Gと輝度変化V(イベント)とオプティカルフローF,オプティカルフローFとカメラパラメータCとカメラの回転運動Rといったように,それぞれのmapの関係を定義し,勾配法やらで最適化する.

入力はイベントとして与えられた輝度の時間変化Vの情報のみであり,そこから F \cdot G = -Vの関係で勾配とオプティカルフローを求めるのは拘束が弱すぎる.

他の拘束として今回はオプティカルフローFをカメラの回転運動Rのみによって発生するとした. また,輝度勾配Gは輝度Iから計算する.

f:id:j_ngt:20190312181901p:plain
ネットワークアーキテクチャ
f:id:j_ngt:20190312182318p:plain
結果(V:入力イベント,I:輝度,G:輝度勾配,F:オプティカルフロー)

Simultaneous Mosaicing and Tracking with an Event Camera [Kim 2014]

リンク

BMVC2014でBest Industry Paperを取っている.

イベントのみの入力からparticle filterを用いたカメラの回転運動のトラッキングとEKFを用いた輝度復元を同時に行う手法.

f:id:j_ngt:20190313120109p:plain
イベントカメラ

カメラの回転運動のトラッキング

 \begin{equation}
\begin{array}{l}{z=\log \left(\mathrm{M}\left(\mathbf{p}_{m}^{(t)}\right)\right)-\log \left(\mathrm{M}\left(\mathbf{p}_{m}^{\left(t-\tau_{c}\right)}\right)\right)} \\ {\text { where } \mathbf{p}_{m}^{(t)}=\pi\left(\mathrm{R}_{i}^{(t)} \mathrm{K}^{-1} \dot{\mathbf{p}}_{c}\right)}\end{array}
\end{equation}

 \mathbf{p}_{c}^{(t)}はカメラの座標,  \mathrm{K}はカメラの内部パラメータ, \piは投影. \mathrm{M}はmozaic. カメラの回転運動Rが求まると,カメラの内部パラメータからmozaic上の位置が求まり,その輝度が求まる. そのピクセルでの一つ前のイベントは \tau_{c}前の t-\tau_{c}で,現在 tとその時 t-\tau_{c}の輝度との差分がイベントの閾値 Cとなるようにする.

勾配の推定

勾配を \mathbf{g},移動ベクトルを \mathbf{v} Cをイベントの発生の閾値とするとイベント一つの発生モデルは以下の式で表される.

 \begin{equation}
\left(\mathbf{g} \cdot \mathbf{v}\right) \tau_{c}=\pm C
\end{equation}

 \mathbf{v}はカメラの回転運動のトラッキングができていれば,そこから以下の式で計算が可能.

 \begin{equation}
\mathbf{v}=\left( \begin{array}{c}{v_{x}} \\ {v_{y}}\end{array}\right)=\cfrac{\mathbf{p}_{m}^{(t)}-\mathbf{p}_{m}^{\left(t-\tau_{c}\right)}}{\tau_{c}}
\end{equation}

f:id:j_ngt:20190313175403p:plain:w300
モデル

観測 zとモデル hは以下の式,event rateで表される.

 \begin{equation}
z=\cfrac{1}{\tau_{c}}
\end{equation}

 \begin{equation}
h=\cfrac{\mathbf{g} \cdot \mathbf{v}}{C}
\end{equation}

結果の画像です.

f:id:j_ngt:20190314142346p:plain
結果

この手法のすごいところは,イベント一つの発生モデルを用いて高精度な輝度復元ができるところと,event-by-eventで,イベントが入ってくる度に処理する形になっているところ. 逆に良くないところは,静止しているシーンに対してカメラの回転運動のみを仮定している点.

Simultaneous Optical Flow and Intensity Estimation from an Event Camera [Bardow 2016]

リンク

CVPR2016の論文.

イベントデータのみからオプティカルフローと輝度復元を同時に行う手法.

K=128のセルを持つタイムウィンドウを設けてそのセルの前後の輝度とオプティカルフローを推定する.

f:id:j_ngt:20190312191311p:plain:w500
タイムウィンドウ

イベントと輝度の整合性を評価するデータ項,オプティカルフローの拘束式,時空間の滑らかさの正則化項を合わせたコスト関数を主双対法を用いて最適化する.

f:id:j_ngt:20190313182437p:plain:w400

カメラの動きの制限がないのが大きな利点. 欠点としては,結局何枚もの画像とオプティカルフローを保持していないといけないということ,滑らかさの正則化だけなのでのっぺりとした印象がある.

f:id:j_ngt:20190313101824p:plain
結果

Real-Time Intensity-Image Reconstruction for Event Cameras Using Manifold Regularisation [Reinbacher 2016]

リンク

BMVC2016の論文.

前のイベントからの経過時間で定義したEvent Manifold上での正則化を用いた最適化を行なっている.

f:id:j_ngt:20190314180849p:plain:w300

 \begin{equation}
c_{1}=\exp \left(\Delta^{+}\right)
\end{equation} \Delta^{+}はイベント発生の閾値 uは輝度画像, fはノイズが乗った観測.

輝度の初期値 u^{0}が既知で,ノイズがなかったら,ただイベントによる輝度変化分を足していけば良いが, u^{0}は未知でノイズがあるのでそうはいかない(これは「差分を取っているだけなら足していけばいいだけなんじゃないの」と良く言われる..).

なので,以下のようにデータ項Dに何かしらの正則化Rをつけて最適化する.  \begin{equation}
u^{n}=\underset{u \in C^{1}\left(\Omega, \mathbb{R}_{+}\right)}{\operatorname{argmin}}\left[E(u)=D\left(u, f^{n}\right)+R(u)\right]
\end{equation}

Event Manifoldの定義

画像ドメイン \Omegaからsurface  \begin{equation}
S \subset \mathbb{R}^{3}
\end{equation} へのmapping  \begin{equation}
\varphi : \Omega \rightarrow S
\end{equation} を定義する.

 \begin{equation}
X=\varphi(x, y)=\left[ x,  y, t(x, y)\right]^{T}
\end{equation}

 t(x, y)は単にその画素での前のイベントからの経過時間を表す. また, X S上の点を表す.

このEvent Manifold上の点 Xでの接空間において, \varphiの局所的な微分が定義できて,それを使ってManifold上の滑らかな関数 u微分を計算してノルムを取ることで正則化項にしている.

つまり,のっぺりとしたsurfaceで滑らかさの正則化をかけるよりもイベントに適したmanifold上で滑らかさを定義した方が良いということだろうか.

f:id:j_ngt:20190314190119p:plain
様々なmanifold上でのTVでのデノイジング

結果とEvent Manifoldが下の図.

f:id:j_ngt:20190314172724p:plain
結果とEvent Manifold
manifold regularizationがあるなしでの比較.なしにする場合は t(x, y)をconstにしてあげればいい. この正則化を加えることでよりテクスチャが少ないところでもコントラストが大きくなっている.
f:id:j_ngt:20190314185243p:plain
manifold regularizationの有無での比較

この手法のすごいところは,運動に関して何も推定しないで輝度を復元できているところ. また,その輝度はコントラストがはっきりしているところ.

確かに,Bardowらの正則化は多少無理があるということは議論していたので,この方法はすごいと思った. こんなん提案できたら強いなあ. 主双対法の最適化の更新式やデータ項など細かいところを追えていないので頑張りたい. また,多様体やらの数学の勉強もできたらしたい.. この論文を読もうとしたことは何度もあったが今回で雰囲気が理解できたのでブログのおかげと思いたい. 本当はこの論文だけでちゃんと書いた方がよかった..

Photorealistic Image Reconstruction from Hybrid Intensity and Event based Sensor [Shedligeri 2018]

リンク

BMVC2018の論文.

輝度画像とイベントを組み合わせてよりリアルで高フレームレートのビデオを生成する研究.

標準カメラで撮れるテクスチャリッチな情報と,イベントカメラで撮れる時間方向に密な情報を組み合わせる.

f:id:j_ngt:20190314144323p:plain
アプローチ

イベントの積算画像の複数からpseudo輝度画像をオートエンコーダーで推定しそれらをPoseNetに入力し6dofのポーズを推定. 低フレームレートの2枚の画像からDepthNetで推定したDepthと6dofを合わせることで輝度画像を推定.

まとめ

イベントデータからの輝度復元が何で難しいのかということや基本的なアプローチなど改めて考えることができた. イベントカメラは画像のようなリッチな情報はないけれども,その分高速に重要な情報をとれる. そのスパースなデータに対して,どういう制約,正則化,モデルがいいのかというのを考えがいがあるトピックだなと感じた.

文字打って説明するのが大変で省いてしまったところが多々ある.

こう見るとBMVC多めだなあ.


次回も気が向いたらやります.