算法用于在光栅中找到方向变化。

19 浏览
0 Comments

算法用于在光栅中找到方向变化。

我有一个包含0和1的numpy数组,其中所有像素的值为1的像素连接在一起形成一条线。这条线在所有位置上都是1个像素宽。使用路径规划算法,我有一个包含所有点坐标(列,行)的列表,包括起点和终点。\n我的线的形状是一个缺少顶部的方形U/矩形。\n我想找到线段方向改变的点,这段距离要更长一些。例如从向下到向右,或者从向右到向上。\n我查看了Finding the point of a slope change as a free parameter- Python;然而,由于我的点都是水平、垂直或对角线连接的,所以这个方法不适用。而且我的U形状可能是对角线的,因此我要找的是连接类型在超过2个像素处发生变化的点。下面是我的数据示例,我想找到(5,3)/(6,4)和(6,7)/(5,8)。\n

a = np.array([[0,0,1,0,0,0,0,0,1],
              [0,0,1,0,0,0,0,0,1],
              [0,0,0,1,0,0,0,0,1],
              [0,0,0,1,0,0,0,1,0],
              [0,0,0,1,0,0,0,0,1],
              [0,0,0,1,0,0,0,0,1],
              [0,0,0,0,1,1,1,1,0],
              [0,0,0,0,0,0,0,0,0]])
list_of_points = [(0,2),(1,2),(2,3),(3,3),(4,3),(5,3),(6,4),(6,5),(6,6),(6,7),(5,8),(4,8),(3,7),(2,8),(1,8),(0,8)]

0
0 Comments

问题的出现原因是需要在栅格中找到方向变化的算法。解决方法是通过定义不同的矩阵来表示向下、向右和向上的方向。然后使用以下伪代码算法进行处理:

while 下一步可以向下移动:
    向下移动
// 下行结束
while 下一步可以向右移动:
    向右移动
// 右行结束
while 下一步可以向上移动:
    向上移动
// 上行结束

这种方法可以解决问题,并且已经被验证可以成功应用于实际问题。

0