実践カメラキャリブレーション〜 カメラを用いた実世界計測の基礎と応用 〜

2019.6.14
延原 章平（京都大学）高橋 康輔（NTT）

カメラキャリブレーションの使われ方

2３次元形状計測

3

自動運転

NVIDIA DRIVE Autonomous Vehicle Platform

BMV

4

AR / MRIKEA Place6

データセット構築

http://domedb.perception.cs.cmu.edu/

7データセット構築“Facebook VR Research: Photorealistic Face Tracked Avatars,” from Youtube

8このチュートリアルのゴール

9もしカメラキャリブレーション検定があるとしたら？
• Lv1：基礎を理解する– 適切なカメラモデルを選択できる– 適切なキャリブレーション手法を選択できる• Lv2：実践する– キャリブレーション結果の妥当性を確認できる– 独自カメラシステムのためのキャリブレーション手順を設計できる• Lv3：応用する– センサフュージョン
• LiDARやToFカメラ，プロジェクタと組みわせることができる– 異なる光学系• 屈折反射光学系のキャリブレーションを組める10

お断り• すべての種類のキャリブレーション手法を網羅することを目的とはしていません．
• OpenCVなどで実装が公開されているものを中心に議論します．
• 数式の説明はあまりしません．教科書をご確認ください．
– Hartley and Zisserman. Multiple view geometry incomputer vision. 2004.
– 金谷他．３次元コンピュータビジョン計算ハンドブック．2016.
– 高橋．コンピュータビジョン－広がる要素技術と応用－，第2章，2018.
11

Lv1：カメラキャリブレーションとは12

カメラキャリブレーションとは
オブジェクト
位置

画像
放射輝度

位置

輝度

カメラモデル

パラメータ 1

パラメータ 2…

パラメータ N

カメラキャリブレーション

画像の生成過程をモデル化し，そのカメラモデルが持つパラメータを推定すること．
13

カメラキャリブレーションの種類

カメラキャリブレーション
幾何学的キャリブレーション

光学的キャリブレーション「どこに」「どういう輝度で」オブジェクト
位置

画像

放射輝度

位置

輝度

カメラモデル
パラメータ 1

パラメータ 2…

パラメータ N14

幾何学的カメラキャリブレーション
幾何学的カメラキャリブレーション
内部キャリブレーション

外部キャリブレーション

位置姿勢に独立なパラメータを推定
e.g. 焦点距離，レンズ歪みなど

位置・姿勢パラメータを推定

カメラモデル
パラメータ 1

パラメータ 2…

パラメータ N15

幾何学的キャリブレーションができると何ができるようになるか？
三次元計測

カメラの自己位置推定

https://grail.cs.washington.edu/rome/

16

Lv1：
幾何学的カメラキャリブレーションの基礎

17

カメラモデル
透視投影カメラモデル

一般的なカメラ

全方位カメラモデル

魚眼カメラ，アクションカムなど

正射影カメラモデル

顕微鏡，望遠鏡など

その他：
弱透視投影カメラモデル
凸レンズカメラモデルなど

18

透視投影カメラモデル
焦点距離 f

仮想画像平面

光学中心＝全ての光が通過する点

xzy

特徴• レンズに依る効果（ぼけ，歪み）が無い．
• 対象物を目で見た時と同じような表現が可能．
⇒ 一般的なカメラの投影に近い．
仮定• Ｚ軸と光軸が一致（Y軸・Z軸の向きが逆の論文・実装もあります）• 原点が光学中心に一致
19

投影過程 0 : 世界座標系

画像座標系

画像座標系での座標値

画像座標系 I

世界座標系での座標値

世界座標系 W

カメラ座標系 C

投影行列：Projection matrix20投影過程 １：世界座標系

カメラ座標系

カメラ座標系での座標値

世界座標系での座標値

カメラ座標系 C

世界座標系 W

(世界座標系3x3の回転行列

カメラ座標系)

3x1の並進ベクトル

外部パラメータ

21

投影過程 2：カメラ座標系

正規化画像座標系

カメラ座標系での座標値の平面正規化画像座標系での座標値

世界座標系 W

