Monocular video based Mosaic Generation System for mobile robots. Currently under development as part of undergrad project of Víctor García
mosaic is a free and open source software licensed under the GNU GPLv3.0 License, unless otherwise specified in particular modules or libraries (see LICENSE and README.md).
- core Main project for automated mosaic build (Results, usage examples, build tutorial).
- fcomp Feature extractors and matchers comparison (extractors: SIFT, SURF, ORB, KAZE. matchers: Brute force, Flann)
- stitch Image warping and stitching
Each module contains information describing its usage, with (usually) some useful README file. Code documentation is expected to be provided in Doxygen-compatible format. The current release contains C/C++ implementation.
├── src # source files
└── ...
├── include # header files
└── ...
├── modules
\ ├── fcomp # module for festure extractor comparison
├── src # source files
├── include # header files
└── ...
\ ├── stitch # module for image stitching
├── src # source files
├── include # header files
└── ...
The current release has been developed and tested in Ubuntu 16.04 LTS 64 bits
- OpenCV 4.2+ and extra modules (OpenCV contrib).
- cmake 3.1X - cmake making it happen again
CUDA support is available (still in beta)
To start using this project, proceed to the standard clone procedure:
cd <some_directory>
git clone https://github.com/MecatronicaUSB/mosaic.git
Provided with this module, there is a CMakeLists.txt file, which you can use to directly compile the code as follows:
cd <mosaic-opencv_directory>
mkdir build
cd build
cmake ..
make
If you want to enable (still in beta) CUDA support, please add the USE_CUDA flag when invoking cmake:
cmake -DUSE_CUDA=1 ..
The input data must be a folder path containing at least two temporal consecutive frames, with at least 30% of overlap area between them.
After compilation, run the program with the following syntax:
./mosaic [INPUT DIRECTORY] [OUTPUT DIRECTORY] {OPTIONS}
To see detailed usage information, enter the following command:
./mosaic -h
./mosaic /home/data/<path-of-frames> /home/data/<output-path> -o -g -n 3
The above code will build a mosaic using perspective transformations, to find the best seam line a graph cut algorithm wil be used, then a multiband blender with 3 bands will be applied. Finally the resulting mosaic will be shown.
./mosaic /home/data/<path-of-frames> /home/data/<output-path> -e --sift --bf --scb
The above code will build a mosaic using euclidean transformations, the SCB algorithm will be applied on each frame to enhance final mosaic view, SIFT detector and BruteForce matcher are used.
In both cases the resulting mosaic and track map will be saved in the provided outpt path.
- Graph cut seam finder.
- multiband blender with five bands.
- CLAHE (in BGR).
- 87 images input.
- Perspective transformations.
- Right. Final Map.
ScottReef 25 dataset from ACFR.
- 177 Images input.
- Euclidean transformations.
- Right. Mosaic map, in pixels.
Summary of contributing guidelines (based on those of OpenCV project):
- One pull request per issue;
- Choose the right base branch;
- Include tests and documentation;
- Use small datasets for testing purposes;
- Follow always the same coding style guide. If possible, apply code formating with any IDE.
Copyright (c) 2017-2018 Grupo de Investigación y Desarrollo en Mecatrónica (mecatronica@usb.ve). Released under the GNU GPLv3.0 License.