Source code for menpo.transform.groupalign.base



[docs]class MultipleAlignment(object): r""" Abstract base class for aligning multiple `source` shapes to a `target` shape. Parameters ---------- sources : `list` of :map:`PointCloud` List of pointclouds to be aligned. target : :map:`PointCloud`, optional The target :map:`PointCloud` to align each source to. If ``None``, then the mean of the sources is used. Raises ------ ValueError Need at least two sources to align """ def __init__(self, sources, target=None): from menpo.shape import PointCloud if len(sources) < 2 and target is None: raise ValueError("Need at least two sources to align") self.n_sources = len(sources) self.n_points, self.n_dims = sources[0].n_points, sources[0].n_dims self.sources = sources if target is None: # set the target to the mean source position self.target = PointCloud( sum([s.points for s in self.sources]) / self.n_sources) else: assert self.n_dims, self.n_points == target.shape self.target = target