2016-05-11 5 views
0

私は画像登録に取り組んでいます。私はOpenCVを使用しています。私は2つの画像I1(基準画像)、I2(現在の画像)を持っています。私はそれらの間のアフィン運動を決定し、次にI1を歪ませることで、それが現在の画像I2とどれくらい整列しているかを見る。この時点で私は3つの画像I1、I1 '(歪んだ)とI2を持っています。2つの画像で対応する点を見つける方法は?

現在の画像I2(これはGUI上での表示用です)に4点を設定する必要があり、初期基準画像I1(動きを適用する前)に対応する4点を見つける必要があります。 GUIはいくつかの機能の違いを強調し、ユーザーがその違いを理解するためにI1とI2を前後に切り替える必要があります。

4点は基本的に画像内の任意の矩形です。例えば、

cv::Point P1, P2, P3, P4; 
P1.x = I2.cols/4; 
P1.y = I2.rows/4; 
P2.x = I2.cols * 3/4; 
P2.y = I2.rows/4; 
P3.x = I2.cols * 3/4; 
P3.y = I2.rows * 3/4; 
P4.x = I2.cols/4; 
P4.y = I2.rows * 3/4; 

基準画像I1上の対応する点P1、P2、P3、P4を見つける必要があります。 OpenCVを使ってどうすればいいですか?それとも他の方法ですか?

+0

I2がI1とどのように関連しているかは、一度も話したことがないので、私たちはあなたの変換についてお手伝いできません。 – IInspectable

+0

I1とI2は、異なる時間に撮影された静的背景(白または黒の背景)に関する同じ情報のモノクロ画像です。 – asa

答えて

0

アフィン行列があり、l1からl2にワープすると書いてあります。

(pseudocode) 

P1_onL1 = M' * [P1.x, P1.y, 1].t() 

.T()手段:

必要なのは、行列Mを取得するためにinvertAffineTransform経由アフィン変換Mを反転 '

をして、この2x3の行列Mを適用する' ポイントにすることです転置行列を列ベクトルで乗算する必要があります。

+0

ありがとう!私はこれを試してみる – asa

関連する問題