Help us understand the problem. What is going on with this article?

魚眼カメラで物体検出するなら歪み補正いる?

魚眼カメラで物体検出するなら歪み補正いる?

自動運転車に、魚眼カメラを乗せて物体検出...
ええと、画像がぐにゃりと歪んでるんですけどこれって問題ないんですか?

知らん、ならば論文を読んで答えを見つけよう!
みんなどうやってやってるんだ!

役に立ったら、LGTM,フォローお願いします!

この記事ですること

ピックアップした論文の下記の内容を解説

  • 魚眼カメラとは
  • 魚眼カメラの歪み補正
  • 物体検出をするためには歪み補正をするのか/しないのか

紹介する論文

  • WoodScape: A multi-task, multi-camera fisheye dataset for autonomous driving
  • Monocular 3D Object Detection in Cylindrical Images from Fisheye Cameras
  • おまけ:Real-time Detection, Tracking, and Classification of Moving and Stationary Objects using Multiple Fisheye Images

WoodScape: A multi-task, multi-camera fisheye dataset for autonomous driving

image.png

この論文は、魚眼カメラを用いたデータセットを解説している論文。(データセットは現在未公開)
著者:valeo
論文リンク:WoodScape: A multi-task, multi-camera fisheye dataset for autonomous driving

魚眼カメラとは

非常に広角な視野を持っている。non-linearな投影が行われており、通常カメラの透視投影モデルとは異なっており、放射状の歪みが特徴的になっている。使い道として、監視カメラやAR、自動車業界では駐車時の後方監視や前方の監視に使われている。自動車業界では、非常に有用なセンサであり、広角のカメラによって最低限のセンサ数で自動車の周囲を監視することができる。

image.png

魚眼カメラは広角であるかわりに高い歪みを持っている。通常のピンホールカメラによる歪み補正が適用できないため、魚眼カメラから歪みが補正された画像を作るためには、魚眼カメラの投影モデルを理解しておく必要がある。

魚眼カメラの投影モデル

投影モデルは、r(Θ)で表現される。
r(Θ)は歪みの中心からのピクセル距離で、Θは入射光線とカメラ光軸の間の角度である。
歪み中心は、光軸と画像平面の交差で、r(Θ)の中心でもある。

カメラレンズの球面から平面へのマッピングの手法としては下記がある

  • Stereographic projection
  • Rectilinear
  • Unified Camera Model
  • Enhanced Unified Camera Model
  • fourth-order polynomial

この論文では、魚眼カメラの投影にはΘの4次多項式を使用する。
image.png

各種投影方法の比較
image.png

魚眼カメラの歪み補正結果比較

image.png

手段としては下記がある

  • rectilinear補正:もっとも単純な手法。
    • 180°以上の画角が反映されず画角を無駄にしてしまう
    • 画角の端の小さい領域が大きくマッピングされてしまう
  • piecewise linear補正
    • 画角のロスが起こらないが、各平面間に境界ができてしまう。
    • 魚眼レンズの半球を5面で表現している
  • cylinderical補正
    • 縦方向では直線を確保できるが、水平方向での補正に問題あり

魚眼カメラの歪み補正は各種存在していて一番良いものが決まっていない。
そのため、本論文では、補正前の画像に対してラベル付けを行い、学習モデル側で歪みを吸収することを前提としている。

タグ付け結果例
image.png

Monocular 3D Object Detection in Cylindrical Images from Fisheye Cameras

この論文では魚眼カメラを用いて、3D Bounding Boxで周辺の物体を見つける。
著者:General Mortors
論文リンク:Monocular 3D Object Detection in Cylindrical Images from Fisheye Cameras

魚眼カメラのデータセットがなくとも、ピンホールカメラモデル用のデータセットを魚眼カメラに転用して魚眼カメラを使って物体検出をする。魚眼カメラでは透視投影モデルではなく、等距離射影(equidistance projection)モデルが使われている。

image.png

魚眼カメラ画像の見た目(上記画像a)は、通常のカメラと大きく異なっており、通常のカメラで訓練した2D&3D物体検出モデルは魚眼カメラでは使えない。通常のカメラのように、同じ距離にいる物体の見た目が同じにはならず、魚眼カメラでは光学中心から物体が遠ざかるほど小さくなったり、回転、変形して見えたりする。このような見た目になるため、通常カメラで訓練したモデルは魚眼カメラで使えない。

通常カメラ物体検出モデルの魚眼カメラへの適応するには、
一つ簡単な手段は、魚眼カメラの画像を、透視投影画像のように歪み補正してしまうこと。(上記画像b)
しかしこれでは、左右90度以上の情報が失われてしまう。
さらに、画像の端では少ないピクセル数に対して、大きく歪み補正されてしまうため、画像端の解像度が低くなってしまう。(元の魚眼画像では小さい面積の箇所が大きくマッピングされてしまう)そのため、画像端の物体を検出することは難しくなってしまう。

そのほかの解決法としては、魚眼カメラの画像を複数に分解してマッピングすることだ
image.png

魚眼カメラの画像を分解し、上図右のように一つ一つを透視投影画像に見立てる手法。
しかしこれらは、分割した画像にまたがる物体の検出に問題を及ぼす。

次に上図左のように球形に投影することもできる。
全ての方向の画像をマッピングすることができるが、同じユークリッド距離に存在する物体が歪んで見えてしまう。水平方向に物体が移動していくと大きくゆがんで行ってしまう。

image.png

最後に、上図中央のように、円柱形に投影することもできる

image.png

