'**SUMMARY**
Combine another region, or regions with this ROI. Everything must be
in the source image coordinates. Regions can be a ROIs, [ROI], features,
FeatureSets, or anything that can be cajoled into a region.
**PARAMETERS**
* *regions* - A region or list of regions. Regions are just about anything that has position.
**RETURNS**
Nothing, but modifies this region.
**EXAMPLE**
>>>  blobs = img.findBlobs()
>>>  roi = ROI(blob[0])
>>>  print roi.toXYWH()
>>>  roi.merge(blob[2])
>>>  print roi.toXYWH()'

def merge(self, regions):

    result = self._standardize(regions)
    if (result is not None):
        (xo, yo, wo, ho) = result
        x = np.min([xo, self.xtl])
        y = np.min([yo, self.ytl])
        w = (np.max([(self.xtl + self.w), (xo + wo)]) - x)
        h = (np.max([(self.ytl + self.h), (yo + ho)]) - y)
        if (self.image is not None):
            x = np.clip(x, 0, self.image.width)
            y = np.clip(y, 0, self.image.height)
            w = np.clip(w, 0, (self.image.width - x))
            h = np.clip(h, 0, (self.image.height - y))
        self._rebase([x, y, w, h])
        if isinstance(regions, ROI):
            self.subFeatures += regions
        elif isinstance(regions, Feature):
            self.subFeatures.append(regions)
        elif isinstance(regions, (list, tuple)):
            if isinstance(regions[0], ROI):
                for r in regions:
                    self.subFeatures += r.subFeatures
            elif isinstance(regions[0], Feature):
                for r in regions:
                    self.subFeatures.append(r)
