For this project the objective is to incorporate the sGLOH (scale-invariant Gradient Location and Orientation Histogram) descriptor into the OpenCV environment, employing C++ as our coding language. This project will implement and evaluate the sGLOH descriptor and its performance compared to SIFT (Scale-Invariant Feature Transform) approach, which constitutes our benchmark for assessment.
The Report covering the details of this project is in the main repository titled CSS587_Computer_Vision_Project_sGLOH2
Demo Video: https://www.youtube.com/watch?v=DWoCIwm22bk
This project requires OpenCV 4.0 with the contributors package installed to be installed on your system. There are two possible scenarios:
- OpenCV is installed on your main system.
- OpenCV is installed using vcpkg.
Instructions to install OpenCV from source
Instructions to install OpenCV with vcpkg
You can proceed with the project as is. The CMakeLists.txt file is already set up to find your OpenCV installation.
You need to adjust the toolchain file path in the CMakeLists.txt file to match your vcpkg installation path.
Here's how you can do it:
- Open the CMakeLists.txt file.
- Locate the line that sets the CMAKE_TOOLCHAIN_FILE variable.
- Replace "/home/user/tools/vcpkg/scripts/buildsystems/vcpkg.cmake" with the path to the vcpkg.cmake file in your vcpkg installation.
The updated line should look something like this:
set(CMAKE_TOOLCHAIN_FILE "/path/to/your/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
Replace "/path/to/your/vcpkg" with the actual path to your vcpkg installation.
After updating the CMakeLists.txt file, you can proceed with the project as usual.
- Open a terminal in the project directory.
- Create a new directory for the build files:
mkdir build
cd build
- Run CMake to generate the build files:
cmake ..
- Build the project:
make
This will create an executable named sGLOH_opencv
in the build directory. You can run it with:
./sGLOH_opencv
Please note that these instructions assume you're using a Unix-like operating system. If you're using Windows, the commands might be slightly different.
This work is based on the following paper:
Bellavia, Fabio, and Carlo Colombo. "Rethinking the sGLOH descriptor." IEEE Transactions on Pattern Analysis and Machine Intelligence 40.4 (2017): 931-944. Rethinking the sGLOH descriptor
Bellavia, Fabio, Domenico Tegolo, and Emanuele Trucco. "Improving SIFT-based descriptors stability to rotations." 2010 20th International Conference on Pattern Recognition. IEEE, 2010. Improving SIFT-based descriptors stability to rotations
Links: View Paper: https://www.overleaf.com/read/hmkghydpbrnm