同次座標系 (Homogeneous Coordinates)

1. 同次座標系 (homogeneous coordinates) とは [概要]

同次座標系 (homogeneous coordinates) は,元のN次元の座標に射影された対応点が存在する,スカラー値を1次元分追加した(N+1)次元の点から構成される座標系である.別名,射影座標 (projective coordinates)とも呼ばれる.同次座標系は,コンピュータビジョンやグラフィックス,または人間やロボットの剛体の運動学の分野などで,透視投影カメラモデルや3次元ユークリッド空間での物体の剛体移動を表現する際などに広く用いられる.

この記事では,各種のテキスト(例:ディジタル画像処理[改訂第二版])では,幾何や数学的な定義のみ定義されて,そのあとの各応用までの話は多くはない (※ 3次元処理のテキストなら応用の話まではあるが).それら応用先のうち,2つの具体例 (2節,3節) を紹介することを通して,同次座標系をもちいる利点(4節)を,大まかにつかんでいただきく構成とした.

1.1 記事の構成

2節は以降の構成である:

  • 2節:[2Dの例] 平面上の2次元同次座標系について (2D-2D間の変換における同次座標の活用例)
  • 3節:[3Dの例] 3次元空間における同次座標系について (3D回転行列・並進行列の活用例)
  • 4節:(2, 3節の例を踏まえて) 同次座標を用いる利点
  • 5節:まとめ.

先に2~3節で具体例を紹介したのち,4節では「同次座標を用いる利点」について再度まとめたい.

この記事では,画像処理(2D)・コンピュータビジョン(3D)での同次座標の具体例について述べていくことを通して,同次座標の「3Dカメラ幾何応用」における大枠をつかんでもらうことを,目的にした記事構成としたい.つまりは,この記事では,定義の話はテキストに任せることとして,応用例の紹介をして「使われどころのイメージ」を持ってもらうことを重視した構成とした.

1.2 同次座標を導入する理由

2,3節の応用例紹介に入る前に,同次座標を導入する理由・利点(4節)を大まかにおさえておきたい.

元のN次元の点同士で行う画像変換や幾何変換は,各種変換ごとに足し算など「多様な演算子」が必要であり,それらの組み合わせが面倒であり,対応する必要が出てくる.それが,元の座標系に対応した,(N+1)次元の同次座標系上では,あらゆる変換が「変換行列と同次座標ベクトルの積」のみで表現できるようになり,演算方法がこの1種類のみに統一されて楽になる.

この点が,同次座標を導入して,同次座標上で幾何計算を代替する主な理由である(4節で再度くわしく)

2. [2Dの例] 同時座標系の2次元平面での活用例

2次元(デカルト)座標系における画像変換では,同次座標系が標準的に使用される.その理由は,画像のアフィン変換のなどの「本来は様々な演算子が必要な各変換」を,全て『行列による左からの積』の1形式に,統一して表現・演算できる点にある(詳細については4節で).

まず,3次元の同次座標 $\tilde{\bm{p}} = (x^{\prime},y^{\prime},w) (w \neq 0)$が,射影関係により2次元直行座標上の$\bm{p} =(x,y)= (x^{\prime}/w,y^{\prime}/w)$に対応すると考える.このとき,$w = 1$と値を$1$に固定してしまえば,同次座標の $\tilde{\bm{p}} = (x^{\prime},y^{\prime},1)$ が,デカルト座標では$\bm{p} = (x,y)$ に対応することになり,非常に考えやすい.従って,コンピュータビジョンや剛体変換においては,$w = 1$の値で同次座標を使用する($w=1$に設定するのは,このあとの『3次元空間の同次座標計算(3節)』においても標準的である).

以下の図1は,3次元同次座標系 $(x^{\prime},y^{\prime},w)$ 上の点を,$w=1$の2次元ユークリッド平面 $x,y$ (青色の平面)の点に射影する場合の点の関係性を図示したものである:

同次座標系 (homogeneous coordinates) の例  (3D to 2D 射影)
図1. 同次座標系 (homogeneous coordinates)の例 (3D to 2D 射影)

図1において,3次元同時座標系の$\tilde{\bm{p}}$ の各成分を,任意のスカラ値$\lambda \neq 0$ で定数倍した,3次元直線上の点を $\lambda \tilde{\bm{p}}$ とする.ここで,$\tilde{\bm{p}}$と$\lambda \tilde{\bm{p}}$ は,射影先の2次元画像平面($w=1$)上だと,双方等とも$\bm{p} = (x,y)$に対応していることから,射影後の座標が不変であることがわかる

※ ちなみに透視投影カメラモデルでは,$w$ の値はレンズの焦点距離 $f$ に相当する

