user26818047
user26818047

Reputation: 1

What feature extractor paramters to use with SIFT for very simple symbol detection

enter image description hereI need to detect symbols on a drawing. I want to use following procedure:

  1. feature extraction on each symbol in the trainingset using SIFT
  2. feature extraction on the scene image
  3. compare if the symbol is detected and check rotation , scale, etc.

I got this to work with pretty statisfing result. However, some of my symbols are so simple that SIFT is unable to extract features. (i use open cv 4.10.0) I don't really understand, because the symbol does have some distinctive edges and corners.

The symbol looks like this: enter image description here

I tried increasing the nFeatures parameter, change the grayscale to binary for more contrast, but no improvement. Are there settings for the detector that i can change so multiple features are detected? Or perhaps some preprocessing on the symbol i can try?

the code I use to detect the features: (nfeatures is set to 500)

    def getFeatures(self,img_object):   
    #step1 extract features using SIFT on all img_objescts
    keypoints_obj = []
    descriptors_obj = []

    if (self.type=="SIFT"):
        detector = cv.SIFT_create(nfeatures=self.nfeatures)
        keypoints_obj, descriptors_obj = detector.detectAndCompute(img_object, None)

    return keypoints_obj, descriptors_obj  

If i run this on an icon, i get following results: 6 KP detected for a single line symbol (vectorized) and 127 keypoints detected for a enhanced, not vectorized symbol

how can i enhance the results on vectorized symbols?

Upvotes: 0

Views: 43

Answers (0)

Related Questions