同次座標系 (Homogeneous Coordinates)

1 同次座標形 (Homogeneous Coordinates) の概要

同次座標系 (homogeneous coordinates) とは「元のN次元の座標に射影された対応点が存在する,スカラー値を1次元分追加した(N+1)次元の点から構成される座標系」である.別名,射影座標 (projective coordinates)とも呼ばれる.

同次座標を導入する理由は,元のN次元の点同士で行う変換だと各種変換ごとに足し算など多様な演算子が必要であり面倒であるのに対応し,同次座標の(N+1)次元座標ではあらゆる変換が「変換行列と同次座標ベクトルの積」のみで表現できるようになり,演算方法がこの1種類のみに統一されて楽だからである.

同次座標は,コンピュータビジョンやグラフィックス,または人間やロボットの剛体の運動学の分野などで,透視投影カメラモデル3次元ユークリッド空間での物体の剛体移動を表現する際に,よく用いられる.

1.1 この記事の構成

この記事では,同次座標自体の一般的な定義や説明は行わない.代わりに画像処理(2D)・コンピュータビジョン(3D)での同次座標の具体例について述べていくことを通して,同次座標の3Dカメラ幾何応用における大枠をつかんでもらう構成としたい.

2節以降の構成を以下に列挙する:

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

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

2 Homogeneous Coordinatesの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$(青色の平面)の点に射影する場合の点の関係性を図示したものである:

図1 同次座標系の例(3D to 2D射影).3次元の同次座標系の点$\tilde{\bm{p}}$を,2次元ユークリッド座標系($w=1$の平面)の点$\bm{p} = (x,y)$に射影する様子を表している.

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

関連記事:画像のアフィン変換 (Affine Transformation)

3 Homogeneous Coordinatesの3次元空間における活用.

3次元空間上の任意の点$\bm{p}=(X,Y,Z)$は,同次座標系だと$\tilde{\bm{p}}=(X^{\prime},Y^{\prime},Z^{\prime},w)$と表される.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つの変換について,同次座標の活用の参考例として示しておきたい.(他の変換については,それぞれの3Dカメラ幾何の記事で述べる予定)

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}
$$

詳しくは以下の「カメラモデル」の記事を参照のこと:

関連記事:カメラモデル (Camera Model ) と 透視投影(Perspective Projection)

4 画像処理・コンピュータビジョン界隈で,Homogeneous Coordinates を用いる利点

2節と3節で,画像処理・コンピュータビジョンにおける同次座標の使用例を振り返ったのを踏まえ,この4節では「画像処理・コンピュータビジョン界隈で,同次座標を用いる利点」を簡単にだけまとめてみたい.

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

まず,同次座標系の一般的な話として,同次座標系では,射影前後の不変性が成り立つ (2節).透視投影カメラモデルなどの(2D-3D間における)射影幾何では,射影の際に無限遠も対象にする必要があるので「無限遠点」も含めた点を全て表現する必要がある.しかし,同次座標系を導入して1次元増やした表現にすると,全て有限座標による座標表現で済ますことができる利点が出てくる.例えば,図1を再度見てもらうと,直線$O_3 \bm{p}$を$\bm{p}$に伸ばしていった無限遠点も,射影先の2D平面上の「有限点」に射影可能であることがわかると思う.

また他の利点として,回転(rotation)・平行移動(translation)・拡大縮小(scaling)・2D-3D間の投影(projection) などによる「変換」演算を,各変換を表す行列の合成変換として,1つの行列で一括で表現できる点が挙げられる.更に,コンピュータビジョンの3Dカメラ幾何では,動画における各フレームでのカメラ姿勢の連続的変化を,同次座標系においてフレーム間の「回転行列と並進ベクトル(すなわちユークリッド変換)」を一気に実施する行列1つの変換だけで実施することも可能である(先に全フレーム分の行列を掛け算しておいて,合成変換行列を前準備しておくという意味).また,カメラ姿勢でなく,剛体物体の3D位置・姿勢の剛体変換においてもそうであるが,(一括演算ではなく)毎フレームの剛体変換行列を1度ずつ行列の掛け算で個別に実施できる点も,我々人間としては簡潔かつ明解な仕組みであり,演算をイメージしやすく嬉しい点である.実際,抽象的なアルゴリズム化においても,そのプログラミングによる実装においても,双方において便利な計算表現である.

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

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

4.2 数値計算上の利点

数値計算上での利点も考えておきたい.同次座標での剛体変換では,各種変換やそれら変換同士の合成変換が,行列・ベクトル間の積による「線形処理」のみで済み簡潔になる.従って,数値計算処理がどう行われるのか単純でわかりやすくなり(デバッグやfloat・double的な積和の挙動を理解しやすくなり)非常に都合が良い.ただし,回転行列や剛体変換行列は数値積算誤差に敏感な側面があり,時間フレームごとに行列の積を繰り返していく場合に,浮動小数点誤差が積算する側面にも気を配る必要があり,(実装の際には)注意が必要となる.実際,グラフィックスなどでは計算的な誤差の積算を嫌って,回転行列の代わりにクオータニオンが用いられたりする.また,機械力学に話を寄せることも多いロボットやバイオメカニクスなどでは,捻れ(twist)を基盤とした別の回転系表現(screw axisなど)を代わりに用いる場合も多い.

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

5 まとめ

同次座標を.射影幾何的な射影変換や,物体の移動や変形を表現する「剛体変換・アフィン変換」などを,行列の積で便利に実施できる座標系である.

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

References

外部参照リンク

関連記事