def extract_features_hahog(image, config): t = time.time() points, desc = csfm.hahog(image.astype(np.float32) / 255, # VlFeat expects pixel values between 0, 1 peak_threshold=config['hahog_peak_threshold'], edge_threshold=config['hahog_edge_threshold'], target_num_features=config['feature_min_frames'], use_adaptive_suppression=config['feature_use_adaptive_suppression']) if config['feature_root']: desc = np.sqrt(desc) uchar_scaling = 362 # x * 512 < 256 => sqrt(x) * 362 < 256 else: uchar_scaling = 512 if config['hahog_normalize_to_uchar']: desc = (uchar_scaling * desc).clip(0, 255).round() logger.debug('Found {0} points in {1}s'.format(len(points), time.time() - t)) return points, desc