2014-12-31 83 views
-2

我有一個16X16矩陣,其中包含來自0,1,2,3的成員,我想知道應該使用哪種算法來查找成員之間的邊界以顯示分組換句話說,我應該使用哪種算法找到這種分組的邊緣?我想要以另一個矩陣的形式檢測邊緣,所以當我繪製這兩個矩陣時,第二個顯示了數字組的邊界和邊緣。 Moore Neighbor Contour Tracer算法是否足夠?但我不確定算法的結果是否符合我的期望。需要算法來查找矩陣成員的邊緣和邊界

00000000000000000000000000 
33000000001111111111111111 
33330000000001111111111111 
33330000000000000111111111 
00000000000000000010000000 
00000000001111111111111111 
00000000000000000000000000 
01111111111111111111111111 
00000001111111111111111111 
11111111111111111111111111 
00000000001111122222221111 
00000000001111112222221111 
00000001111111112222222222 
00000000000001112222222222 
00000000000000122222222222 
00000000000000022222222222 
+0

絕對不是正確的地方問這個問題 – chouaib

回答

0

這取決於你如何定義實際的邊緣。例如,在3和0之間,邊緣在哪裏?在3,在0還是兩者?因爲根據您的描述,邊緣不能位於兩個單元格之間。

無論如何,我最簡單的想法是循環遍歷所有單元格,並找到具有不同鄰居的單元格。例如,找到所有3個單元格,然後找到每個單元格的所有2-4個(或3-8個對角線)鄰居,並查看是否有任何鄰居不同於3個。如果一個3被所有3個包圍,那麼它在裏面一個組,但是如果它有一個0,1或2個鄰居,那麼它就在邊緣。你不需要任何特殊的算法。 Edge detection算法實際上用於圖像處理,其中邊緣不是謹慎的。

爲了找到屬於一起的細胞,您需要一個flood fill algorithm

+0

感謝您分享您的想法,它確實幫助 – user3263996