10

OpenCV 関数findhomography()は、2 つの画像の一致点間のホモグラフィック変換を見つけます。(定義を参照)

ポイントの一致するサブセットを見つけるために、RANSAC を使用できます。

ここに問題があります: RANSAC を使用する OpenCV の他の関数 (例: (定義findfundamentalMatを参照)) とは対照的に、信頼のための RANSAC パラメータは変更できません。引数として渡すことができるのは、再投影のしきい値のみです。

私は OpenCV ソースを調べましたがfindhomography()、信頼性のために 0.995 にハードコードされています。

私の目的のために、これを増やす必要があります。OpenCV ソース自体の値を変更せずにこれを行う方法はありますか?

これをハードコーディングする必要がある理由はありますか?

PS:次のサブバージョンのチケット 1557 の下に変更要求を追加しました。

4

2 に答える 2

5

そうですね、OpenCVでハーコードされた変数や関数を変更する必要があるのはあなたが最初ではありません。実際、私たちは、携帯電話でより速く、より効率的にするために、多くのOpenCV機能を変更しています。RANSACを変更する場合は、別の名前でクラスのコピーを作成するだけです。

class  CvModelEstimator2
{

}

コード内で、必要に応じて自分で変更します。RANSACの最大反復回数を変更することもできます。デフォルトは非常に高く、アプリケーションが非常に遅くなります。

于 2012-04-24T07:12:45.293 に答える
4

ハードコーディングする理由は、大多数のユーザーにとって、これが非常に良い選択だからです。

多分あなたはもっと何かの必要性を感じた最初の人でした. しかし、これが OpenCV がオープンである理由です。コードを取得し、変更し、パッチを作成して、OpenCV 開発チームに提案します。

そして、これがあなたが必要としているものであると確信していますか?通常、再投影のしきい値を厳しくするとうまくいきます。問題がある場合は、別の場所にある可能性があります - ポイントの選択が不適切である、ポイント マッチングでの適合エラーが大きすぎるなどです。

于 2012-01-22T18:31:11.823 に答える