ジャンプフラッドアルゴリズムは分離可能ですか?


10

JFA(ここで説明するアルゴリズム:http : //www.comp.nus.edu.sg/~tants/jfa/i3d06.pdf)を使用して、ボロノイ図または距離変換の近似値を取得できます。これは、シードの数ではなく、結果の画像のサイズに基づいて対数時間で行われます。

ただし、画像が各軸で同じサイズでない場合はどうしますか?

サイズが似ている場合は、短い方の軸にサイズ1の追加のJFAステップを持たせることができますが、大きい方の軸は(512 x 256サイズの画像のように)機能します。非常に異なるサイズの軸の寸法の場合、これははるかに非効率的ですが、512 x 512 x 4のボリュームテクスチャがあるとしましょう。

JFAを各軸で個別に実行しても、適切な結果が得られますか?

または、その時点で、別のアルゴリズムを使用する方が適切ですか?もしそうなら、それはどのアルゴリズムでしょうか?

私の状況では、理想的には、単一点シードと任意形状のシードの両方をサポートすることを目指しています。重み付けされたシードである可能性もあります。シードへの距離は、乗算器および/または加算器によって調整され、多少の影響を与えます。

回答:


7

個々の質問に対する素早い回答

ただし、画像が各軸で同じサイズでない場合はどうしますか?

このペーパーでは、辺の長さが2のべき乗である正方形の画像を使用しています。これは説明を簡単にするためですが、アルゴリズムが機能するために必要ではありません。セクション3.1を参照してください。

一般性を失うことなく、nは2の累乗であると想定できます。

つまり、アルゴリズムが機能するためにこの仮定は必要ありません。

JFAを各軸で個別に実行しても、適切な結果が得られますか?

各軸で個別に実行する、ピクセルの結果が不正確になる可能性が高く、ほとんどの場合、実行に時間がかかります。画像の辺の長さの1つが8(ジャンプ方向の数)未満の極端な場合、アルゴリズムはこれらの8つの方向を順番に処理するので高速になる可能性がありますが、より広い画像の場合、軸を分離するとそれらを処理する利点が失われます並行して。

私の状況では、理想的には、単一点シードと任意の形状のシードの両方をサポートすることを目指しています

この論文では、セクション6の「一般化ボロノイ図」の項で任意の形状のシードについて言及しています。

... Googleのアルゴリズムは、このような一般化されたシードをポイントシードのコレクションとして扱い、ポイントシードで得られた優れたパフォーマンスを継承することを期待しています。

したがって、任意の形状をピクセルのコレクションとしてモデル化することが目的に適していれば、アルゴリズムを調整する必要はありません。同じシード番号で位置が異なる任意の形状のシードのすべてのピクセルにラベルを付けるテクスチャをフィードするだけです。

重み付けされたシードである可能性もあります。シードへの距離は、乗算器および/または加算器によって調整され、多少の影響を与えます。

「乗法や加法などのシードの重み付け」については、セクション8を通過する可能性について、将来の潜在的な作業としてのみ言及しています。ただし、ピクセルからピクセルへ渡されるシードデータに希望の重み付けを含めることができれば、これは簡単に実装できます。

現在のアルゴリズムは<s, position(s)>シードとその位置を指定するためにパスし、一度に1つのシードのみがピクセルごとに格納されます。これを保存に拡張<s, position(s), weight(s)>すると、距離関数に重みを付けて、ピクセルに渡される新しいシードが現在保存しているシードよりも近いかどうかを計算するために必要なすべての情報が提供されます。

1つの乗算と1つの加算の2つの重みを含めることもできます。必要がない場合は、乗算1を1に、加算1を0に設定するだけです。次に、アルゴリズムには、乗法的に重み付けされたシード、加法的に重み付けされたシード、または一度に両方の組み合わせ、またはそれぞれのいくつかに使用される可能性が含まれます。これはちょうど必要になります

<s, position(s), multiplicative(s), additive(s)>

現在のアルゴリズムは、この新しいアルゴリズムと同等です。

<s, position(s), 1, 0>


理由の詳細な説明

ログ

アルゴリズムは、異なる辺の長さに適合させる必要はありません

辺の長さが等しくなく、2の累乗ではない場合、アルゴリズムを適合させる必要はありません。それはすでにジャンプの方向のいくつかが画像の外に通じている画像の端のピクセルを扱います。アルゴリズムはすでに画像の外側を指す方向のシード情報を省略しているため、2の累乗ではない幅または高さは問題になりません。幅Wと高さHの画像の場合、必要な最大ジャンプサイズは

2ログ最高WH1

幅と高さNが等しい場合、これは次のようになります。

2ログN1

2の累乗である辺の長さNの場合、これは

2ログN1=N/2

論文で使用されているとおり。

より直感的に言えば、最大の辺の長さを次の2の累乗に切り上げ、それを半分にして最大のジャンプサイズを取得します。

最長の辺の長さがNの場合、任意のピクセルへのオフセットは0からN-1の範囲になるため、これは常に画像内の他のすべてのピクセルから画像内のすべてのピクセルをカバーするのに十分です。2の累乗の累乗の組み合わせ0からN / 2は、Nが2の累乗である場合、N-1までのすべての整数をカバーし、Nが2の累乗でない場合、カバーされる範囲は、対数の上限を取るために必要以上に大きくなる場合があります( 2の次のべき乗に切り上げます。

2の累乗ではない辺を持つ画像は、劇的に効率が悪くなることはありません

ジャンプの数は、最長の辺の長さ、たとえばLに依存します。Lが2の累乗の場合、ジャンプの数はです。Lが2のべき乗でない場合、ジャンプの数はです。かなり大きな画像の場合、これは大きな違いにはなりません。ログL ログLログL

たとえば、1024 x 1024の画像では、10回のジャンプ反復が必要になります。512 x 512の画像は、9回のジャンプ反復を必要とします。2つのサイズの間にあるものも、10回の反復が必要です。最悪の場合、2の累乗を超える画像の場合でも、513 x 513の画像のように、追加の反復は1回だけ必要です。この縮尺では、約11%多くなります(9ではなく10)。

非正方形の画像はエリアごとに効率が悪い

必要な反復回数は最長の辺の長さによって決まるため、1024 x 1024の画像にかかる時間は、1024 x 16の画像と同じになります。正方形の画像を使用すると、同じ回数の反復でより広い領域をカバーできます。

軸を分離すると品質が低下する可能性があります

ペーパーのセクション5では、起こり得るエラーについて説明します。すべてのピクセルは他のすべてのピクセルからのパスによって到達可能ですが、一部のパスは、そのシードがパス内の前のピクセルに最も近くないため、正しい最も近いシードをもたらしません。シードがそれを越えて伝播することを許可しないピクセルは、そのシードを「殺した」と言われます。ピクセルに最も近いシードがそのピクセルへのすべてのパスで削除された場合、そのピクセルは他のシードを記録し、最終的な画像に誤った色が含まれます。

最終結果を正しくするために、シードを殺さないパスが1つだけ存在する必要があります。正しくない色は、正しいシードから特定のピクセルまでのすべてのパスがブロックされている場合にのみ発生ます。

パスに水平ジャンプと垂直ジャンプが交互に含まれている場合、軸を分離するとこのパスが不可能になります(すべての垂直ジャンプの前にすべての水平ジャンプが行われるため、交互ジャンプは不可能になります)。斜めジャンプはまったくできません。したがって、交互にジャンプするか、斜めのジャンプを含むパスはすべて除外されます。すべてのピクセルは他のすべてのピクセルへのパスを保持しますが、パスが少なくなるため、特定のピクセルが正しいシードを受け取るのをブロックされる可能性が高くなり、最終的な結果はエラーが発生しやすくなります。

軸を分離すると、アルゴリズムに時間がかかる可能性があります

フラッディングは並列で行われなくなり、代わりに軸ごとに繰り返されるため、軸を分離すると効率が低下する可能性があります。2Dの場合、この時間は約2倍、3Dの場合は約3倍かかります。

これは斜めジャンプの欠如によって多少緩和されるかもしれませんが、私は依然として全体的な効率の低下を期待します。


1
私はすでにこれのいくつかを試し始めました。完全な9の代わりに+記号(5リード)でサンプリングした場合、テストに違いは見られませんでしたが、より複雑な状況では違いがあると確信しています。完全なx jfaを実行してから、完全なy jfaを実行すると、多くのエラーが発生します。詳細/情報をお持ちの場合は、それを聞きたいと思いますが、回答を受け入れます:P
アランウルフ

1
忘れました、ここに私の実験の1 つへの
Alan Wolfe

興味深いのは、読み取りが5回だけの場合にも同様に機能することです。特に、並列化できないためです。このペーパーではエラーの原因となるケースをリストしているので、意図的にこれらを設定して、5つのジャンプ方向が依然として適切かどうかを確認できます。
trichoplax、2016

自分の回答を投稿する準備ができているようです...
trichoplax

私の情報はあなたの補足です:P
アランウルフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.