正規化画像座標系 N
カメラ座標系 C

22

投影過程 3：正規化画像座標系

画像座標系
画像座標系 Iの平面正規化画像座標系での座標値

世界座標系 W
単位はピクセル

正規化画像座標系 N
カメラ座標系 C
単位は３次元座標系のもの (mm, cmなど)

内部パラメータ(行列)23投影過程 まとめ
画像座標系 I

画像座標系での座標値

世界座標系での座標値

世界座標系 Wの平面正規化画像座標系 N
カメラ座標系 C

幾何学的カメラキャリブレーション

内部キャリブレーション：内部パラメータの推定

外部キャリブレーション：外部パラメータの推定

24レンズ歪み補正25

投影過程 レンズ歪み (＠正規化画像座標系)
歪み有り

画像座標系 Iの平面歪み無し

正規化画像座標系 N
カメラ座標系 C

世界座標系 W

注：OpenCVで利用されている歪みモデル

歪み係数

カメラ固有なので内部パラメータに含まれる半径方向の歪み

円周方向の歪み

26

三角測量
世界座標系
被写体

カメラ1

投影の過程

カメラ2

３次元再構成
世界座標系
カメラ座標系

外部パラメータを利用する

正規化画像座標系
画像座標系

内部パラメータの逆行列をかける

27

外部パラメータ = 位置姿勢？(1/2)

カメラ座標系 C

世界座標系 Wを代入すると• 世界座標系の原点として，世界座標系の各軸方向の単位ベクトルから•成る行列はとなる．

外部パラメータ
はカメラ座標系における世界座標系の位置，は姿勢とみなせる．

外部パラメータ = 位置姿勢？(2/2)

世界座標系 W

カメラ座標系 C

外部パラメータ
は世界座標系におけるカメラ座標系の位置，は姿勢とみなせる．(カメラの位置姿勢)

外部パラメータの注意点• 変換の方向に注意✓ 座標系の変換元，変換先はなにか？
✓ パラメータに変換方向を添字として書いておくと良い．
(例：世界 -> カメラの場合，など．)
カメラ座標系

世界座標系

カメラ座標系

30

復習
1.

幾何学的キャリブレーションによって，以下の式を満たす外部パラメータが得られたとする．カメラの投影中心は世界座標系においてどこにあるか？

答え

1.

１において，カメラの光軸は世界座標系においてどの向きか？

答え

2.

内部パラメータの単位は？

答え

ピクセル31

Lv1：キャリブレーションアルゴリズム

32

キャリブレーションとはキャリブレーション = モデルパラメタ推定

𝐹 = 𝑚𝑎• 𝐹と𝑚が与えられたときに𝑎を推定.
• 線型方程式を解く．
実世界• もし𝐹と𝑚に計測誤差があるなら？
(i.e., 𝐹 = 𝐹෠ + 𝜖, 𝑚 = 𝑚ෝ + 𝜖)
• 複数回の計測から求める．

𝑚𝐹 = 𝑚𝑎
物理モデル(運動方程式)• もし𝐹が直接計測できなかったら？
• 可観測なものを使った方程式を立てる．(e.g. 位置と時刻)
33

登場する概念

3D形状
外部パラメータ
2D-2D対応点

3D-2D対応点

𝑅, 𝑡
画像中心

内部パラメータ34

キャリブレーションの流れ

𝐾, 𝑅, 𝒕の初期値を得る

Zhangの手法
8-point
設計値から概算する
他のセンサーから得る
究極的には初期値に過ぎない．
妥当でありさえすればどんな方法でもよい．

最尤推定となるように最適化する

再投影誤差最小化（後述）
幾何学的に意味がある基準で最適化する．
35

分類
入力＼出力

内部パラメータ

外部パラメータ

Zhang
2D-3D
PnP

2D-2D

8-Point (5-pt, 7-pt)

3D-3D

Absolute Orientation
36

Zhangの手法• 入力

3D plane– 既知の３次元点𝑋𝑊 とその投影先𝑥𝐼

• 出力

(1,0)
(0,0)

– 内部パラメータ 𝐾– 外部パラメータ 𝑅, 𝒕
2D image𝑢𝑣

