【发布时间】:2018-02-28 20:21:59
【问题描述】:
注意:我之前问过这个问题,但它作为副本被关闭了,但是,我和其他几个人认为它被不当关闭了,我在我原来的 post 的编辑中解释了为什么。所以我想在这里再次提出这个问题。
有谁知道可以在两行之间插入的python库。例如,给定下面的两条实线,我想在中间生成虚线。换句话说,我想得到中心线。输入只是两个numpy 坐标数组,大小分别为N x 2 和M x 2。
此外,我想知道是否有人在一些优化的 python 库中为此编写了一个函数。虽然优化并不是完全必要的。
这是我可能有两条线的示例,您可以假设它们不相互重叠,并且 x/y 可以有多个 y/x 坐标。
array([[ 1233.87375018, 1230.07095987],
[ 1237.63559365, 1253.90749041],
[ 1240.87500801, 1264.43925132],
[ 1245.30875975, 1274.63795396],
[ 1256.1449357 , 1294.48254424],
[ 1264.33600095, 1304.47893299],
[ 1273.38192911, 1313.71468591],
[ 1283.12411536, 1322.35942538],
[ 1293.2559388 , 1330.55873344],
[ 1309.4817002 , 1342.53074698],
[ 1325.7074616 , 1354.50276051],
[ 1341.93322301, 1366.47477405],
[ 1358.15898441, 1378.44678759],
[ 1394.38474581, 1390.41880113]])
array([[ 1152.27115094, 1281.52899302],
[ 1155.53345506, 1295.30515742],
[ 1163.56506781, 1318.41642169],
[ 1168.03497425, 1330.03181319],
[ 1173.26135672, 1341.30559949],
[ 1184.07110925, 1356.54121651],
[ 1194.88086178, 1371.77683353],
[ 1202.58908737, 1381.41765447],
[ 1210.72465255, 1390.65097106],
[ 1227.81309742, 1403.2904646 ],
[ 1244.90154229, 1415.92995815],
[ 1261.98998716, 1428.56945169],
[ 1275.89219696, 1438.21626352],
[ 1289.79440676, 1447.86307535],
[ 1303.69661656, 1457.50988719],
[ 1323.80994319, 1470.41028655],
[ 1343.92326983, 1488.31068591],
[ 1354.31738934, 1499.33260989],
[ 1374.48879779, 1516.93734053],
[ 1394.66020624, 1534.54207116]])
所以我在这方面的尝试是使用skimage.morphology 库中的skeletonize 函数,首先将坐标栅格化为填充的多边形。但是,我在末端会出现这样的分支:
【问题讨论】:
-
这可能是一个未充分说明的问题 - 即这里如何定义“中间”? (或者更糟的是,当曲线像这样不是很好和凸的时候。)
-
线条是否相交?任何 x 坐标都会有多个 y 坐标吗?
-
我们可以使用纯直线吗?
-
我已更新问题以回答您的一些问题。至于“中”的定义,我自己也不太清楚如何定义。是否有多种解释方式?
标签: python algorithm math geometry interpolation