0

各セルをペアで表すことができるグリッドマップ(x, y)と、そのようなセルのベクトルが与えられた場合、そのベクトル内のセルが「トンネル」を形成しているかどうかを(うまく)確認するにはどうすればよいですか。それらはすべて縦または横に並んでいますか?しかし、それらのほとんどが並んでいるかどうか (すべてではない)だけを確認したい場合はどうすればよいでしょうか?

All are lines up             Most are lined up      Not lined up

                             C                       C C C
 C C C C C C C C             C C C C C C C C         C   C C C
                                 C                   C C C C
                                                         C C
4

3 に答える 3

2

セルの x 座標と y 座標のヒストグラムを作成できます。すべてのセルが水平に並んでいる場合、ヒストグラムには 1 つの y 値しかなく、多数の連続した x 値が得られますが、これらはすべて 1 回しか発生しません。垂直方向は、x と y が反転したものと同じです。

それらのほとんどが並んでいるかどうかを確認したい場合は、ヒストグラムで最も出現回数が多い (可能な限り長いトンネル) 値を検索し、並んでいる場合はその x または y 座標を持つセルを確認します (つまり、y または x 座標 (前のステップで使用された x または y に応じて) がギャップなしで連続している (おそらく最初に並べ替える)。 .

于 2012-04-13T19:01:25.127 に答える
1

X 座標と Y 座標の両方の標準偏差を計算できます。細胞が「トンネル化」されているほど、X または Y の標準偏差が低くなります。

たとえば、Python では次のようになります。

import numpy

def is_tunnelled(cells):
    # given cells=[(x,y), (x,y),...]
    x_values, y_values = zip(*cells)
    lowest_std_dev = min(numpy.std(x_values), numpy.std(y_values))
    return lowest_std_dev < STD_DEVIATION_THRESHOLD

STD_DEVIATION_THRESHOLD の値を決定するのはあなた次第です。

于 2012-04-13T19:05:36.593 に答える
1

y最初に座標がすべて等しいことを確認してから、x座標で並べ替え、左から右に移動してギャップを確認することで、水平トンネルを作成しているかどうかを確認できます。反対の座標を使用して、垂直トンネルを確認します。

おおよそのチェックでは、「ほとんど」の意味を明確にする必要があります。

于 2012-04-13T18:58:47.143 に答える