- Complete automatic workflow for image alignment and stitching
- Feature detection and matching
- Automatic multi-image matching
- Global optimization (Bundle adjustment)
- Color calibration
- Image blending
- Each feature can be used separately, collection of useful algorithms
- Support for embedding in UI
- 16-bit color depth support
- Supports over 50 image formats including JPEG 2000, HD Photo, HDR formats and RAW camera formats
- Multi-core parallel processing support
- Parallel image processing
- Easy to use heterogeneous computing (multi-core CPUs, CUDA GPUs, OpenCL)
- Demos and command-line application included
- Compatible with .NET 4.0/4.5, 100% managed code (C#)
- Both 32-bit and 64-bit, strong-named, digitally signed DLL
- Full feature list...
Automatic image stitching
SharpStitch is able to align and blend images from scans, microscopes, aerial photography and handheld cameras (rotational panoramas). Parametric motion can be restricted to 3D rotation, skewing, scaling, rotation or just pure translation.
Feature detection and matching
Feature detection is robust to rotation, scale changes and blur. It is also partially robust to viewpoint changes and JPEG artifacts. Detected features are "described" with vectors of numbers so they can be matched. Each feature is also given information about its orientation, scale, strength and image gradients. Number of features can be limited by various methods including Adaptive Non-Maximal Suppression (ANMS).
SharpStitch includes reliable methods for translation, isometry, similarity, affine, rotation and homography estimation. The estimation makes use of robust estimation combined with nonlinear refinement and guided matching.
Automatic multi-image matching
Both feature matching and multi-image matching is performed on pre-filtered sets of corresponding feature pairs and the results are further checked to remove false positives. SharpStitch is able to process unordered sets of images and find mosaics in them.
Global optimization (Bundle adjustment)
SharpStitch can refine image positions and other parameters jointly for the whole mosaic. Any possible misregistration errors are smoothed out with this process.
Photometric calibration parameters can be computed and applied to images to reduce effects of automatic exposure, vignetting and other effects. Calibration also improves blending by removing banding artifacts caused by strong vignetting and abrupt low frequency changes (e.g. when sky color changes abruptly due to exposure variation).
Rotational mosaics have curved appearance when taken by handheld cameras or using tripods which are even slightly tilted. This effect can be removed in SharpStitch by computing and applying global rotation (additional rotation of the whole mosaic can be further specified by the user).
SharpStitch provides various blending algorithms for different purposes. Image overlaps can be simply stacked on top of each other, averaged or blended with multiband (pyramid) blending algorithm. Blending masks can be constant (each image is given same weight at any place), transitional or seam-based. The seams are computed such that they minimize differences between images.
This can handle complicated mosaics consisting of moving objects.
Collection of useful algorithms
We have implemented a collection of helper algorithms in SharpStitch. Most of them are general-purpose and you can use them for your own tasks. These algorithms include:
- Fast approximate nearest-neighbor searching
- Fast max-flow/min-cut algorithm
- Levenberg-Marquardt nonlinear unconstrained optimization
- Finding largest inscribed rectangle for automatic cropping of image mosaics
- Template matching
- Distance Transform, Fast Watershed Transform
- and more...
Support for embedding in UI
SharpStitch library contains classes wrapping the entire stitching process. They support asynchronous processing on background, progress reporting and cancellation.
The demo package contains sample Windows Forms application demonstrating image stitching on UI.