37

Zhangの手法

38

Zhangの手法

39

Zhangの手法の解釈

カメラ：固定参照物体：移動(1,0,0)
カメラ：移動参照物体：固定(0,0,0)
世界座標系

40

Perspective-𝑛-Point
シーン

カメラN
…

カメラ3

カメラ1

カメラ2

• 入力
– 内部パラメータ– 既知の３次元点の画像中での投影先• 出力– 外部パラメータ

41

PnPとしてのZhangの手法• 入力

3D plane– 既知の３次元点𝑋𝑊 とその投影先𝑥𝐼

• 出力

(1,0)
(0,0)

– 内部パラメータ 𝐾– 外部パラメータ 𝑅, 𝒕
2D image𝑢𝑣

42

8-Point, 5-Point• 入力– 内部パラメータ– ２つのカメラで同じものを写している点（対応点）• 例：球を同期撮影してその中心を検出＝全カメラ間の対応点• 出力– 外部パラメータ𝑿1

𝑿2 = 𝑅𝑿1 + 𝒕
𝒙2𝒙1𝑅, 𝒕

𝐾1𝐾2

43

8-Point, 5-Point

44

Absolute Orientation

45Horn. Closed-form solution of absolute orientation using unit quaternions, JOSA 1987

疑問点
• Zhangの手法ではなぜチェスパターンを使うのだろう？
– 3Dの参照物体だと？ （Tsaiの手法）• Zhangの手法は最低４枚の入力が必要だが，実際は何枚くらい，どんな画像を用意するのだろう？
• 8-pointの場合もチェスパターンを使ったらいいのでは？
• あるいはボールではなく輝点(e.g. LED)でもいいのでは？
46

Lv1：バンドル調整

47

三角測量（再掲） (1/3)
世界座標系
被写体

カメラ1

投影の過程

カメラ2

３次元再構成
世界座標系
カメラ座標系

外部パラメータを利用する

正規化画像座標系
画像座標系

内部パラメータの逆行列をかける

48

三角測量 (2/3)• 対応点から逆投影した２直線は１点で交差しない場合がある．
(⇒ ねじれの位置)– 対応点の検出誤差，キャリブレーション誤差などが原因．
– 視点が増えると厳密に１点で交差することはより難しくなる．
世界座標系

カメラ1カメラ249

三角測量 (3/3)• DLT (Direct Linear Transform)
１視点につき，２本の制約式が得られる

N 視点の制約式をまとめてを解く．

カメラ1

カメラ250再投影誤差• 対応点から逆投影した２直線は１点で交差しない場合がある．
– 対応点の検出誤差，キャリブレーション誤差などが原因．
– 視点が増えると厳密に１点で交差することはより難しくなる．

• DLTなどで三次元点 を得たとして，それをもう一度画像に投影すると，三角測量に用いた元の点からずれる．
再投影誤差

この誤差を再投影誤差と呼ぶ．

カメラ1

カメラ251

バンドル調整 (Bundle Adjustment)• 再投影誤差はキャリブレーションパラメータの推定誤差に起因する．
– 再投影誤差：• 現在のパラメータを初期値とし，再投影誤差の総和を最小にするように非線形最適化を行う．
再投影誤差

