cv
cv copied to clipboard
SIFT
The patents on SIFT have recently expired and we can now do a Rust implementation of the algorithm. This algorithm is a detector and descriptor which is known for its high robustness. Currently we have AKAZE, but we would want to use this when doing non real-time tasks to maximize matching accuracy.
Hi there! This project looks really neat. Do you have an idea for when might SIFT be available? Or if you'd like others to contribute, I don't mind trying :)
@aalekhpatel07 You can absolutely contribute a SIFT detector. Right now we don't have proper abstractions for feature detectors and extractors, however that shouldn't stop you from implementing it if you would like. AKAZE is currently used directly in cv-sfm
and vslam-sandbox
, so everything currently assumes akaze. The primary abstraction there is that it works entirely with binary features and the ImagePoint
trait today. Theoretically, we could also binarize SIFT features as well using various techniques, and then it would fit into the pipeline nicely, but that is a nice-to-have. Initially, just being able to extract the SIFT features and draw them as an option with the kpdraw
crate would be fantastic.
If you would like to start working on this, feel free to create a working draft PR on this repository with the new crate added. It seems that the name sift
is taken. We could just use cv-sift
and that would work fine. We also could use ORB features (which are simpler to implement) as well if you would be interested, but I think that SIFT is needed the most.
Let me know if you need any help. I am always available in the Rust CV discord (see the URL at the top of the main org page: https://github.com/rust-cv).
@vadixidav Thanks for the detailed explanation! I'd be more than thrilled to work on SIFT. Recently, I came across a neat and clean Numpythonic implementation of SIFT that I hope to use as a guide. I'd like to be honest and disclose I'm no expert (barely even an amateur in Rust) but the concepts fascinate me and I love the language. This particular task will be daunting but a very rewarding/frustrating adventure for me and I will gladly get my hands dirty!