ImageProcessor is a helper class for preprocessing and postprocessing TensorImage. It
could transform a TensorImage to another by executing a chain of ImageOperator.
Example Usage:
ImageProcessor processor = new ImageProcessor.Builder()
.add(new ResizeOp(224, 224, ResizeMethod.NEAREST_NEIGHBOR)
.add(new Rot90Op())
.add(new NormalizeOp(127.5f, 127.5f))
.build();
TensorImage anotherTensorImage = processor.process(tensorImage);
WARNING: Instances of an ImageProcessor are not thread-safe with updateNumberOfRotations(int). Updating the number of rotations and then processing images (using
SequentialProcessor.process(T)) must be protected from concurrent access. It is recommended to create separate
ImageProcessor instances for each thread. If multiple threads access a ImageProcessor concurrently, it must be synchronized externally.
Nested Classes
| class | ImageProcessor.Builder | The Builder to create an ImageProcessor, which could be executed later. | |
Public Methods
| RectF |
inverseTransform(RectF rect, int inputImageHeight, int inputImageWidth)
Transforms a rectangle from coordinates system of the result image back to the one of the input
image.
|
| PointF |
inverseTransform(PointF point, int inputImageHeight, int inputImageWidth)
Transforms a point from coordinates system of the result image back to the one of the input
image.
|
| TensorImage | |
| void |
updateNumberOfRotations(int k)
Updates the number of rotations for the first
Rot90Op in this ImageProcessor. |
| synchronized void |
updateNumberOfRotations(int k, int occurrence)
|
Inherited Methods
Public Methods
public RectF inverseTransform (RectF rect, int inputImageHeight, int inputImageWidth)
Transforms a rectangle from coordinates system of the result image back to the one of the input image.
Parameters
| rect | the rectangle from the result coordinates system. |
|---|---|
| inputImageHeight | the height of input image. |
| inputImageWidth | the width of input image. |
Returns
- the rectangle with the coordinates from the coordinates system of the input image.
public PointF inverseTransform (PointF point, int inputImageHeight, int inputImageWidth)
Transforms a point from coordinates system of the result image back to the one of the input image.
Parameters
| point | the point from the result coordinates system. |
|---|---|
| inputImageHeight | the height of input image. |
| inputImageWidth | the width of input image. |
Returns
- the point with the coordinates from the coordinates system of the input image.
public TensorImage process (TensorImage image)
Processes a TensorImage object with prepared TensorOperator.
Parameters
| image |
|---|
Throws
| IllegalArgumentException | if the image is not supported by any op. |
|---|
public void updateNumberOfRotations (int k)
Updates the number of rotations for the first Rot90Op in this ImageProcessor.
WARNING:this method is not thread-safe. Updating the number of rotations and
then processing images (using SequentialProcessor.process(T)) must be protected from concurrent access with
additional synchronization.
Parameters
| k | the number of rotations |
|---|
Throws
| IllegalStateException | if Rot90Op has not been added to this ImageProcessor
|
|---|
public synchronized void updateNumberOfRotations (int k, int occurrence)
Updates the number of rotations for the Rot90Op specified by occurrence in this
ImageProcessor.
WARNING:this method is not thread-safe. Updating the number of rotations and
then processing images (using SequentialProcessor.process(T)) must be protected from concurrent access with
additional synchronization.
Parameters
| k | the number of rotations |
|---|---|
| occurrence | the index of perticular Rot90Op in this ImageProcessor. For
example, if the second Rot90Op needs to be updated, occurrence should be
set to 1. |
Throws
| IndexOutOfBoundsException | if occurrence is negative or is not less than the
number of Rot90Op in this ImageProcessor |
|---|---|
| IllegalStateException | if Rot90Op has not been added to this ImageProcessor
|