- 講師:山崎俊彦
- 参考書:CG-ARTS協会発行「ディジタル画像処理」
- 参考書:R. Szeliski, Computer Vision Algorithms and Applications, Springer (PDF版はインターネット上で無料公開)
In [1]:
import numpy as np
import matplotlib.pyplot as plt
アクティブ法¶
手法 | 説明 | 特徴 |
---|---|---|
time-of-flight法(ToF) | 光を照射して戻るまでの時間から算出。直接は計算できないので、変調をかけて位相差等から計算する。(計算可能な範囲が指定されるのはこの為。) | 高精度だが、時間がかかる。そのため、動物体に弱い。 XBox2(Microsoft)のKinect2というコントローラや自動運転用のLIDARなどで使われている。 |
スリット光照射法 | 線状のレーザー光等を照射し、線の歪みから計算する。(→エポピーラ幾何学 p.312 を参照) | |
Structured light 法 | 細かさの異なる市松模様(チェッカーボードパターン)や、パターンが既知のランダムドット等を照射し、位置ずれから計算 | XBoxのKinectで使われていた。 |
パッシブ法¶
平行ステレオ法¶
- 物体の3次位置:$(X,Y,Z)$
- 2カメラの距離:$b$
- それぞれのカメラで点 $(X,Y,Z)$ が見えている画素位置 $(u,v),(u^{\prime},v^{\prime})$
- イメージセンサのピクセル間隔:$\delta$(縦・横とも)
- カメラの焦点距離:$f$
- 画像面と光軸の交点が画像座標原点
このとき、視差($=u-v$)がわかると、奥行き情報 $Z$ がわかる。なお、視差はブロックマッチング法等で見つける。
照度差ステレオ法¶
最も簡単な反射モデル(均等拡散反射のみ。鏡面反射なし。)で行う。
$$\text{Lambert model: }I_x\left(\text{Brightness}\right)=\rho L\mathbf{n}\cdot\mathbf{S} = \rho L \cos\theta$$- $\rho, \mathbf{S},L$ は予め知ることができる。
- 未知なのは、$\mathbf{n} = \left(n_x,n_y,n_z\right)$ の3変数のみ。($n_z = \sqrt{1-\left(n_x^2+n_y^2\right)}$ とすると2変数)
- 2~3通りの位置から観測すると、$\mathbf{n}$ がわかる。
- 通常は20~100の位置に照明をおき、最小2乗法で解く。
Shape-from-motion(SfM)¶
- 2枚の視点の異なる画像があるとする。
- 3次元中の点 $p$ がそれぞれの画像中で点 $(u.v),(u^{\prime},v^{\prime})$ で見えていたとする。
- 2つの視点間には回転 $\mathbf{R}(3\times3)$ と平行移動 $\mathbf{t}(3\times1)$ から成る行列で次の関係がある。 $$ \left(u^{\prime},v^{\prime},1\right)\begin{pmatrix} f_{11} & & \\ & \ddots & \\&&f_{33} \end{pmatrix}\begin{pmatrix} u\\v\\1 \end{pmatrix} = \mathbf{0} $$
- 逆に $\mathbf{F}$ がわかれば2枚の画像の全てのピクセルで対応がとれているはず。対応点がわかっている点が9点以上あると、最小2乗法で解ける。
- しかし、実は $\mathbf{F}$ は規格化できるので、$8$ パラメータが決まれば残り $1$ つは自動的に決定できる。(自由度 $8$, eight-point algorithmと呼ぶ。)
- 今は five-point algorithm まで進化。
In [ ]: