7

では、コンピュータの画面を見ているカメラがあると想像してください。私がやろうとしているのは、そのカメラがどれだけ回転しているか、画面からどれだけ離れているか、画面の中心に対してどこにあるかを判断することです。要するに、回転行列と並進行列です。

私はこれを行うためにopencvを使用しており、カメラのキャリブレーションの例に従って、チェッカーボードパターンとWebカメラのフレームでこのタスクを実行しました。一般的な画像、つまりスクリーン キャップとウェブカメラのフレームを使いたいと思います。

特徴検出アルゴリズムを使用して両方の画像からキーポイントのリストを取得し、それらのキーポイントを BFMatcher と照合しようとしましたが、問題が発生しました。具体的には、SIFT はキーポイントを正しく一致させず、SURF はスケーリングされた画像でキーポイントを正しく検出しません。

この問題の簡単な解決策はありますか? これはよくあることだと思いますが、オンラインではあまり議論されていません。

ありがとう!!

4

1 に答える 1

4

自然な平面マーカーを見つけることは、コンピューター ビジョンの一般的なタスクですが、あなたの場合、画面上で視覚化しているものに応じて変化する画面があります。それは、デスクトップ、ブラウザー、映画などです。

そのため、マーカー検出に通常の方法を適用することはできません。形状認識を試す必要があります。アイデアは、最初のエッジ検出を適用して、スクリーン フレームと同じ寸法 (異なる縮尺) の長方形のテンプレートでパーティクル フィルターを試すことです。

パーティクル フィルタは、テンプレートをフレームの領域に合わせます。これを行うと、位置がわかります。向きについては、ホモグラフィを計算する必要があり、これには「マーカー」に 4 つのポイントが必要なので、直接線形変換を適用できます (cv::findHomography() がこれを行います)。したがって、あなたの 4 つのポイントは 4 つのコーナーになることができます。これはただのアイデアです、頑張ってください!

于 2012-06-20T13:19:50.960 に答える