Commit 2ddbd73e authored by Evin Dunn's avatar Evin Dunn
Browse files

Added overlap param to Edge.get_keypoints()

parent a0e50317
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -201,18 +201,30 @@ class Edge(dict, MutableMapping):
            self.masks[maskname] = mask

    @utils.methodispatch
    def get_keypoints(self, node, index=None, homogeneous=False):
    def get_keypoints(self, node, index=None, homogeneous=False, overlap=False):
        if not hasattr(index, '__iter__') and index is not None:
            raise TypeError
        return node.get_keypoint_coordinates(index=index, homogeneous=homogeneous)
        keypts = node.get_keypoint_coordinates(index=index, homogeneous=homogeneous)
        # If we only want keypoints in the overlap
        if overlap:
            # Compute overlap if we don't have it
            if not self["source_mbr"] or self["destin_mbr"]:
                self.compute_overlap()
            # Create overlap's bounding polygon in pixel space
            bounds_poly = node.reproject_geom(self.overlap_latlon_coords)
            # Mask for node keypts based on bounding poly
            overlap_mask = cg.geom_mask(node.keypoints, bounds_poly)
            # Return masked keypts
            return keypts[overlap_mask]
        return keypts

    @get_keypoints.register(str)
    def _(self, node, index=None, homogeneous=False):
    def _(self, node, index=None, homogeneous=False, overlap=False):
        if not hasattr(index, '__iter__') and index is not None:
            raise TypeError
        node = node.lower()
        node = getattr(self, node)
        return node.get_keypoint_coordinates(index=index, homogeneous=homogeneous)
        return self.get_keypoints(node, index=index, homogeneous=homogeneous, overlap=overlap)

    def compute_fundamental_error(self, clean_keys=[]):
        """
+3 −2
Original line number Diff line number Diff line
@@ -67,8 +67,9 @@ def decompose_and_match(self, k=2, maxiteration=3, size=18, buf_dist=3,**kwargs)
    dsize = ddata.shape

    # Grab all the available candidate keypoints
    skp = self.source.get_keypoints()
    dkp = self.destination.get_keypoints()
    overlap = kwargs.get("overlap", False)
    skp = self.get_keypoints(self.source, overlap=overlap)
    dkp = self.get_keypoints(self.destination, overlap=overlap)

    # Set up the membership arrays
    self.smembership = np.zeros(sdata.shape, dtype=np.int16)