查找坐标是否形成完整路径

时间:2019-04-06 20:57:25

标签: matlab image-processing graph

因此,我有一个通常形成某种圆形形状的点的列表,除了通常很少有来自圆的分支,它们基本上只是从圆的边界沿特定方向行进的线。我想创建一个函数,当给出此坐标/点列表时,该函数将查找在这组点中是否存在完整路径。

我考虑过要创建一个起点,并确定是否存在不重复点的路径(即(1,1)->(2,1)->(1,1)不允许),并且可以回到起点但是,如果起点在圆的分支中,则此方法将无效。

例如,坐标列表

[[0, 0], [0, 1], [1, 2], [2, 3], [3, 3], [3, 4], [4, 4], [3, 2], [3, 1], [3, 0], [2, -1], [1, -1], [0, -1]] 

将形成完整的路径,而如果我取出[1, -1],则不会形成完整的路径。

1 个答案:

答案 0 :(得分:0)

我采用的解决方案是将邻居列表转换为矩阵,将该矩阵转换为逻辑矩阵,然后假设您确定知道循环中的某个点,请对该点使用imfill函数并检查是否[1,1]坐标已转换。

    mat = zeros(length, length);
    mat(coordinates) = 1;
    mat = logical(mat);
    mat = imfill(mat, [length/2 length/2]);
    if mat(1) == 1
       not closed loop
    else
       closed loop
    end

此代码的一些假设是,中间点位于循环内并且尚未填充,并且(1,1)坐标值将尚未填充,这是我可以使用正在处理的数据进行的假设。