10

問題: 2 つの重なり合う 2D 形状 A と B があり、それぞれの形状のピクセル数は同じですが、形状が異なります。形状の一部が重なり合っており、重なり合っていない部分がいくつかあります。私の目標は、形状 A のすべての重複しないピクセルを形状 B の重複しないピクセルに移動することです。各形状のピクセル数は同じなので、1 対 1 のマッピングを見つけることができるはずです。ピクセル。制限は、移動したすべてのピクセルが移動した合計距離を最小にするマッピングを見つけたいということです。

ブルート フォース:この問題を解決するためのブルート フォース アプローチは明らかに問題外です。なぜなら、n 個あると思われるすべての可能なマッピングの合計距離を計算する必要があるからです。(ここで、n は 1 つのシェイプ内の重複しないピクセルの数です) を、マッピング内のポイントの各ペアの距離を計算する計算 n 倍すると、合計 O( n * n! ) または同様の値が得られます。

バックトラッキング:私が考えることができる唯一の「より良い」解決策は、バックトラッキングを使用することでした。これにより、これまでの現在の最小値を追跡し、特定のマッピングを評価している任意の時点で、その最小値に達するか超えた場合、私は次のマッピングに進みます。これでも O( n! ) よりもうまくいきません。

合理的な複雑さでこの問題を解決する方法はありますか?

また、ポイントを最も近くにある隣接ポイントに単純にマッピングするという「明白な」アプローチでは、常に最適なソリューションが得られるとは限らないことにも注意してください。

より単純なアプローチ?:二次的な質問として、実行可能な解決策が存在しない場合、重複しない各セクションを小さな領域に分割し、これらの領域をマッピングして、マッピングの数を大幅に削減することが 1 つの可能性として考えられます。2 つの領域間の距離を計算するには、重心 (領域内のピクセル位置の平均) を使用します。ただし、これは、最適に近い答えを得るためにパーティショニングをどのように行うべきかという問題を提示します。

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

4

3 に答える 3

9

これは最小マッチング問題であり、一般的に難しい問題であることは間違いありません。ただし、2D ユークリッド 2 部最小マッチングの場合は、O(n²) の近くで解けます (リンクを参照)。

高速な近似のために、FryGuy はシミュレーテッド アニーリングで正しい軌道に乗っています。これは 1 つのアプローチです。

O((n/ε)^1.5*log^5(n)) (1+ε)-ランダム化された近似スキームの平面での二部および非二部マッチングの近似アルゴリズムもご覧ください。

于 2009-02-15T09:51:41.563 に答える
5

これについては、シミュレートされたアニーリングを検討してください。各ピクセルにランダムに A[x] -> B[y] を割り当てることから始め、二乗距離の合計を計算します。次に、x<->y マッピングのペアをランダムに交換します。次に、確率 Q でこれを受け入れることを選択します。Q は、新しいマッピングが優れている場合に高くなり、時間の経過とともにゼロになる傾向があります。より良い説明については、ウィキペディアの記事を参照してください。

于 2009-02-15T09:42:19.650 に答える
-1
  1. 形状 A のピクセルを並べ替える: 「x」、次に「y」の縦座標の昇順
  2. 形状 B のピクセルを並べ替える: 'x' の降順、次に 'y' の昇順

同じインデックスでピクセルをマップします。並べ替えられたリストでは、A の最初のピクセルが B の最初のピクセルにマップされます。これは、探しているマッピングではありませんか?

于 2009-02-15T09:43:26.810 に答える