私はopencvを使用して2つの画像間のアフィン変換を推定しています(これをAとBと呼び、AからBまで推定したい)。可能な限り最良の推定を行うには、RANSACを実装する必要があります。これまでのところ、RANSACのフレームワーク(両方の画像とそれらの間の一致のキーポイントがすでにあることを考慮して):
1:ランダムに一致するものを3つ選択し、AとBの一致点を関数getAffineTransformへの入力として使用します。
2:関数warpAffineを使用してAからのポイントをワープし、結果をBのポイントと比較して、外れ値の割合を取得します。
3:サンプルのサイズが3ポイント(getAffineTransformは変換を見つけるために3ポイントが必要)であり、外れ値eの割合があることを考慮すると、RANSACを実行する必要がある回数を見つけることができます。 N回である良い推定;
4:最小の外れ値率で変換を維持しながらステップ1と2をN回再実行します。
基本的な考え方は問題ないようですが、実行、特にステップ2で問題が発生しています。問題は、外れ値の数をテストする方法がわからないことです。ワープアフィンを使用してAからBのポイントをマッピングすることを考えましたが、関数がポイントのマット(Mx2マットであり、Mはポイントの数であり、マップしたいポイントのセットではなく、画像としてポイントの座標xとyを列に並べます。これどうやってするの?
私はc++でopencv2.4.2を使用しています。