2次元配列で同じ値を持つ隣接要素を見つける – 配列内のフィーチャにラベル付け(Flood fill)

How to find neighbours with the same value in 2-D array in C? – StackOverflow

関連同様,

import numpy as np
from scipy.ndimage import label


strings = """1 0 1 0 1
0 1 0 1 0
0 0 1 0 1
0 0 1 0 0
1 1 0 1 0"""
l = [[int(x) for x in line.split()] for line in strings.splitlines()]

a = np.array(l)
label(a==1)[0] # v = np.unique(a.ravel());label(a==v[:, None, None])[0].sum(0)
array([[1, 0, 2, 0, 3],
       [0, 4, 0, 5, 0],
       [0, 0, 6, 0, 7],
       [0, 0, 6, 0, 0],
       [8, 8, 0, 9, 0]], dtype=int32)

デフォルトは4連結で,8連結の場合は「scipy.ndimage.generate_binary_structure(2, 2)」を渡す.また,似たものに「skimage.measure.label」があるが,「skimage.measure.label」よりも,
「scipy.ndimage.label」の方が効率が良い.後は,隣接要素の数が最大になるグループ(最大領域)を取得したい場合は,「一貫性のある最大領域(最大ブロブ)を取得」と同様に処理すれば良い.

 
 

関連:
Number of Islands – 2Dアレイの隣接要素のカウント(フィーチャー数)

隣接カウント

隣接セルの合計(コンボリューション)

2D配列(numpy.ndarray)の隣接要素をグループ化(クラスタ化)

一貫性のある最大領域(最大ブロブ)を取得

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください