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