gpt4 book ai didi

python - 获取给定顶点坐标的多边形轮廓和多边形掩码的坐标

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:02 25 4
gpt4 key购买 nike

给定一个包含多边形掩码的矩阵(这里是一个小而简单的案例):

array([[0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0],
[0, 0, 1, 1, 1, 0, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 0, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])

使用 skimage.segmentation.find_boundaries() 提取轮廓,给出:

array([[0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0],
[0, 0, 1, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 1, 0],
[0, 1, 0, 0, 0, 1, 0],
[0, 0, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])

然后提取轮廓的 [row,column](即 [y,x])坐标,给出:

outline = array([[2,2],[1,2],[1,3],[2,4],[3,5],[4,5],[5,4],[5,3],[5,2],[4,1],[3,1]])

然后将这些坐标修剪为定义多边形(即顶点)的最小集合,给出:

vertices = array([[2,2],[1,2],[1,3],[3,5],[4,5],[5,4],[5,2],[4,1],[3,1]])

(对应于:)

array([[0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 1, 0],
[0, 1, 0, 0, 0, 1, 0],
[0, 0, 1, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])

在给定顶点坐标(上面的数组vertices)的情况下,有没有一种快速的方法使用numpy/scipy/skimage/etc来获取轮廓坐标(上面的数组outline) )?
另外,取回轮廓坐标后,有没有好的numpy/scipy/skimage方法可以取回原始多边形mask中所有点的坐标?

最佳答案

给定多边形 v1, v2 中的 2 个顶点,我们可以获得所有点 p,它们是从 v1v2 使用线光栅化算法。一个非常快速的算法是 Bresenham's line drawing algorithm .在此之后,您可以将此算法应用于多边形中的每对形容词顶点。虽然,我不能保证轮廓将完全是原始多边形中的轮廓,因为光栅化算法将为给定线提供最佳点集,而不是原始算法中的点(考虑它们的压缩错误)。

对于填充算法,它们被称为多边形光栅化算法,但我不能在这里帮助你,因为我不知道哪个是最好/最快的。

关于python - 获取给定顶点坐标的多边形轮廓和多边形掩码的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57602449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com