Python和科学计算认证群组  - 讨论区

标题:Cloud points转换为曲面

2011年01月15日 星期六 08:48

下图是通过立体视觉测距得到了曲面的点云。

我们可以使用一个X-Y平面上的等距网格,分别统计落在各个网格中的点的高度的平均值,将其转换成一个表示曲面的二维数组。

利用histogram2d的weights参数,可以对高度进行求和,下面是这部分程序:

p = np.loadtxt("p.csv", delimiter=",")

 

sums = np.histogram2d(p[:,0],p[:,1],bins=100,weights=p[:,2])

counts = np.histogram2d(p[:,0],p[:,1],bins=100)

averages = sums[0] / counts[0]

所得到的数组averages中有一些数值是NAN,因为没有落入对应网格中的点。我们可以用中值滤波将这些NAN补上数值:

 

import scipy.ndimage as img

 

averages[np.isnan(averages)] = np.inf

averages = img.median_filter(averages,size=5)

averages[np.isinf(averages)] = np.nan

 

所得到的averages图像如下:

下面是将averages用3d surf显示的效果,和点云做比较:

2011年01月15日 星期六 11:01

我感觉pysci代码的可读性极差。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号