opencv_contrib
opencv_contrib copied to clipboard
Proposing a parallel Hessian-Affine detector + SIFT descriptor
System information (version)
- OpenCV => 3.2.0
- Operating System / Platform => Ubuntu
- Compiler => icpc/gcc
Detailed description
I have never contributed to OpenCV, so sorry if this issue makes not much sense.
Developing my application, I've noticed how Hessian-Affine detector and SIFT descriptors gives incredible results compared to cv::xfeatures2d::SIFT and cv::xfeatures2d::SURF.
I'm using this implementation for this kind of detector/descriptor. However, I noticed also that's very slow compared to SURF (almost 10 times slower), and that's partially because it's a serial implementation.
What I would like to do is to implement a parallel version of this code and propose it as detector+descriptor for OpenCV. I've seen that something similar has been tried a long time ago here, but there are no recent news about it.
I ask you if this could be useful or meaningful for OpenCV. However, since I'm not a computer vision expert (I'm a parallel guy) it would be not easy to re-adapt the linked code to actual OpenCV. For example, the linked code implement SIFT description and I don't if it can be simply replaced by SIFT description from OpenCV.
I think that a lot of people would be happy to have a fast and precise descriptor like this one. Again, I'm not a computer vision expert, but I am with parallel systems and I'm very enthusiastic about this.
Steps to reproduce
@lovaj all new functionality is useful and welcome in OpenCV, certainly when it relates to keypoint detectors and descriptors, which are being used in several applications. However you first shot should be to find someone with OpenCV experience to work with you on this, since you say yourself, you have almost no computer vision experience.
Another way could be to add a PR with stubbed code (for the parts you do not know yet how to get in) and hope someone with interest comes along.
in how far is this different to https://github.com/opencv/opencv_contrib/pull/933 ?
Am I wrong, but hessian-affiine gives different performance from harris-affine?
Best Regards, Luca Lovagnini
On Wed, May 31, 2017 at 1:50 AM, Pavel Rojtberg [email protected] wrote:
in how far is this different to #933 https://github.com/opencv/opencv_contrib/pull/933
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/opencv/opencv_contrib/issues/1116#issuecomment-305041113, or mute the thread https://github.com/notifications/unsubscribe-auth/ALJEiFZ48oGQmmhz6aNYeMkHN6R-ujJAks5r_KtggaJpZM4M6HJp .
I think @paroj is actually interested in what is so different in performance. If it is not extremely better, then why bother to integrate it.
@paroj and @StevenPuttemans aren't them different algorithms? #933 is https://en.wikipedia.org/wiki/Harris_affine_region_detector and the proposal here is https://en.wikipedia.org/wiki/Hessian_affine_region_detector
Also some note here that according this article: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.157.4126&rep=rep1&type=pdf these features can work together:
These methods typically provide complementary features to the ones discussed in the previous chapter
@LucaLovagnini Are you still implementing this? It is been 8 months by now...
BTW: As pointed by @oqtvs here, we do not need the whole implementation, but rather pyramid.cpp
file. In fact, it is OK for a start to include Hessian-laplace algorithm file.
If you do not mind, I think I will PR the original implementation within few months or so, and perhaps you can propose your parallel version at your own pace. I expect you to say something soon if you have a problem with that...
if It doesn't have any progress, I've partially refactor it through modern c++, which is this. if converting this code to opencv manner is worth-while, I'll do it. Furthermore, I could try make it to parallel. please reply :)