Class FDistort
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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionaffine
(double a11, double a12, double a21, double a22, double dx, double dy) Affine transform from input to outputaffine
(Affine2D_F64 affine) apply()
Applies the distortion.border
(double value) Sets the border to a fixed gray-scale valueborder
(@Nullable ImageBorder border) Sets how the interpolation handles borders.border
(BorderType type) Sets the border by type.Sets the border to EXTEND.cached
(boolean cached) used to turn on and off caching of the distortionSpecifies the input and output image and sets interpolation to BILINEAR, black image border, cache is off.Changes the input image.interp
(InterpolatePixelS interpolation) used to provide a custom interpolation algorithminterp
(InterpolationType type) Specifies the interpolation used by type.interpNN()
Sets interpolation to use nearest-neighborChanges the output image.rotate
(double angleInputToOutput) Applies a distortion which will rotate the input image by the specified number of radians.scale()
Applies a distortion which will rescale the input image into the output image.scaleExt()
Scales the image and sets the border toBorderType.EXTENDED
.All this does is set the references to the images.transform
(PixelTransform<Point2D_F32> outputToInput) Used to manually specify a transform.transform
(Point2Transform2_F32 outputToInput) Used to manually specify a transform.
-
Constructor Details
-
FDistort
Constructor in which input and output images are specified. Equivalent to callinginit(ImageBase, ImageBase)
- Parameters:
input
- Input imageoutput
- output image
-
FDistort
Constructor- Parameters:
inputType
- Type of input image
-
-
Method Details
-
init
Specifies the input and output image and sets interpolation to BILINEAR, black image border, cache is off. -
setRefs
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 following1) 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
Changes the input image. The previous distortion is thrown away only if the input image has a different shape -
output
Changes the output image. The previous distortion is thrown away only if the output image has a different shape -
border
Sets how the interpolation handles borders.- Parameters:
border
- Sets the border. If null then it will skip the border.
-
border
Sets the border by type. -
border
Sets the border to a fixed gray-scale value -
borderExt
Sets the border to EXTEND.
-
interp
used to provide a custom interpolation algorithmNOTE: 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
Specifies the interpolation used by type. -
interpNN
Sets interpolation to use nearest-neighbor -
cached
used to turn on and off caching of the distortion -
transform
Used to manually specify a transform. From output to input -
transform
Used to manually specify a transform. From output to input -
affine
Affine transform from input to output -
affine
-
scale
Applies a distortion which will rescale the input image into the output image. You might want to consider using
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()
instead since it sets the border behavior to extended, which is probably what you want to do. -
scaleExt
Scales the image and sets the border toBorderType.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
Applies a distortion which will rotate the input image by the specified number of radians. -
apply
Applies the distortion.
-