An
OperationDescriptor
describing the "Lookup" operation.
The Lookup operation takes a rendered image and a lookup table, and performs general table lookup by passing the source image through the table. If
ROI or No Data values are set then the lookupTable takes in account this 2 parameters. The out-of-ROI values or No Data values are set to
destination no data.
The source may be a single- or multi-banded image of data types byte
, ushort
, short
, or int
.
The lookup table may be single- or multi-banded and of any DataBuffer supported data types. The destination image must have the same data type as
the lookup table, and its number of bands is determined based on the number of bands of the source and the table. If the source is single-banded,
the destination has the same number of bands as the lookup table; otherwise, the destination has the same number of bands as the source.
If either the source or the table is single-banded and the other one is multi-banded, then the single band is applied to every band of the
multi-banded object. If both are multi-banded, then their corresponding bands are matched up.
The table may have a set of offset values, one for each band. This value is subtracted from the source pixel values before indexing into the table
data array.
It is the user's responsibility to make certain the lookup table supplied is suitable for the source image. Specifically, the table data covers the
entire range of the source data. Otherwise, the result of this operation is undefined.
By the nature of this operation, the destination may have a different number of bands and/or data type from the source. The
SampleModel
of the destination is created in accordance with the actual lookup table used in a specific case.
The destination pixel values are defined by the pseudocode:
- If the source image is single-banded and the lookup table is single- or multi-banded, then the destination image has the same number of bands
as the lookup table:
dst[x][y][b] = table[b][src[x][y][0] - offsets[b]]
- If the source image is multi-banded and the lookup table is single-banded, then the destination image has the same number of bands as the
source image:
dst[x][y][b] = table[0][src[x][y][b] - offsets[0]]
- If the source image is multi-banded and the lookup table is multi-banded, with the same number of bands as the source image, then the
destination image will have the same number of bands as the source image:
dst[x][y][b] = table[b][src[x][y][b] - offsets[b]]
Resource List
Name |
Value |
GlobalName |
Lookup |
LocalName |
Lookup |
Vendor |
it.geosolutions.jaiext |
Description |
Lookup operation supporting ROI and No Data. |
DocURL |
Not defined |
Version |
1.0 |
arg0Desc |
The lookup table to use. |
arg1Desc |
Destination No Data used for ROI or No Data. |
arg2Desc |
ROI object used. |
arg3Desc |
No Data Range used. |
arg4Desc |
Boolean checking if ROI RasterAccessor is used. |
Parameter List
Name |
Class Type |
Default Value |
table |
it.geosolutions.jaiext.lookup.LookupTable |
NO_PARAMETER_DEFAULT |
destinationNoData |
Double |
0 |
ROI |
javax.media.jai.ROI |
NO_PARAMETER_DEFAULT |
NoData |
it.geosolutions.jaiext.range.Range |
NO_PARAMETER_DEFAULT |
useRoiAccessor |
Boolean |
false |