5

現在、関心点検出器の評価ツールを完成させています。最後のステップで、紛らわしいエラーを見つけました。

Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )

およびは、一致したキーポイントの対応するポイントを格納しますsrcPoints。これまでのところ特別なことは何もありません-それはチュートリアルのようです。dstPointsvector<Points2f>

しかし、RANSACを使用しvector<Points2f>、範囲が[0、...、4]の場合、カウンターが4以上である必要があるよりもアサーションエラーが発生します。

質問1:アルゴリズムは、現在のモデルに属するものかどうかを記述し、コンセンサスを作成するために、少なくとも4つのポイントを必要としますか?

質問2:これに関するドキュメントはありますか?(私はドキュメントチュートリアルを見ました。)

私はすでにこの質問を見たことがあることに注意してください。しかし、RANSACの振る舞いについて満足のいく答えはありません。それとも、ホモグラフィを見つけるためにこの方法には少なくとも4つのポイントが必要であることを受け入れる必要がありますか?

ご協力いただきありがとうございます。

4

2 に答える 2

10

ホモグラフィは、4ペア未満のポイントでは計算できません。これは、ポイントが3つしかないため、視点があいまいになるためです。三角形を描く

a


b        c

画像1では、画像2では、ポイントが次のように変換されています。

a


b    c

bとcの間の距離が半分になりました。残念ながら、それがポイントcがあなたに近づいたのか、あなたから遠ざかったのかはわかりません。4点目で違いが明らかになります。

a        d


b        c

これが画像1の正方形です

     d


a        


b    c    

ここでdとcはあなたに向かって回転しました

a     

     d
b    c   

そしてここで彼らはあなたから離れて回転しました。

openCVのドキュメントにはこの要件はありませんが、ホモグラフィ計算に関するリソースを見つけた場合は、この要件を見つける前にそれほど読む必要はなく、4ポイントのより厳密な証明で十分です。

于 2013-01-21T00:38:28.863 に答える
4

RANSACは、より大きなセットまたは対応(つまり、の場合srcPoints.size() >= 4)で一致するポイントの4つのペアを選択するために使用されます。そのため、。の場合にエラーが発生しますsrcPoints.size() <=4

ホモグラフィ行列には8自由​​度があるという理由だけで、少なくとも4つの対応Hが必要です。したがって、解を見つけるには8つの線形方程式が必要です。ポイントの各ペアは(x座標とy座標を使用して)2つの線形方程式を生成するため、合計で少なくとも4つの対応が必要になります。

于 2013-01-21T08:56:01.830 に答える