このことから,同次座標は,3次元の同次座標の点に対して,各成分を任意の定数倍した(射影を行った)点を作成しても,元の2次元座標系で対応している点は変化しない射影前後の不変性』を有することがわかる.言い換えると,「直線$O_3 \bm{p}$上の全ての同次座標点 $\tilde{\bm{p}}$(無限遠点まで含む)が,射影された $w=1$ の平面上における同一点 $\bm{p}$ に対応する」とも表現できる.

この射影不変性のおかげで,ある基準点を元にした矩形領域内の全点について,射影前と射影後を全対応させたまま記述することができる.したがって,同次座標系を用いると,アフィン変換や射影変換を行列(の積)を通じて,便利に表現・実行できる.

2次元変換向けの,同次座標における画像処理的なアフィン変換の各種類については,以下の関連記事を参照のこと:

3. [3Dの例] 同時座標系の3次元空間における活用例.

3次元空間上の任意の点 $\bm{p}=(X,Y,Z)$ は,同次座標系では $\tilde{\bm{p}}=(X^{\prime},Y^{\prime},Z^{\prime},w)$ に対応する.2次元空間向けの同次座標表現(2節)と同様に,$(X,Y,Z)$ が $(X^{\prime},Y^{\prime},Z^{\prime},w)$ に対応する.

3.1 アフィン変換の例:回転と並進

3次元空間におけるアフィン変換は,対応する4次元の同次座標系においては$4 \times 4$の行列による積として表現できる.ここでは,コンピュータビジョンの3Dカメラ幾何(カメラキャリブレーション,エピポーラ幾何,3次元再構成など)で使用する,3D回転(rotation)3D並進(translation)(= 平行移動)の2種類について,例として示しておきたい.

3次元空間において,任意の点$\bm{p}=(X,Y,Z)$ を,並進ベクトル $\bm{t}=(t_1,t_2,t_3)$ によって $\bm{p^{\prime}}=(X^{\prime},Y^{\prime},Z^{\prime})$ に平行移動させることを考える.この時,同次座標系上での 点$\tilde{\bm{p}}=(X,Y,Z,1)$ に,行列化した並進ベクトルを掛けると,以下のように平行移動を行列積で実施することができる:

$$\begin{pmatrix}
X^{\prime} \\
Y^{\prime} \\
Z^{\prime} \\
1 \end{pmatrix} = \begin{pmatrix}
1 & 0 & 0 & t_1 \\
0 & 1 & 0 & t_2 \\
0 & 0 & 1 & t_3 \\
0 & 0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
X \\
Y \\
Z \\
1
\end{pmatrix}
$$

この並進により変換された後のベクトル$\tilde{\bm{p}}=(X,Y,Z,1)^{T}$ は,元の3次元空間では点 $\bm{p}=(X+t_1,Y+t_2,Z+t_3)$ に対応する.

次に,並進に回転も加えた,いわゆる「剛体変換(rigid transform)」を,同次座標系で行うことを考える.

これも同様に $4\times4$ 行列を左から掛けることで,剛体変換を実施することができる:

$$
\begin{pmatrix}
X^{\prime} \\
Y^{\prime} \\
Z^{\prime} \\
1
\end{pmatrix} =
\begin{pmatrix}
r_{11} & r_{12} & r_{13} & t_1 \\
r_{21} & r_{22} & r_{23} & t_2 \\
r_{31} & r_{32} & r_{33} & t_3 \\
0 & 0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
X \\
Y \\
Z \\
1
\end{pmatrix} =
\begin{pmatrix}
\bm{R} & \bm{t} \\
\bm{0}^T & 1
\end{pmatrix}
\begin{pmatrix}
X \\
Y \\
Z \\
1
\end{pmatrix}
$$

ここで$\bm{R}$ は$3\times3$の回転行列を示し,$\bm{0}^T$ は要素が3つとも0値である行ベクトルを示す.

3.2 透視投影カメラモデルの例

カメラモデルで使用される,キャリブレーション済みのカメラ行列(内部パラメータと外部パラメータ)による変換を用いた,3D座標から画像座標への投影の変換式も,以下のように同次座標で変換を計算することが通例である.

$$
\begin{pmatrix}
x \\
y \\
1
\end{pmatrix} =
\begin{pmatrix}
f & 0 & 0 \\
0 & f & 0 \\
0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
\bm{R} & \bm{t} \
\end{pmatrix}
\begin{pmatrix}
X \\
Y \\
Z \\
1
\end{pmatrix}
$$

詳しくは以下の「透視投影カメラモデル」についての記事を参照のこと:

4. 同次座標系を用いる利点