この処理をバンドル調整と呼ぶ．
注：最適化するパラメータは状況によって異なる場合もある．
(例：内部パラメータは固定するなど）

カメラ1

カメラ252

ケーススタディ
目的：三次元復元などのために，同期されている複数の固定カメラの幾何学的キャリブレーションを実施したい．
手順

1. 各カメラの内部パラメータの推定• 各カメラの前でチェスボードを動かし，複数回撮影．
2. 外部パラメータの初期値を推定• 基準カメラと同時に撮影したチェスボードを利用して，基準カメラに対する外部パラメータを推定．
3. 外部パラメータを最適化する• すべてのカメラで様々な姿勢のチェスボードを撮影し，検出したコーナー点を利用してバンドル調整．

カメラ3

カメラ2
カメラ1
（基準）

53

Lv2：実践する

54

チェスボード• チェスボードの精度 ≫ キャリブレーションの精度
👎🏻 プリンタで印刷して糊で貼り付ける．日数がたっても使う．

• コーナー点の検出精度 ≫ キャリブレーションの精度– 奇数×偶数のパターンを使う• 奇数×奇数，偶数×偶数は上下の判断がつかないので– 単純なコーナー検出は使わない• Harris detectorでは偏りがある• cv::findCornerSubPix()を使う• いずれにしても必ず目視で確認する

55

キャリブレーション結果の確認方法• 内部パラメータ– 𝑓𝑥 , 𝑓𝑦 は画角から考えて妥当か？
• センサの物理サイズ（画素サイズ𝑠[μm] ）とレンズの焦点距離𝑓[mm]から𝑓𝑥 , 𝑓𝑦 ≈ 1000𝑓/𝑠と概算できる．

– センサが正方画素なら，𝑓𝑥 = 𝑓𝑦 と仮定してBAした場合と，𝑓𝑥 , 𝑓𝑦 を別変数としてBAした場合で結果が一致するか？
• 十分なキャリブレーションデータを入力しているなら一致するはず．

– レンズ歪み補正によって直線が直線になるか？

56

補正前

57

補正後

58

キャリブレーション結果の確認方法• 外部パラメータ– 再投影誤差は十分小さいか？
• サブピクセルが望ましい• 交差検証（e.g. LOOCV）でも同程度に小さいか？

– カメラ配置をプロット• 再投影誤差が小さくても，配置が現実と合わないことはある– 特に偏った対応点を使った場合– 視体積交差法（SfS）をしてみる• あるカメラを使うとvisual hullが不必要に削られる＝そのカメラのパラメータがおかしい
59

高精度・安定な推定のために• 限りなく正確な参照物体を利用する．
– Zhangの手法やPnPでの参照物体は定規の役割– 身近で簡単に手に入る平面な物体は液晶ディスプレイ
• しかしマクロ撮影する場合はコーナー点が不正確に• 観測対象が存在する領域に参照物体を置く– 参照物体の検出点を利用して各パラメータを最適化しているので，参照物体を設置した領域で最も精度が良くなる．
– レンズ歪みを取りたいなら，歪みが大きい場所でコーナー点を検出する
観測対象が存在する領域

60

Lv2：実際の例

61

多視点カメラシステム

An earlier version was used for ICCV2009 demo
62
“On-Site 3D Video Capture System” by S. Nobuhara et al.

素朴なアイデア
全カメラで１つのチェスボードを撮影したら𝑅, 𝒕が得られる？

63
この方法の欠点は？

現実的なアプローチ

球体コーナー点👍 どの方向のカメラからも観測できる＝強い制約→安定な初期推定

👍 レンズ歪みがあっても検出は正しい＝シンプルなBAが可能

👎🏻 球の中心を正しく検出するにはレンズ歪み補正が必要＝鶏と卵

👎🏻 一部のカメラからしか観測できない＝「宙ぶらりん」なカメラが出ない 64
ように配慮が必要

床面を𝑧 = 0平面，単位をmmにしたい

床面上のチェスコーナーを三角測量してabsolute orientation．
→ キャリブレーション精度には無関係

66

テニスのボール軌道を推定する
課題：• 試合前にキャリブレーション機材を持ち込むことが難しい．
• 適切な大きさのキャリブレーションボードを用意することが難しい．
アプローチ：
1. コートを既知の三次元モデルとみなしてPnPを解く．
2. 画像からボールを検出して三角測量．

推定した軌道67

Perspective-𝑛-Point

OpenFace: an open source facial behavior analysis toolkit, WACV 2016

68

Lv3：応用69

鏡の反射を利用したキャリブレーション• 鏡を利用することでカメラの視野を拡張 [*]⇒ カメラの視野外にある物体とのキャリブレーション
視野を共有しないカメラ同士のキャリブレーション[*] K.Takahashi+, A new mirror-based extrinsic camera calibration using an orthogonality
constraint, CVPR2012

70

体の関節点を利用したキャリブレーション• 二次元関節点を多視点映像間における対応点として利用．
– 各点にラベル（右肩，左肘など）がついているので，従来の自然特徴点が対応付きづらいワイドベースラインな映像間でも安定して対応付く．
例：非同期未校正多視点カメラを利用した人体の三次元姿勢推定[**][**] K.Takahashi+, Human Pose as Calibration Pattern: 3D Human Pose Estimation with MultipleUnsynchronized and Uncalibrated Cameras, CVPRW2018

プロジェクタ72

プロジェクタ

Tahara et al., Interference-free epipole-centered structured light pattern for mirror-based multi-view
73
active stereo, 3DV 2015

屈折層を含む光学系のキャリブレーション

Agrawal et al., A Theory of Multi-Layer Flat
Refractive Geometry, CVPR 2012

Nishimura et al., A Linear Generalized Camera Calibration
From Three Intersecting Reference Planes, ICCV 2015

• 透視投影カメラと被写体の間に屈折層がある場合でも，画素と光線の対応をキャリブレーションすることが可能• 複数台のカメラ・プロジェクタもOK–Kawahara et al., Dynamic 3D capture of swimming fish by underwater active stereo, Methods inOceanography 201674

深度カメラ / ToF / LiDAR
一般論
２次元特徴点

３次元特徴点どちらの精度を信用するか？

空間解像度が高い場合（画素間隔が密）得られる深度が推論に過ぎない場合••••

Oneshotアクティブステレオ
パターン光によるステレオ
ToF
LiDAR

得られる深度の信頼性が高い場合
AND信頼できる３Ｄ特徴点が利用できる
場合

解像度〇，深度△
解像度〇，深度〇
解像度△～〇，深度〇
解像度△，深度〇75

格子点を用いたカメラ-LiDAR外部キャリブレーション

Wang et al., Reflectance Intensity Assisted Automatic and Accurate Extrinsic Calibration of 3D LiDARand Panoramic Camera Using a Printed Chessboard, Remote Sensing, 2017

• LiDARから得られる深度ではなく輝度（反射強度）画像を用いたキャリブレーション
76• 疎な反射強度画像から格子点位置を推定

球体を用いた異種深度センサの外部キャリブレーション

Ruan and Huber, Extrinsic Calibration of 3D Sensors Using a Spherical Target, 3DV 2014

• 深度マップ中で球面をフィッティング→中心が対応点– 大きな球体であれば，深度の精度が不十分でも頑健に推定できる– 実際は𝑅, 𝒕に加えてフィッティング自体もBAの対象にする• 画像としての空間解像度が低くても適用できる– 異なる種類・特性の深度センサでもキャリブレーションできる77

光学的キャリブレーション• センサのレスポンスが線形＆レンズに口径蝕がない場合
𝑟𝑟′𝑔′ = 𝐴3×3 𝑔 + 𝒃3×1𝑏𝑏′を構成する24パラメータを推定する．
Debevec and Malik. Recovering HighDynamic Range Radiance Maps from
Photographs. SIGGRAPH 1997
モデルあり or なし（LUT）

http://xritephoto.com/

積分球，フィルタ，natural image
statistics

78

光学的キャリブレーション

79

光学的キャリブレーション
観測値

内側：補正後外側：理想値80光学的キャリブレーション
補正前

補正後

81

まとめ

https://github.com/nbhr/pycalib• 幾何学的に意味のある最適化をする– 「Multiple View Geometry」のGold Standardアルゴリズム• 要求する精度・有効範囲を明確にする– 少なくともそれより２桁以上高い精度で参照物体を用意する– キャリブレーションに用いた点（チェスコーナーがあった場所）で精度は最も高くなる• キャリブレーション時に参照されなかった空間では精度の保証が無い• 機械学習での訓練データとテストデータの関係と同じ• 機械学習を使うとしたら？
– 内部・外部パラメータの推論？
– 対応点・特徴点の検出？
– ３次元形状の推論？

82

著名なライブラリ• Perspective– OpenCV– Matlab Calibration Toolbox• Fisheye– OpenCV– OCamCalib• Projector-Camera– ProCamCalib• ToF(Kinect v2)-Projector– RoomAliveToolkit
83