同次座標

同次座標とは?

今更言うまでもないかもしれませんが、x次元空間にある点というのはx個の成分を持つベクトルで表すことが出来るのでした。
そう、x個で本来必要十分なのですが、同次座標を考えるときには一つ成分を増やして考えます。

例えば二次元平面上の点は一個成分を増やして
 \vec{r}=[x', y', m]^T
とか言う風に書きます。ここでmはどういう意味を持つかというと、このmを変えることでそのベクトルを定数倍することができるのです。

具体的には同次座標において[x, y, 1]というのが非同次座標の$$[x, y]の点と一緒の場所を表しています。
ここで、最後の成分である1をm倍、つまり[x, y, m]としてやると、非同次座標上では[x/m, y/m]を表すことになります。
例えば、[a, b, 1/2]^Tというのは今までの座標(非同次座標)においては[2a 2a]となります。

こんな事をして何のメリットがあるんだとお怒りかもしれませんが、例えばm=0の時を考えましょう。
この時[x/m, y/m]は両成分とも無限大に発散しますので、m=0の点は無限遠点を表している、と言えます。
しかもこれ、ただの無限遠点ではなくちゃんと方向を持っています。
例えば、[a, b, 0]ならば、[a, b]という方向を持つ無限遠点を表しています。

このように同次座標を使うメリットとしては「有向無限遠点」を扱えるということもありますが画像処理において重要なのはこれによってアフィン変換、射影変換と呼ばれる変換ができることです。
これはまたページを分けて書きたいと思います。

あ、ちなみにこの話は二次元だけでなく一般次元について成り立ちます。
例えばN次元空間上の座標はN+1個の同次座標成分によって表すことができます。
これは一番最後の成分に定数倍成分mを持っており、そのmを0とすることで向きを持った無限遠点を表すことができます。

同次座標の同値関係

[x', y', m]において、mを定数\lambda倍すればxy座標はそれぞれ1/\lambda倍になるということが分かりました。
じゃあその1/\lambda倍になったxy成分をさらに\lambda倍してやれば結局表す座標は最初と変わらないということになりますね。
つまり、[x', y', m][\lambda x', \lambda y', \lambda m]は同じ座標を表しているということです。

この「同じ座標を表している」ということは「同値」と呼ばれ、次のような記号で書きます。
 [x', y', m] \sim [\lambda x', \lambda y', \lambda m]
さらに一般的に書くと、任意の同次座標\vec{\xi}について
 \vec{\xi}\sim \lambda\vec{\xi}
が成り立つということです。

javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。
最終更新:2012年11月10日 17:37
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。