Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doubts on computing keypoints #33

Open
zacniewski opened this issue Dec 10, 2017 · 4 comments
Open

Doubts on computing keypoints #33

zacniewski opened this issue Dec 10, 2017 · 4 comments

Comments

@zacniewski
Copy link

zacniewski commented Dec 10, 2017

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
Copy link
Author

zacniewski commented Dec 11, 2017

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 :)

@MichalBusta
Copy link
Owner

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

@zacniewski
Copy link
Author

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

@MichalBusta
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants