code: def compute(self, image, kps, eps=1e-7):
      # compute SIFT descriptors
      (kps, descs) = self.extractor.compute(image, kps)
  
      # if there are no keypoints or descriptors, return an empty tuple
      if len(kps) == 0:
          return ([], None)
  
      # apply the Hellinger kernel by first L1-normalizing and taking the
      # square-root
      descs /= descs.sum(axis=1, keepdims=True) + eps
      descs = np.sqrt(descs)
  
      # return a tuple of the keypoints and descriptors
      return (kps, descs)
  
imports: from __future__ import absolute_import
  import numpy
  import cv2
  from ..convenience import is_cv2
label_desc: Use image node_id 2 for calling the RootSIFT obj's underlying member method code with example usage: obj.compute(image, kps, eps) and returns: kps,  descs, list,  None