Python:插值直线并获得欧几里得距离

Python:插值直线并获得欧几里得距离,python,numpy,matplotlib,scipy,interpolation,Python,Numpy,Matplotlib,Scipy,Interpolation,我有以下问题。我有一条直线的点的坐标。现在我想连接它们或插值它们,这样我在一个房间里有一条连续的线,并计算到盒子坐标其余部分的欧几里德距离,它可以是一个(21,41,91)形状的numpy数组(这不应该是scipy、skimage等的问题) 所以我想做一些类似的事情,但在3D中: 因此,线体素将得到零,其余坐标都是1。我不想要直线的点的距离或直线的总长度 这里是一个可视化的点是如何在房间里分布的 这里是一行的numpy数组中的坐标。它们按正确的顺序排列: import numpy as

我有以下问题。我有一条直线的点的坐标。现在我想连接它们或插值它们,这样我在一个房间里有一条连续的线,并计算到盒子坐标其余部分的欧几里德距离,它可以是一个(21,41,91)形状的numpy数组(这不应该是scipy、skimage等的问题)

所以我想做一些类似的事情,但在3D中:

因此,线体素将得到零,其余坐标都是1。我不想要直线的点的距离或直线的总长度

这里是一个可视化的点是如何在房间里分布的

这里是一行的numpy数组中的坐标。它们按正确的顺序排列:

import numpy as np

line1 = np.array([[ 14,11,35],
 [ 13,14,37],
 [ 11,17,38],
 [ 11,19,41],
 [ 12,21,43],
 [ 15,24,46],
 [ 18,27,46],
 [ 19,30,45],
 [ 20,33,45],
 [ 21,36,46],
 [ 22,37,47],
 [ 24,37,47],
 [ 23,40,49],
 [ 24,42,51],
 [ 21,44,50],
 [ 19,46,48],
 [ 18,47,45]])
IIUC:

[108]中的
:来自mpl_toolkits.mplot3d导入Axes3D
在[109]中:fig=plt.figure()
…:ax=图添加_子图(111,投影='3d')
在[112]中:ax.绘图(第1行[:,0],第1行[:,1],第1行[:,2])
Out[112]:[]
结果:

更新:将其保存为TIFF:

In [128]: from PIL import Image

In [129]: from io import BytesIO

In [130]: buf = BytesIO()

In [131]: fig = plt.figure()
     ...: ax = fig.add_subplot(111, projection='3d')
     ...:

In [132]: ax.plot(line1[:, 0], line1[:, 1], line1[:, 2])
Out[132]: [<mpl_toolkits.mplot3d.art3d.Line3D at 0x14cdccc0>]

In [133]: fig.savefig(buf)

In [134]: Image.open(buf).save(r'd:/temp/out.tiff')
[128]中的
:来自PIL导入图像
In[129]:从io导入字节io
In[130]:buf=BytesIO()
在[131]中:fig=plt.figure()
…:ax=图添加_子图(111,投影='3d')
...:
在[132]中:最大绘图(第1行[:,0],第1行[:,1],第1行[:,2])
出[132]:[]
In[133]:图savefig(buf)
In[134]:Image.open(buf).save(r'd:/temp/out.tiff')

Interpolation:。欧几里得距离部分比较模糊。我假设你可以得到每组长方体的平均点,并计算它们之间的距离。很好,但是也可以得到插值线的坐标,该插值线适合每个维度的linspaces 1特定网格,或者将该线保存在3D tiff中?好的,这是matplotlib绘图的图片,但我需要一个带所有插值坐标的arrray,或者一个只带背景框中线条的3d tiff
In [128]: from PIL import Image

In [129]: from io import BytesIO

In [130]: buf = BytesIO()

In [131]: fig = plt.figure()
     ...: ax = fig.add_subplot(111, projection='3d')
     ...:

In [132]: ax.plot(line1[:, 0], line1[:, 1], line1[:, 2])
Out[132]: [<mpl_toolkits.mplot3d.art3d.Line3D at 0x14cdccc0>]

In [133]: fig.savefig(buf)

In [134]: Image.open(buf).save(r'd:/temp/out.tiff')