Source code for menpo.shape.groupops

from __future__ import division
from menpo.shape import PointCloud


[docs]def mean_pointcloud(pointclouds): r""" Compute the mean of a `list` of :map:`PointCloud` or subclass objects. The list is assumed to be homogeneous i.e all elements of the list are assumed to belong to the same point cloud subclass just as all elements are also assumed to have the same number of points and represent semantically equivalent point clouds. Parameters ---------- pointclouds: `list` of :map:`PointCloud` or subclass List of point cloud or subclass objects from which we want to compute the mean. Returns ------- mean_pointcloud : :map:`PointCloud` or subclass The mean point cloud or subclass. """ # make a temporary PointCloud (with copy=False for low overhead) tmp_pc = PointCloud(sum(pc.points for pc in pointclouds) / len(pointclouds), copy=False) # use the type of the first element in the list to rebuild from the vector return pointclouds[0].from_vector(tmp_pc.as_vector())