Ask Your Question

rafael.soledade's profile - activity

2013-04-11 05:39:01 -0600 commented question DMatch matches output

Hi Alicia. So sorry for only replying now, but completely forgot this post. Anyway, custom filters are done by using the keypoint information, such as the angle, (x,y) coordinates and such. One filter we use , for instance, was dividing the image in N parts and comparing only the keypoints inside each part. Again, sorry for the delay in the answer and I hope it was still helpful! :)

2013-04-11 04:50:27 -0600 asked a question ORB Keypoint response calculation

I've successfully used the response parameter of KeyPoint object to order the keypoints in my Image Retrieval software, and I can clearly see the advantage it brings. I'm having a bit of trouble though trying to figure out the science behind it, since the documentation only says: The response, by which the strongest keypoints have been selected. Can be used for further sorting or subsampling.. I'd like to know how it actually works, because I like to understand how things operate in the backstage.

For a given image, how can I calculate the response of point marked with orange cross, where each cell represents a pixel and RGB value of grey pixels is (195,195,195)

image description

2012-10-16 23:39:48 -0600 received badge  Student (source)
2012-10-16 06:44:08 -0600 received badge  Editor (source)
2012-10-16 06:43:20 -0600 asked a question DMatch matches output


I'm having some trouble trying to make sense out of the ouput of my matches. I print on screen both the query and train index and their respective distance, then I calculate the min and max distance. My logic tells me that if I'm comparing two different pictures of the same object, the min distance obtained should be smaller than the min distance obtained when matching two pictures of a different object, but that's not the case. Am I reading the output wrong? This is causing a lot of headaches, since I'm currently comparing two pictures and returning a matching rate percentage, but some of these rates are quite wrong.

Here's the DMatch output:

Query Index: 0; Train Index: 37; Distance: 113.0
Query Index: 1; Train Index: 79; Distance: 127.0
Query Index: 2; Train Index: 103; Distance: 136.0
Query Index: 3; Train Index: 103; Distance: 141.0
Query Index: 4; Train Index: 67; Distance: 117.0
Query Index: 5; Train Index: 33; Distance: 117.0
Query Index: 6; Train Index: 70; Distance: 102.0
Query Index: 7; Train Index: 168; Distance: 125.0
Query Index: 8; Train Index: 79; Distance: 68.0
Query Index: 9; Train Index: 101; Distance: 111.0
Query Index: 10; Train Index: 106; Distance: 93.0
Query Index: 11; Train Index: 69; Distance: 56.0
Query Index: 12; Train Index: 112; Distance: 102.0
Query Index: 13; Train Index: 66; Distance: 87.0
Query Index: 14; Train Index: 45; Distance: 104.0
Min Distance: 39.0
Max Distance: 155.0

How can I use this to determine the good matches? And why do the descriptors in orb return double if it's supposed to be a binary string?



So after a few more tests, I've figured that those distances returned can only be the Hamming distance between the two given keypoints in query and train index. I've managed to apply some custom filters for my good matches, and the results are pretty good. If you need help with this, PM me. Cheers