« OpenCVで画像処理-1:WEBカメラ | トップページ | perlとjavascriptとxamlと »

2010年7月15日 (木)

OpenCVで画像処理−2:外部パラメータの表示、や推定

メモメモメモメモ・・・行列の計算はコンピに任せます。
今回はCPUの処理速度というより人間が使いやすいかどうかになるかもしれません。

3次元の任意の軸の周りの回転行列は、回転軸vとして、
Vect1 

となります(導出は省略)が、水平回転と仰角回転があれば十分なので、
こちら向きの右手座標系で
Vect2

でいろいろ回転できます。平行移動も行列計算でやってしまいたいので、
Cocolog_oekaki_2010_07_15_17_58

にして4x4行列を用意すると、平行移動と定数倍は
Vect3_2

回転どもも拡張して
Vect4

としておけば、例えば

①適当な位置に設置されたカメラで見る,ある点(x,y,z)はカメラの座標系から見てどうなるか?(画面上のどこに来るか)
@基準の座標系でのカメラのx,y,zを cx,cy,czとしておきます。
<手順>
ある点(x,y,z)に対して以下の操作をするる
1)カメラ座標が原点になるように平行移動
2)カメラの水平角、仰角の分回しもどして、カメラ座標系に合わせる。
3)スクリーンに投影する。(拡大・縮小)

まず(1)と(2)(↓)
Cocolog_oekaki_2010_07_15_19_03

でAがわかるので、(1)〜(3)をして
Cocolog_oekaki_2010_07_15_19_05
が画面上の点。
 
 

②外部パラメータが知りたい(基準の座標系のx, y, z をカメラから推定)
(ただし既知のパラメータが1つは必要)
さっきの逆を辿ればOKです。
画面上の座標(x,y)に対して以下の操作をするる
1)スクリーンに投影する。(L = zoom距離 を zとして3次元化)
1')実際の長さに延長
2)カメラの水平角、仰角の分回して、基準の座標系に合わせる。
4)カメラ座標を足して原点も合わせる。(平行移動)
Aは平行移動をまたがない限りはいつ掛けても一緒なので、まず
(1)と(2)(↓)

Cocolog_oekaki_2010_07_15_18_38
(対象物の...が既知のパラメータ)
でAを出してから、(1)→(2)→(1')→(3)の順にして、

Cocolog_oekaki_2010_07_15_18_44

を求める感じでしょうか。

« OpenCVで画像処理-1:WEBカメラ | トップページ | perlとjavascriptとxamlと »

VC++(2008 Express Edition)」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1332452/35760146

この記事へのトラックバック一覧です: OpenCVで画像処理−2:外部パラメータの表示、や推定:

» 悲しきヒーロー。゜゜(´□`鐔�)°゜。 [女の子GOGO!!のブログ]
ぴぐもんです。大変なことになってました。ボクのアイドルが!ボクのヒーローが!(鐓�Д鐓� [続きを読む]

» 悲しきヒーロー。゜゜(´□`鐔�)°゜。 [女の子GOGO!!のblog]
ぴぐもんです。大変なことになってました。ボクのアイドルが!ボクのヒーローが!(鐓�Д鐓� [続きを読む]

« OpenCVで画像処理-1:WEBカメラ | トップページ | perlとjavascriptとxamlと »