public class FDistort
extends java.lang.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 and Description |
|---|
FDistort() |
FDistort(ImageBase input,
ImageBase output)
Constructor in which input and output images are specified.
|
FDistort(ImageType inputType)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
FDistort |
affine(georegression.struct.affine.Affine2D_F64 affine) |
FDistort |
affine(double a11,
double a12,
double a21,
double a22,
double dx,
double dy)
Affine transform from input to output
|
void |
apply()
Applies the distortion.
|
FDistort |
border(BorderType type)
Sets the border by type.
|
FDistort |
border(double value)
Sets the border to a fixed gray-scale value
|
FDistort |
border(ImageBorder border)
Sets how the interpolation handles borders.
|
FDistort |
borderExt()
Sets the border to EXTEND.
|
FDistort |
cached(boolean cached)
used to turn on and off caching of the distortion
|
FDistort |
init(ImageBase input,
ImageBase output)
Specifies the input and output image and sets interpolation to BILINEAR, black image border, cache is off.
|
FDistort |
input(ImageBase input)
Changes the input image.
|
FDistort |
interp(InterpolatePixelS interpolation)
used to provide a custom interpolation algorithm
|
FDistort |
interp(TypeInterpolate type)
Specifies the interpolation used by type.
|
FDistort |
interpNN()
Sets interpolation to use nearest-neighbor
|
FDistort |
output(ImageBase output)
Changes the output image.
|
FDistort |
rotate(double angleInputToOutput)
Applies a distortion which will rotate the input image by the specified amount.
|
FDistort |
scale()
Applies a distortion which will rescale the input image into the output image.
|
FDistort |
scaleExt()
Scales the image and sets the border to
BorderType.EXTENDED. |
FDistort |
setRefs(ImageBase input,
ImageBase output)
All this does is set the references to the images.
|
FDistort |
transform(PixelTransform_F32 outputToInput)
Used to manually specify a transform.
|
FDistort |
transform(PointTransform_F32 outputToInput)
Used to manually specify a transform.
|
public FDistort(ImageBase input, ImageBase output)
init(ImageBase, ImageBase)input - Input imageoutput - output imagepublic FDistort(ImageType inputType)
inputType - Type of input imagepublic FDistort()
public FDistort init(ImageBase input, ImageBase output)
public FDistort setRefs(ImageBase input, ImageBase output)
1) specify the interpolation method 2) specify the transform 3) specify the borderIf called again and the image shape has changed you need to do the following:
1) Update the transform
public FDistort input(ImageBase input)
public FDistort output(ImageBase output)
public FDistort border(ImageBorder border)
public FDistort border(BorderType type)
public FDistort border(double value)
public FDistort borderExt()
Sets the border to EXTEND.
public FDistort interp(InterpolatePixelS interpolation)
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.
public FDistort interp(TypeInterpolate type)
public FDistort interpNN()
public FDistort cached(boolean cached)
public FDistort transform(PixelTransform_F32 outputToInput)
public FDistort transform(PointTransform_F32 outputToInput)
public FDistort affine(double a11, double a12, double a21, double a22, double dx, double dy)
public FDistort affine(georegression.struct.affine.Affine2D_F64 affine)
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.
public FDistort scaleExt()
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.public FDistort rotate(double angleInputToOutput)
public void apply()