3

グリッドは、次の 2 つの配列に格納されたエッジを使用してイメージを定義します。

  • h[x][y]x,yからまでの辺の重みを与えるx+1,y
  • v[x][y]x,yからまでの辺の重みを与えるx,y+1

クラスカルのアルゴリズムを実装しようとしています。これはかなり簡単です。オンラインで実装を見つけてコピーできます。問題はエッジの処理です。具体的には; それらを並べ替えると混乱します。

このテイクのエッジを具体的に保存するより良い方法はありますか? 私はそれらがすべてのピクセルから隣接するピクセルまでであることを望みます。画像を i[x][y] として保存しています。エッジの重みは画像値の差です。

4

1 に答える 1

1

あなたがする必要があるのは、すべてのエッジのリストを作成してからソートすることです。これを行うには、クラス Edge を定義する必要があります。

class Edge:
    def x
    def y
    def direction
    def weight

h次に、行列とv行列を解析してedgesリストを作成します。最終的には、2 * N * M要素が必要です。解析した行列に応じて、エッジの方向は または のいずれ'h'かになります。'v'

hおよびv行列を他の目的で使用しない場合は、行列から直接エッジの重みを計算できるため、これらを完全に削除できますi

最後に、アルゴリズムのために、重みを基準としてリストをソートする必要があります。

edges.sort(key=weight)
于 2013-02-01T23:32:59.940 に答える