2014-12-31 47 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