def extract_features(self, array, **kwargs): """ Extract features for the node Parameters ---------- array : ndarray kwargs : dict kwargs passed to autocnet.feature_extractor.extract_features """ keypoint_objs, descriptors = fe.extract_features(array, **kwargs) keypoints = np.empty((len(keypoint_objs), 7), dtype=np.float32) for i, kpt in enumerate(keypoint_objs): octave = kpt.octave & 8 layer = (kpt.octave >> 8) & 255 if octave < 128: octave = octave else: octave = (-128 | octave) keypoints[i] = kpt.pt[0], kpt.pt[1], kpt.response, kpt.size, kpt.angle, octave, layer # y, x self._keypoints = pd.DataFrame(keypoints, columns=['x', 'y', 'response', 'size', 'angle', 'octave', 'layer']) self._nkeypoints = len(self._keypoints) self.descriptors = descriptors.astype(np.float32)
def extract_features(self, array, **kwargs): """ Extract features for the node Parameters ---------- array : ndarray kwargs : dict KWargs passed to autocnet.feature_extractor.extract_features """ keypoint_objs, descriptors = fe.extract_features(array, **kwargs) keypoints = np.empty((len(keypoint_objs), 7), dtype=np.float32) for i, kpt in enumerate(keypoint_objs): octave = kpt.octave & 8 layer = (kpt.octave >> 8) & 255 if octave < 128: octave = octave else: octave = -128 | octave keypoints[i] = kpt.pt[0], kpt.pt[1], kpt.response, kpt.size, kpt.angle, octave, layer # y, x self.keypoints = pd.DataFrame(keypoints, columns=["x", "y", "response", "size", "angle", "octave", "layer"]) self._nkeypoints = len(self.keypoints) self.descriptors = descriptors.astype(np.float32) self.provenance[self._pid] = {"detector": "sift", "parameters": kwargs} self._pid += 1
def extract_features(self, array, **kwargs): """ Extract features for the node Parameters ---------- array : ndarray kwargs : dict KWargs passed to autocnet.feature_extractor.extract_features """ keypoint_objs, descriptors = fe.extract_features(array, **kwargs) keypoints = np.empty((len(keypoint_objs), 7), dtype=np.float32) for i, kpt in enumerate(keypoint_objs): octave = kpt.octave & 8 layer = (kpt.octave >> 8) & 255 if octave < 128: octave = octave else: octave = (-128 | octave) keypoints[i] = kpt.pt[0], kpt.pt[ 1], kpt.response, kpt.size, kpt.angle, octave, layer # y, x self.keypoints = pd.DataFrame( keypoints, columns=['x', 'y', 'response', 'size', 'angle', 'octave', 'layer']) self._nkeypoints = len(self.keypoints) self.descriptors = descriptors.astype(np.float32)
def extract_features(self, array, **kwargs): """ Extract features for the node Parameters ---------- array : ndarray kwargs : dict kwargs passed to autocnet.feature_extractor.extract_features """ self._keypoints, self.descriptors = fe.extract_features(array, **kwargs)
def extract_features(self, extractor_parameters={}, downsampling=1): """ Extracts features from each image in the graph and uses the result to assign the node attributes for 'handle', 'image', 'keypoints', and 'descriptors'. Parameters ---------- extractor_parameters : dict A dictionary containing OpenCV SIFT parameters names and values. downsampling : int The divisor to image_size to down sample the input image. """ for node, attributes in self.nodes_iter(data=True): self.get_geodataset(node) self.get_array(node, downsampling=downsampling) attributes['keypoints'], attributes['descriptors'] = fe.extract_features(attributes['image'], extractor_parameters)
def extract_features(self, nfeatures) : """ Extracts features from each image in the graph and uses the result to assign the node attributes for 'handle', 'image', 'keypoints', and 'descriptors'. Parameters ---------- nfeatures : int The number of features to be extracted. """ # Loop through the nodes (i.e. images) on the graph and fill in their attributes. # These attributes are... # geo dataset (handle and image) # features (keypoints and descriptors) for node, attributes in self.nodes_iter(data=True): self.get_geodataset(node) extraction_params = {'nfeatures' : nfeatures} attributes['keypoints'], attributes['descriptors'] = fe.extract_features(attributes['image'], extraction_params)
def extract_features(self, array, **kwargs): """ Extract features for the node Parameters ---------- array : ndarray kwargs : dict kwargs passed to autocnet.feature_extractor.extract_features """ keypoint_objs, self.descriptors = fe.extract_features(array, **kwargs) if self.descriptors.dtype != np.float32: self.descriptors = self.descriptors.astype(np.float32) # OpenCV returned keypoint objects if isinstance(keypoint_objs, list): keypoints = np.empty((len(keypoint_objs), 7), dtype=np.float32) for i, kpt in enumerate(keypoint_objs): octave = kpt.octave & 8 layer = (kpt.octave >> 8) & 255 if octave < 128: octave = octave else: octave = (-128 | octave) keypoints[i] = kpt.pt[0], kpt.pt[1], kpt.response, kpt.size, kpt.angle, octave, layer # y, x self._keypoints = pd.DataFrame(keypoints, columns=['x', 'y', 'response', 'size', 'angle', 'octave', 'layer']) self.nkeypoints = len(self._keypoints) # VLFeat returned keypoint objects elif isinstance(keypoint_objs, np.ndarray): # Swap columns for value style access, vl_feat returns y, x keypoint_objs[:, 0], keypoint_objs[:, 1] = keypoint_objs[:, 1], keypoint_objs[:, 0].copy() self._keypoints = pd.DataFrame(keypoint_objs, columns=['x', 'y', 'size', 'angle'])