Class StitchingFromMotion2D<I extends boofcv.struct.image.ImageBase<I>,​IT extends georegression.struct.InvertibleTransform>


  • public class StitchingFromMotion2D<I extends boofcv.struct.image.ImageBase<I>,​IT extends georegression.struct.InvertibleTransform>
    extends java.lang.Object
    Stitches together sequences of images using ImageMotion2D, typically used for image stabilization and creating mosaics. Internally any motion model in the Homogeneous family can be used. For convenience, those models are converted into a Homography2D_F64 on output. The size of the stitch region is specified using configure(int, int, georegression.struct.InvertibleTransform) which must be called before any images are processed. One of the parameters include an initial transform. The initial transform can be used to scale/translate/other the input image. A sudden change or jump in the shape of the view area can be an indication of a bad motion estimate. If a large jump larger than the user specified threshold is detected then process(boofcv.struct.image.ImageBase) will return false.
    • Constructor Detail

      • StitchingFromMotion2D

        public StitchingFromMotion2D​(ImageMotion2D<I,​IT> motion,
                                     boofcv.alg.distort.ImageDistort<I,​I> distorter,
                                     StitchingTransform<IT> converter,
                                     double maxJumpFraction)
        Provides internal algorithms and tuning parameters.
        Parameters:
        motion - Estimates image motion
        distorter - Applies found transformation to stitch images
        converter - Converts internal model into a homogenous transformation
        maxJumpFraction - If the view area changes by more than this fraction a fault is declared
    • Method Detail

      • configure

        public void configure​(int widthStitch,
                              int heightStitch,
                              IT worldToInit)
        Specifies size of stitch image and the location of the initial coordinate system.
        Parameters:
        widthStitch - Width of the image being stitched into
        heightStitch - Height of the image being stitched into
        worldToInit - (Option) Used to change the location of the initial frame in stitched image. null means no transform.
      • process

        public boolean process​(I image)
        Estimates the image motion and updates stitched image. If it is unable to estimate the motion then false is returned and the stitched image is left unmodified. If false is returned then in most situations it is best to call reset() and start over.
        Parameters:
        image - Next image in the sequence
        Returns:
        True if the stitched image is updated and false if it failed and was not
      • reset

        public void reset()
        Throws away current results and starts over again
      • setOriginToCurrent

        public void setOriginToCurrent()
        Sets the current image to be the origin of the stitched coordinate system. The background is filled with a value of 0. Must be called after process(boofcv.struct.image.ImageBase).
      • resizeStitchImage

        public void resizeStitchImage​(int widthStitch,
                                      int heightStitch,
                                      IT newToOldStitch)
        Resizes the stitch image. If no transform is provided then the old stitch region is simply places on top of the new one and copied. Pixels which do not exist in the old image are filled with zero.
        Parameters:
        widthStitch - The new width of the stitch image.
        heightStitch - The new height of the stitch image.
        newToOldStitch - (Optional) Transform from new stitch image pixels to old stick pixels. Can be null.
      • getWorldToCurr

        public georegression.struct.homography.Homography2D_F64 getWorldToCurr​(georegression.struct.homography.Homography2D_F64 storage)
        Transform from world coordinate system into the current image frame.
        Returns:
        Transformation
      • getWorldToCurr

        public IT getWorldToCurr()
      • getStitchedImage

        public I getStitchedImage()