Source code for autocnet.matcher.cuda_extractor
import warnings
try:
import cudasift as cs
except:
cs = None
[docs]def extract_features(array, nfeatures=None, **kwargs):
"""
A custom docstring.
"""
if not nfeatures:
nfeatures = int(max(array.shape) / 1.25)
else:
warnings.warn('NFeatures specified with the CudaSift implementation. Please ensure the distribution of keypoints is what you expect.')
siftdata = cs.PySiftData(nfeatures)
cs.ExtractKeypoints(array, siftdata, **kwargs)
keypoints, descriptors = siftdata.to_data_frame()
keypoints = keypoints[['x', 'y', 'scale', 'sharpness', 'edgeness', 'orientation', 'score', 'ambiguity']]
# Set the columns that have unfilled values to zero to avoid confusion
keypoints['score'] = 0.0
keypoints['ambiguity'] = 0.0
return keypoints, descriptors