FASText icon indicating copy to clipboard operation
FASText copied to clipboard

Doubts on computing keypoints

Open zacniewski opened this issue 8 years ago • 4 comments

Hi Michal,

I have an input image: input

When I compute keypoints according to article (own implementation) I receive: ft_moja_implementacja

Buy after computing keypoints according to your original version from GitHub I receive: ft_original

Could you please tell why these versions differ and which is better?

zacniewski avatar Dec 10 '17 19:12 zacniewski

Here are bigger pictures. Input: input

Our implementation (with NMS turned off): ft_moja_implementacja

FASText implementation: ft_original

Now, you can see my doubts :)

zacniewski avatar Dec 11 '17 10:12 zacniewski

Hi, Arthur, It is not clear how you obtained images, If you ran provided script python tools/segmentation.py ~/ft2.jpg you will get very different results. (it looks to me that image has been obtained only on 1 scale)

the differences however are mainly of that current implementation is also checking circle pattern corners - so if you will run the detector in full image pyramid, you will get on these provided examples much less keypoints (so generally better working point on ROC curve).

note that your imp. is firing a lot on strait lines.

but anyway - I can not claim that it is better :) - just depend on data and your requirements

MichalBusta avatar Dec 15 '17 16:12 MichalBusta

Hi Michal, You've right. It is obtained on one scale. The first image is an input image, the second is obtained with our code based on your article, and the third is obtained with your code from GitHub. I assume that in our implementation we don't check circle pattern corners, that's why we have a lot of keypoints on straight lines. So, I have two questions:

  • why in your implementation corners are not set as keypoints? Is it because of checking circle pattern corner?
  • where (in code) is aforementioned circle pattern corner implemented?

Best regards Artur

zacniewski avatar Dec 19 '17 18:12 zacniewski

Hi Artur, The keypoints are computed in FASTex.cpp

The rule for output bends (line 245): if( same == 2 && (countR + countAll) > 7 && (countR + countAll) < 10 && countSame < 4 && countSamePrev < 4)

so for the provided example (countR + countAll) < 10 does not hold for corners. If desired (countR + countAll) <= 10 will do.

about the corner - sorry, i was wrong - the corner crossing is commented out ( //int x = getValueCorner12(ptr, pixel, corners, pixelIndex[l], k, maxdist );

All the best, Michal

MichalBusta avatar Dec 21 '17 10:12 MichalBusta