SharpStitch Features

Technical list of the major SharpStitch .NET library features

Automatic image stitching consists of several steps and sub-steps. With SharpStitch, each step can be executed separately or chained as needed. Each step is also represented by an abstract class with multiple implementations. You can use the default one, adjust parameters, switch to other implementation or even provide a custom implementation:


  • Feature detection
    • Keypoint detection
    • Keypoint description
    • Keypoint filtering
  • Feature matching (Correspondence matching)
    • Nearest-neighbor searching
    • Correspondence filtering
  • Mosaic recognition
    • Transform estimation
    • Image matching
  • Path finding (computing optimal ordering of images for rendering)
  • Global optimization (Bundle adjustment)
  • Image calibration
  • Rendering
    • Projection
    • Blending mask computation
    • Blending

List Of Major Features

Feature Description Implementations
Keypoint detection Robust scale-invariant and rotation-invariant interest point detector. Also robust to blurring and JPEG artifacts. Improved detector based on Harris corners
Keypoint description Each interest point is described by a vector. Descriptors are normalized for brightness, contrast and rotation changes. Intensity-based descriptor Gradient-based descriptor
Keypoint filtering Filtering selects only most distinctive interest points. Maximum filter Area filter Adaptive Non-Maximal Suppression (ANMS)
Nearest-neighbor searching Performs exact or fast approximate high-dimensional nearest-neighbor search. Distance metric can be SSD (Sum of Squared Differences) or NCC (Normalized Cross-Correlation) Linear search KD-Tree BBF (Best-Bin-First) search
Correspondence filtering Keeps most of the putative keypoint correspondences while filtering out false positives. Filtering based on first and second nearest neighbor ratio.
Transform estimation Transforms between images are found using estimator and aTransform class. Transform parameters can be refined with nonlinear estimation and guided matching. Simple estimation based on all correspondences Robust estimation based on RANSAC (RANdom SAmple Consensus)
Image matching Image mosaic graph is constructed by finding corresponding images. Pairs of corresponding images can be provided by the user or detected automatically. False positives are discarded using bayesian statistical check. Pairwise matching Automatic multi-image matching
Path finding Finds an optimal image ordering (path) from a general mosaic graph. Images are then rendered in this order. Simple path taking first match from each image Path constructed from a minimum spanning tree (from best matching image to the least matching)
Global optimization Image transforms are put in the same context by either chaining image-to-image transforms or a method of bundle adjustment (global nonlinear unconstrained optimization) is used. This refines transform parameters of all images jointly. Global optimization can refine focal length parameter in rotational mosaics as well. Adding image-to-image transforms sequentially Bundle adjustment
Image calibration Photometric calibration for nonlinear distortions is applied to each image for smoother transitions in the stitched mosaic. Gain compensation Linear and radial light falloff correction Exposure and vignetting correction
Projection Image mosaic can be renderer on plane or spherical surface. Projection is required for the latter case. Output mosaic size is computed with respect to image sizes and the maximum distortion allowed for the given projection. Planar projection Cylindrical projections Spherical projection Stereographic projection
Blending mask computation Blending mask is computed for each overlap area between image and mosaic to resolve which pixels should belong to image and which to the mosaic. The mask can be flat to visualize overlaps (as if the images are semi-transparent) or a graphcut-based optimization is used to find minimum energy seam to completely hide misregistrations and moving objects. Constant mask Distance-based feathering mask Optimal seam masks
Blending Images are blended together using a computed blending mask and a blending algorithm. No blending (images are placed on top of each other) Weighted averaging Two-band blending Multiband blending (Multiresolution pyramid blending)
Automatic straightening Aligns rotational mosaics with horizon and effectively removes wavy effect or tilt caused by handheld capture or tilted tripods. Realized via Rotation class
Template matching Direct matching can be used instead of feature-based. This have a benefit of avoiding feature extraction and correspondence matching steps and some robustness in small and noisy images. Template matching can be used for detecting translation transforms with sub-pixel accuracy. Realized via TemplateMatchingclass


List Of Useful Classes Provided By SharpStitch

Feature Description Implementations
Fov Stores angular field of view (both horizontal and vertical). Allows combining multiple FOVs or estimating focal length from one or more homography matrices. see Fov
KdTree KD Tree implementation which can be used for general purpose nearest neighbor searching. Supports both exact and approximate near neighbor search. see KdTree
Mosaic This is the central object containing all the results computed in the stitching process except for the rendered output. It contains information about keypoints, correspondences, mosaic graph structure, transforms, calibration data and so on.
PictureProvider Loads images on demand from custom source. Using cached images Using original image files Using in-memory bitmaps
Projection Allows composite transform from image coordinates to final rendering coordinates. Planar projection Cylindrical projections Spherical projection Stereographic projection
Rotation Represents a 3D rotation transform. There are multiple representations depending on usage. Euler angles (pan, tilt, roll) Exponential map
StitchingJob Implements entire image stitching workflow. Supports background processing, progress reporting and cancellation. Different implementations can be used for different scenarios (e.g. stitching images from microscope, panoramic mosaic stitching). General stitching (general mosaics) Shift stitching (purely translational mosaics)
Transform Represents a transform in homogeneous coordinates. Supports transform parameter estimation (e.g. homography estimation) and conversion to and from transformation matrix. Translation Isometric Similarity Affine Rotation (3D) Projective
Matrix Represents a 3×3 matrix with various operations (inverse, determinant etc.). Every transform in SharpStitch can be represented by this matrix.
Point Represents a point in homogenous coordinates. Supports various 3-vector operations.

Additionally, SharpStitch has an extensive HDR and tone mapping support.

Download SharpStitch free 60-day trial package


Have a project in mind? Contact us to see how can we help!

Contact Us