これまでの2節・3節では,画像処理やCVでの「同次座標の使用例」を,具体例的に振り返った.それを踏まえて,4節では画像処理・CV界隈で「同次座標を用いる利点」を,簡単にだけまとめてみたい.

4.1 カメラ幾何での透視投影や,カメラや物体の位置・姿勢の変換

透視投影カメラモデルなどの(2D-3D間における)射影幾何では,射影の際に無限遠も対象にする必要があるので,『無限遠点も含めた全ての点』を表現できる必要がある.

ここで射影前後の不変性が成り立つことから(2節),同次座標系を導入して1次元増えた3次元表現に射影を行うと,(元は無限点を含んでいても)全て有限の座標により表現できるという利点が出てくる.例えば図1を再度見てもらうと,直線$O_3 \bm{p}$を$\bm{p}$ の方向に伸ばしていった先の無限遠点も,射影先の2D平面上の「有限点」へと射影可能であるとわかる.

また他の利点として,回転・平行移動・拡大縮小・2D-3D間の投影などの「変換」演算を,各変換を表す行列の合成変換として,1つの行列で一括で表現できる点があげられる.コンピュータビジョンの3Dカメラ幾何では,動画における各フレームでのカメラ姿勢の連続的変化を,同次座標系においてフレーム間の「回転行列と平行移動ベクトル(※ すなわちユークリッド変換)」を,行列1つに合成しておいて,一挙に2つの変換を実施することが可能である(先に全フレーム分の行列を掛け算しておいて,合成変換行列を前準備しておく).

また,カメラ姿勢だけでなく,剛体物体の3D位置・姿勢の剛体変換においても,(一括演算ではなく)毎フレーム剛体変換行列を1度ずつ行列の掛け算で個別に実施できる点も,我々人間としては簡潔かつ明解な仕組みであり,演算をイメージしやすく好ましい利点である.実際,抽象的なアルゴリズム化においても,そのプログラミングによる実装においても,双方において便利な計算表現である.

4.1.1 さまざまなカメラ幾何で応用される同次座標

古くからコンピュータビジョン界隈では,「複数枚画像を用いた,カメラ幾何問題や3D再構成」の各問題において,同次座標系が活用されてきた.著者は博士課程でスポーツにおける人物姿勢推定を研究していたが,そのテーマに関わりのある「モーションキャプチャ」「運動学」「3D CGのボーンアニメーション」などにおいても,人物の各パーツや関節の,『3D位置姿勢の剛体変換(回転・平行移動)』を同次座標上で表現・変換をするのが標準的である.

また「ロボットアーム」や「ロボットの自己位置姿勢推定」や「逆運動学」などにおいても,同次座標における(剛体変換)計算が活躍する. すなわち,画像には投影せず,ずっと3Dユークリッド空間上の値で最初から最後まで計算するような剛体変換系の話題でも,同次座標は行列・ベクトル積のみでずっと計算できて便利であるので,広く活用されてきたと言える .

4.2 数値計算上の利点

数値計算上での利点も考えておきたい.同次座標での剛体変換では,各種変換やそれら変換同士の合成変換が,行列・ベクトル間の積による「線形処理」のみで済み簡潔になる.従って,数値計算処理がどう行われるのか単純でわかりやすくなり(デバッグやfloat・double的な積和の挙動を理解しやすくなり)非常に都合が良い.ただし,回転行列や剛体変換行列は数値積算誤差に敏感な側面があり,時間フレームごとに行列の積を繰り返していく場合に,浮動小数点誤差が積算する側面にも気を配る必要があり,(実装の際には)注意が必要となる.

例えば,グラフィックスなどでは,複数回の回転を経たあとの計算的な誤差の積算を嫌って,回転行列の代わりにクオータニオンが用いられたりする.また,機械力学に話を寄せることも多いロボットやバイオメカニクスなどでは,screw axis などの,捻れ(twist)を基盤とした別の回転系表現を代わりに用いる場合も多い.

一方で,剛体変換を複数回繰り返したり,そのN回分を合成して一括処理する場合とは逆に,与えられた合成変換行列を固有値分解によって「部分変換を行列分解によって推定しやすい」という視点でも,同次座標による行列を用いた変換表現は有利である.

5. 同次座標系のまとめ

同次座標系について,具体的な活用例(2節,3節)の紹介を通じて,その利点(4節)を理解してもらった.同次座標系では,射影幾何的な射影変換や,物体の移動や変形を表現する「剛体変換・アフィン変換」などが,「行列の積による変換」だけで一般化されており,便利に実施できる.

関連記事である,透視投影カメラモデルの記事などで,2節, 3節で紹介した例以外の「同次座標の活用例」を確認して頂くと,更に理解が深まるはずである.

参考書籍

References

外部参照リンク