Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要找到矩阵成员的边和边界的算法_C#_Algorithm_Matrix_Edge Detection_Boundary - Fatal编程技术网

C# 需要找到矩阵成员的边和边界的算法

C# 需要找到矩阵成员的边和边界的算法,c#,algorithm,matrix,edge-detection,boundary,C#,Algorithm,Matrix,Edge Detection,Boundary,我有一个16X16矩阵,其中包含0,1,2,3的成员,我想知道我应该使用哪个算法来找到成员之间的边界来显示分组,换句话说,我应该使用哪个算法来找到这个分组的边?我想用另一个矩阵的形式来检测边,所以当我绘制这两个矩阵时,第二个矩阵显示了一组数字的边界和边。摩尔邻域轮廓追踪算法是否足够?但我不确定算法的结果是否满足我的期望 00000000000000000000 33000000001111111111111111 33330000000001111111111111 33330000000000

我有一个16X16矩阵,其中包含0,1,2,3的成员,我想知道我应该使用哪个算法来找到成员之间的边界来显示分组,换句话说,我应该使用哪个算法来找到这个分组的边?我想用另一个矩阵的形式来检测边,所以当我绘制这两个矩阵时,第二个矩阵显示了一组数字的边界和边。摩尔邻域轮廓追踪算法是否足够?但我不确定算法的结果是否满足我的期望

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

这取决于您实际如何定义边。例如,在3和0之间,边在哪里?在3上,在0上,还是两者都有?因为根据您的描述,边不能位于两个单元格之间

无论如何,我最简单的想法就是循环遍历所有的单元,然后找到那些有不同邻居的单元。例如,找到所有3个单元格,然后找到每个单元格的所有2-4个(或带对角线的3-8个)邻居,并查看是否有任何邻居与3不同。如果一个3被所有的3包围,那么它在一个组内,但是如果它有一个0、1或2的邻居,那么它在边上。你不需要任何特殊的算法。算法实际上用于图像处理,其中边缘不是离散的


为了找到属于一起的单元格,您需要一个。

绝对不是提出此问题的正确位置