2012-10-15 13 views
8

İşte (siyah olanları sayma) örnek:2d dizisinde aynı hücrelerin grupları nasıl sayılır?

girişi:

enter image description here

çıkışı:

5 4 // 5 groups (4 squares each) 
1 1 // 1 group containing 1 square 

Şimdi, ben bir ağrılı daha iyi bir şey düşünemiyorum yineleme. Bu grupları özlü bir şekilde elde etmek mümkün mü? Teşekkürler

+0

4-bağlantısı olan connected component labeling için algoritma kullanabilirsiniz! – elyashiv

+1

"Grup" olarak sayılır ne? Dikdörtgenler? Sürekli siyah alanlar? – phimuemue

+0

iyi, resim bir 2d dizisi giriş, siyah alanlar grubu yan yana yatan siyah karelerin blokları (çapraz olarak lyin sayılmaz) – Patryk

cevap

2

Tüm kara kareleri düğüm olarak ayarlayın. Siyah kareler arasındaki bağlantı (kareler birbirinin yanındaysa) bir kenar olacaktır. Bu bir graph sağlar. Grafikte bir DFS

tüm grupları size sağlayacaktır. DFS'nin doğası gereği özyineli olduğunu unutmayın.

0

Başlangıçta her hücre "görünmez" olabilir.

"Görünmez" bir siyah hücreye ulaşana kadar hücreler boyunca yinelemeliyim. Her beyaz hücreye o noktaya kadar vurdunuz

Siyah bir hücreye bastığınızda, mümkünse ("taşkın dolum" durumuna benzer) her yöne "genişletin". Mümkün olduğu kadar genişletin ve ziyaret edilen tüm hücreleri "ziyaret edildi" olarak işaretleyin. Bunu yaptıktan sonra, kaç tane siyah hücrenin enfekte olduğunu ve grubun ne kadar büyük olduğunu biliyorsun. Grubu tespit ettikten sonra, bir sonraki "görünmeyen" siyah hücreye devam edersiniz.

0

Sen benim girişi göremiyorum

İlgili konular