Class FDistort


public class FDistort extends Object

High level interface for rendering a distorted image into another one. Uses a flow style interface to remove much of the drugery.

If you are changing the input images and avoiding declaring new memory then you need to be careful how this class is used. For example, call setRefs(ImageBase, ImageBase) instead of init(ImageBase, ImageBase). Init() will discard the previous settings while with setRefs() it's possible to update only what has changed. Make sure you follow the instructions in setRefs() and browsing the code in this class might help you understand what's going on.

  • Constructor Details

    • FDistort

      public FDistort(ImageBase input, ImageBase output)
      Constructor in which input and output images are specified. Equivalent to calling init(ImageBase, ImageBase)
      input - Input image
      output - output image
    • FDistort

      public FDistort(ImageType inputType)
      inputType - Type of input image
  • Method Details

    • init

      public FDistort init(ImageBase input, ImageBase output)
      Specifies the input and output image and sets interpolation to BILINEAR, black image border, cache is off.
    • setRefs

      public FDistort setRefs(ImageBase input, ImageBase output)
      All this does is set the references to the images. Nothing else is changed and its up to the user to correctly update everything else. If called the first time you need to do the following
       1) specify the interpolation method
       2) specify the transform
       3) specify the border
      If called again and the image shape has changed you need to do the following:
       1) Update the transform
    • input

      public FDistort input(ImageBase input)
      Changes the input image. The previous distortion is thrown away only if the input image has a different shape
    • output

      public FDistort output(ImageBase output)
      Changes the output image. The previous distortion is thrown away only if the output image has a different shape
    • border

      public FDistort border(@Nullable @Nullable ImageBorder border)
      Sets how the interpolation handles borders.
      border - Sets the border. If null then it will skip the border.
    • border

      public FDistort border(BorderType type)
      Sets the border by type.
    • border

      public FDistort border(double value)
      Sets the border to a fixed gray-scale value
    • borderExt

      public FDistort borderExt()

      Sets the border to EXTEND.

    • interp

      public FDistort interp(InterpolatePixelS interpolation)
      used to provide a custom interpolation algorithm

      NOTE: This will force the distorter to be declared again, even if nothing has changed. This only matters if you are being very careful about your memory management.

    • interp

      public FDistort interp(InterpolationType type)
      Specifies the interpolation used by type.
    • interpNN

      public FDistort interpNN()
      Sets interpolation to use nearest-neighbor
    • cached

      public FDistort cached(boolean cached)
      used to turn on and off caching of the distortion
    • transform

      public FDistort transform(PixelTransform<Point2D_F32> outputToInput)
      Used to manually specify a transform. From output to input
    • transform

      public FDistort transform(Point2Transform2_F32 outputToInput)
      Used to manually specify a transform. From output to input
    • affine

      public FDistort affine(double a11, double a12, double a21, double a22, double dx, double dy)
      Affine transform from input to output
    • affine

      public FDistort affine(Affine2D_F64 affine)
    • scale

      public FDistort scale()

      Applies a distortion which will rescale the input image into the output image. You might want to consider using scaleExt() instead since it sets the border behavior to extended, which is probably what you want to do.

      NOTE: Checks to see if it can recycle the previous transform and update it with a new affine model to avoid declaring new memory.
    • scaleExt

      public FDistort scaleExt()
      Scales the image and sets the border to BorderType.EXTENDED. This is normally what you want to do when scaling an image. If you don't use an extended border when you hit the right and bottom boundaries it will go outside the image bounds and if a fixed value of 0 is used it will average towards zero.
    • rotate

      public FDistort rotate(double angleInputToOutput)
      Applies a distortion which will rotate the input image by the specified number of radians.
    • apply

      public FDistort apply()
      Applies the distortion.