0

同じ位置で開始し、同じサイズで同じ中心を持つ回転した正方形と一致するか、「十分に近く」なるまで、2Dでその中心を中心に1つの正方形を回転させるアルゴリズムを作成しようとしています。これはかなり簡単です。

ただし、正方形の角は一致している必要があります。したがって、一致させるには、回転する正方形の右上隅が、回転した正方形の元々の右上隅に十分に近い必要があります。

これをできるだけ効率的にしようとしているので、上記の基準に基づく2つの正方形の近さが悪化した場合は、反対方向に回転して戻す必要があることがわかります。

正方形を回転させ、それらが互いにどれだけ近いかをテストする方法をすでに作成しました

私の主な問題は、どのくらい近づくかに基づいて、各反復で回転する量をどのように変更する必要があるかです

たとえば、現在の測定値が前の測定値よりも近い場合は、角度を半分にして同じ方向に進みます。それ以外の場合は、角度を2倍にして、反対方向に回転させますか?

しかし、これは効率の点でかなり悪い解決策ではないと思います。

どんなアイデアでも大歓迎です。

4

3 に答える 3

0

...また、ここで他の提案に基づいて構築するには、中心を中心に回転する長方形の場合、単一のコーナーの回転を計算するだけでよいことを覚えておいてください。最初のコーナーを取得するために計算したのと同じオフセットを加算または減算することにより、他の3つのコーナーを推測できます。これにより、計算が少しスピードアップするはずです(これがここでのボトルネックであると仮定します(ただし、考えないでください)。

于 2010-11-21T17:19:07.290 に答える
0

このスキームはどうですか?

0、90、180、270の角度で回転します(これらの特別な回転には、一般的な回転よりも効率的なアルゴリズムがあることに注意してください)。それらのそれぞれを比較して、検索する必要のある象限を見つけます。つまり、一致度が最も高い2つの軸を見つけてください。

次に、たとえば回転した正方形が90-180象限にあると判断した場合に、二分探索を実行し、検索領域を2つの八分円(90-135と135-180)に分割します。90+45/2と180-45/2だけ回転して比較します。90+45/2回転の一致値が180-45/2よりも高い場合は、90-135オクタントで検索を続行します。それ以外の場合は、135-180オクタントで検索を続行します。泡立てて、すすぎ、繰り返します。

再帰のたびに、これを行います。

  1. 検索スペースを2つの象限に分割します(検索スペースがAからBの場合、最初の象限はA + (A + B) / 2で、2番目の象限はですB - (A + B) / 2
  2. 左の象限を確認します。で回転しA + (A + B) / 4ます。比較。
  3. 右の象限を確認してください:で回転しB - (A + B) / 4ます。比較。
  4. 左または右のどちらがより高い一致値を持っているかに基づいて、左の象限または右の象限のいずれかに検索スペースを調整します。
于 2010-11-21T16:54:58.393 に答える
0

私が考えることができるもう1つのスキームは、回転して検索する代わりに、回転した画像の「コーナー」を見つけようとすることです。

画像にOHPフィルムが含まれていない場合はsqrt(width^2+height^2)、中心から離れた場所に4つのポイントがあり、その色は回転していない画像のコーナーとまったく同じです。これにより、検索する必要のある回転数が制限されます。

于 2010-11-21T17:04:45.617 に答える