Which Extractor do I have to use for FAST Detector?
Hello,
I'm trying to detect an object in a scene, where this object is rotated. I want to find my screen on a photo of its environment:
I have used the ORB-Detector, but the result was very bad... So i try other detectors and extractors... Now I have the FAST Detector, but don't find a compatible DescriptorExtractor and DescriptorMatcher...
Does anyone know which extractor and matcher fit on which detectors? I don't find any information to that topic...
FeatureDetector fastDetector = FeatureDetector.create(FeatureDetector.FAST);
MatOfKeyPoint keypoints_object = new MatOfKeyPoint();
MatOfKeyPoint keypoints_scene = new MatOfKeyPoint();
fastDetector.detect(img_object, keypoints_object);
fastDetector.detect(img_scene, keypoints_scene);
DescriptorExtractor fastDescriptor = DescriptorExtractor.create(DescriptorExtractor.???);
Mat descriptors_object = new Mat();
Mat descriptors_scene = new Mat();
fastDescriptor.compute(img_scene, keypoints_scene, descriptors_scene);
fastDescriptor.compute(img_object, keypoints_object, descriptors_object);
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.???);
MatOfDMatch matches = new MatOfDMatch();
matcher.match(descriptors_object, descriptors_scene, matches);
The reason why your matching is failing is due to the limited amount of info contained in a blank blue screen with corners. Apply a noise pattern to increase details or start with a realistic image for matching.
Thanks for this answer. What features are important to get better results?
I am sure your goal is not to find blue screens right? Just place a random picture as match, which will have more detail and more global features.
I have tried a random picture and a noise pattern, but it is not better now...
by the way i use the ORB DescriptorExtractor and the BRUTFORCE_HAMMING matcher now. are they good for this task? if not, which ones should i use?
Feature descriptors depend heavily on your input image. It is quite hard to say what will work and what not. Trial and error is the most common practice and comparing robustness of different descriptors. As to the matching part, the bruteforce approach will certainly be very accurate but also quite time consuming. However I have not that many experience in matchers ... so cannot guide you there. What you could do is see if other distance measures yield better results!