素の魚眼画像や、球形投影をした画像に比べて、円柱投影の画像は、透視投影画像と似た点が多い。
同じradial distanceを持った円柱形の座標は形状を保ったまま投影されている。元の画像で縦の直線は円柱投影後も直線を保っている。画像中央の水平線は直線になっている。(その他の水平線はゆがんでいるが)

本論文では円柱投影を選択し、透視投影を円柱投影に変換する手法を提案して
従来のKITTIデータセットを魚眼カメラに活用できるように変換する。

(具体的な手法は論文参照)

内容

  • ピンホール⇒円柱形に変換する方法、距離の扱い方
  • 訓練されたモデルを円柱投影した魚眼画像に対して使えるように変換する
  • ファインチューンや、自己教師アリ学習の手法も提案する
  • ### 通常カメラでの訓練 2D矩形、3Dのサイズ、角度、距離(Z)を検出するモデルを訓練する。 detectorとしてはfaster-RCNNを使う。(Resnet-50のような汎用性の高いエンコーダを持つものがバックボーンとしてよい) 距離zを求めるためには、朝刊変換を行い、Zと2D bounding boxの中心を使って、物体の3D位置を推測する。物体のサイズやZ距離などがロス関数に採用される。(細かい話は去れていない)

http://openaccess.thecvf.com/content_cvpr_2018/papers/Xu_Multi-Level_Fusion_Based_CVPR_2018_paper.pdf
↑この論文が手法として引用されている

距離との対応

最近の物体検出アルゴリズムでは、2D検出と同時にZの値を出すものがある。魚眼カメラではピクセルの縦方向は距離と関係はないが、円柱補正したものであれば、距離との関係を作り出すことができる。

3D座標上X,Y,Zにあるものは、円柱形画像では下記のように表現できる

image.png

このことからΔxとΔyの大きさを持つ3D物体は、円柱画像上ではΔuΔvと表現できることが分かる
円柱投影された物体は、距離が大きくなればなるほど小さく投影される。(距離は円柱座標系上のrhoで表現される)

image.png

これを行うためには、円柱補正した画像のアスペクトレーションは上記のように計算する。

これを使うことで、小さな物体や、大きすぎる物体以外には対応できるようになる
物体の向きやyawに関しては、observation angleとφを使うことで対応可能
(ここではカメラ視点からの向きを指している、物体の進行方向ではない)

焦点距離の違いをケアする式
image.png

インファレンス

魚眼カメラを円柱投影に補正した後、上記数式のアスペクトレーショに変換する。マッピングテーブルが用意してあり、これら変換の時間は無視可能だ。

これら円柱投影された画像を、検出器に食わせるが、通常カメラモデルで円柱画像の差は大きくない。そのため2D検出の精度は比較的高い。しかし3Dを予測するとなると、通常画像と円柱画像ではやり方が異なる。

通常画像では下記の数式を使って、3Dのベクトルを計算する

image.png

円柱画像では、上記の6と7を使って3Dベクトルを計算する

学習

image.png

  1. まずはKITTI 3D object training datasetとnuscenesで学習させる
  2. 次に、魚眼カメラのデータを収集し、画像とLIDARをラベルせずに、1を使い自己学習で距離を学ばせた。次に、60枚のラベルした魚眼カメラのデータを訓練しファインチューンした。

1と2の学習結果は下記
image.png

おまけ:Real-time Detection, Tracking, and Classification of Moving and

Stationary Objects using Multiple Fisheye Images
著者:Carnegie Mellon University
論文リンク:Real-time Detection, Tracking, and Classification of Moving and
Stationary Objects using Multiple Fisheye Images

この論文では車両の周辺4か所に配置した魚眼カメラを使って物体を検出する。
一つの魚眼カメラの領域を3つに分割し、近距離の物体をマッピングする。
歪み補正はせずに、対象ROIのみに対してそのまま物体検出をかける

image.png

結論

以上3つの論文をざっくり説明して、下記を解説した

  • 魚眼カメラとは
  • 魚眼カメラの歪み補正
  • 物体検出をするためには歪み補正をするのか/しないのか

魚眼カメラとは
非常に広角な視野を持っていて、通常のカメラの中心射影方式ではないものを指す。魚眼カメラのほとんどは、画面の中心からの距離と角度が比例する等距離射影方式を採用している。
魚眼カメラは広角な視野を移すために、画像をゆがませて広い範囲を描写するため、ほとんどの直線は曲線として映る。

image.png

image.png

魚眼カメラの歪み補正は下記の手法があり、各種法とも長所短所がある

  • rectilinear:通常の透視投影画像と同じように歪み補正をする
  • piecewise:画像を5つに分けて補正する
  • cylindrical:画像を円柱状に投影する
  • spherical:画像を球形に投影する

rectilnear→cylindricalの変換ができるため、cylindricalを採用する論文もあり。
歪み補正法に関しては、これが一番というものがなく、
歪み補正を一切せずにそのまま物体検出を行う論文もある。

魚眼カメラで物体検出をするための方法は主に2つある

  • 歪み補正を行わず、魚眼カメラ専用のデータセットを作成し物体検出をする
  • 既存のピンホールモデルカメラのデータセットを魚眼カメラ用に転用し物体検出をする

まだまだ継続的に勉強は必要だが、
魚眼カメラの世界が奥が深い...

役に立ったら、LGTM,フォローお願いします!

chin_self_driving_car
自動運転が大好き!燃える自動運転エンジニア! 気に入ったらフォロー、Likeしてね★ コメント、ご指摘募集しています:)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした