查找图像中一条线上的像素坐标

Can*_*kel 6 python numpy image-processing

我有一个表示为二维数组的图像。我想获取从点 1 到点 2 的直线上的像素坐标。

例如,假设我有一张尺寸为 5x4 的图像,如下图所示。我有一条从坐标处的点 1 到坐标(0, 2)处的点 2 的线(4, 1)。就像下图中的红线一样:

在此输入图像描述

所以在这里我想将蓝色像素的坐标作为列表获取,如下所示:[(0, 2), (1, 2), (2, 2), (2, 1), (3, 1), (4, 1)]

我怎样才能实现这个目标?

我正在使用 Python 和 numpy,但实际上任何语言(包括伪代码)的解决方案都会有所帮助。然后我可以尝试将其转换为 numpy 解决方案。

Mar*_*ell 4

您可以使用scikit-image执行此操作:

from skimage.draw import line

# Get coordinates, r=rows, c=cols of your line
rr, cc = line(0,2,4,1)

print(list(zip(rr,cc)))
[(0, 2), (1, 2), (2, 1), (3, 1), (4, 1)]
Run Code Online (Sandbox Code Playgroud)

查看实现算法的源代码:https://github.com/scikit-image/scikit-image/blob/main/skimage/draw/_draw.pyx#L44

它是Bresenham 直线算法的实现