ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Conic

Multiple View Geometry in Computer Vision Second Edition2章から。
Conicとは面の中で2次式で記述できる曲線を表す。ユークリッド空間では、hyperbola, ellipse, parabola の3種類に分類できる。

Googleで画像検索するのがわかりやすい。
http://www.google.co.jp/search?q=Conic&hl=ja&tbo=d&source=lnms&tbm=isch&sa=X&ei=UN-9UL22C4qWmQXe0YCYDw&ved=0CAcQ_AUoAA&biw=1536&bih=725

Conicの表現方法

非同次座標系の場合
 ax^{2}+ bxy+ cy^{2}+ dx+ ey+ f=0
同次座標系の場合、xをx1/x3、yをx2/x3におきかえる
 ax_{1}^{2}+ bx_{1}x_{2}+ cx_{2}^{2}+dx_{1}x_{3}+ex_{2}x_{3}+fx_{3}^{2}=0


行列表現
 x^{T}Cx=0
 C=\begin{pmatrix} a & \frac{b}{2} & \frac{d}{2} \\ \frac{b}{2} & c & \frac{e}{2} \\ \frac{d}{2} & \frac{e}{2} & f \end{pmatrix}
係数はa〜fの6つだが、定数倍に対して等価なので自由度は5である。

既知の5点からCを求める方法。

係数を並べた行列
 c=(abcdef)^{T}
に対して制約条件を
 (x_{i}^{2}x_{i}y_{i}y_{i}^{2}x_{i}y_{i}1)c=0
とすると、関係式はこのように記述できる。
 \begin{pmatrix} x_{1}^{2} & x_{1}y_{1} & y_{1}^{2} & x_{1} & y_{1} & 1 \\ x_{2}^{2} & x_{2}y_{2} & y_{2}^{2} & x_{2} & y_{2} & 1 \\ _{3}^{2} & x_{3}y_{3} & y_{3}^{2} & x_{3} & y_{3} & 1 \\ x_{4}^{2} & x_{4}y_{4} & y_{4}^{2} & x_{4} & y_{4} & 1 \\ x_{5}^{2} & x_{5}y_{5} & y_{5}^{2} & x_{5} & y_{5} & 1 \end{pmatrix} c=0

あとは、Direct Linear Transform アルゴリズムを使って、投影変換の行列Hを計算すると同じようにDLTアルゴリズムでCとa〜fの係数を求めることができる。