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 © 2024
京ICP备05028076号