Package jj2000.j2k.image.forwcomptransf
Class ForwCompTransf
java.lang.Object
jj2000.j2k.image.ImgDataAdapter
jj2000.j2k.image.forwcomptransf.ForwCompTransf
- All Implemented Interfaces:
BlkImgDataSrc,ImgData
This class apply component transformations to the tiles depending
on user specifications. These transformations can be used to
improve compression efficiency but are not related to colour
transforms used to map colour values for display purposes. JPEG
2000 part I defines 2 component transformations: RCT (Reversible
Component Transformation) and ICT (Irreversible Component
Transformation).
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intIdentifier for the Forward Irreversible Component Transformation (FORW_ICT).static final intIdentifier for the Forward Reversible Component Transformation (FORW_RCT).static final intIdentifier for no component transformation.static final charThe prefix for component transformation type: 'M'Fields inherited from class jj2000.j2k.image.ImgDataAdapter
imgdatasrc, tIdx -
Constructor Summary
ConstructorsConstructorDescriptionForwCompTransf(BlkImgDataSrc imgSrc, J2KImageWriteParamJava wp) Constructs a new ForwCompTransf object that operates on the specified source of image data. -
Method Summary
Modifier and TypeMethodDescriptionstatic int[]calcMixedBitDepths(int[] ntdepth, int ttype, int[] tdepth) Calculates the bitdepths of the transformed components, given the bitdepth of the un-transformed components and the component tranformation type.getCompData(DataBlk blk, int c) Apply forward component transformation associated with the current tile.intgetFixedPoint(int c) Returns the position of the fixed point in the specified component.getInternCompData(DataBlk blk, int c) Apply the component transformation associated with the current tile.intgetNomRangeBits(int c) Returns the number of bits, referred to as the "range bits", corresponding to the nominal range of the data in the specified component and in the current tile.static String[][]Returns the parameters that are used in this class and implementing classes.booleanReturns true if this transform is reversible in current tile.voidnextTile()Advances to the next tile, in standard scan-line order (by rows then columns).voidsetTile(int x, int y) Changes the current tile, given the new indexes.toString()Returns a string with a descriptive text of which forward component transformation is used.Methods inherited from class jj2000.j2k.image.ImgDataAdapter
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompULX, getCompULY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidthMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface jj2000.j2k.image.ImgData
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompULX, getCompULY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth
-
Field Details
-
NONE
public static final int NONEIdentifier for no component transformation. Value is 0.- See Also:
-
FORW_RCT
public static final int FORW_RCTIdentifier for the Forward Reversible Component Transformation (FORW_RCT). Value is 1.- See Also:
-
FORW_ICT
public static final int FORW_ICTIdentifier for the Forward Irreversible Component Transformation (FORW_ICT). Value is 2- See Also:
-
OPT_PREFIX
public static final char OPT_PREFIXThe prefix for component transformation type: 'M'- See Also:
-
-
Constructor Details
-
ForwCompTransf
Constructs a new ForwCompTransf object that operates on the specified source of image data.- Parameters:
imgSrc- The source from where to get the data to be transformedwp- The encoder specifications- See Also:
-
-
Method Details
-
getFixedPoint
public int getFixedPoint(int c) Returns the position of the fixed point in the specified component. This is the position of the least significant integral (i.e. non-fractional) bit, which is equivalent to the number of fractional bits. For instance, for fixed-point values with 2 fractional bits, 2 is returned. For floating-point data this value does not apply and 0 should be returned. Position 0 is the position of the least significant bit in the data.This default implementation assumes that the number of fractional bits is not modified by the component mixer.
- Specified by:
getFixedPointin interfaceBlkImgDataSrc- Parameters:
c- The index of the component.- Returns:
- The value of the fixed point position of the source since the color transform does not affect it.
-
getParameterInfo
Returns the parameters that are used in this class and implementing classes. It returns a 2D String array. Each of the 1D arrays is for a different option, and they have 4 elements. The first element is the option name, the second one is the synopsis, the third one is a long description of what the parameter is and the fourth is its default value. The synopsis or description may be 'null', in which case it is assumed that there is no synopsis or description of the option, respectively. Null may be returned if no options are supported.- Returns:
- the options name, their synopsis and their explanation, or null if no options are supported.
-
calcMixedBitDepths
public static int[] calcMixedBitDepths(int[] ntdepth, int ttype, int[] tdepth) Calculates the bitdepths of the transformed components, given the bitdepth of the un-transformed components and the component tranformation type.- Parameters:
ntdepth- The bitdepth of each non-transformed components.ttype- The type ID of the component transformation.tdepth- If not null the results are stored in this array, otherwise a new array is allocated and returned.- Returns:
- The bitdepth of each transformed component.
-
toString
Returns a string with a descriptive text of which forward component transformation is used. This can be either "Forward RCT" or "Forward ICT" or "No component transformation" depending on the current tile. -
getNomRangeBits
public int getNomRangeBits(int c) Returns the number of bits, referred to as the "range bits", corresponding to the nominal range of the data in the specified component and in the current tile. If this number is b then for unsigned data the nominal range is between 0 and 2^b-1, and for signed data it is between -2^(b-1) and 2^(b-1)-1. Note that this value can be affected by the multiple component transform.- Specified by:
getNomRangeBitsin interfaceImgData- Overrides:
getNomRangeBitsin classImgDataAdapter- Parameters:
c- The index of the component.- Returns:
- The bitdepth of component 'c' after mixing.
-
isReversible
public boolean isReversible()Returns true if this transform is reversible in current tile. Reversible component transformations are those which operation can be completely reversed without any loss of information (not even due to rounding).- Returns:
- Reversibility of component transformation in current tile
-
getCompData
Apply forward component transformation associated with the current tile. If no component transformation has been requested by the user, data are not modified.This method calls the getInternCompData() method, but respects the definitions of the getCompData() method defined in the BlkImgDataSrc interface.
- Specified by:
getCompDatain interfaceBlkImgDataSrc- Parameters:
blk- Determines the rectangular area to return, and the data is returned in this object.c- Index of the output component.- Returns:
- The requested DataBlk
- See Also:
-
getInternCompData
Apply the component transformation associated with the current tile. If no component transformation has been requested by the user, data are not modified. Else, appropriate method is called (forwRCT or forwICT).- Specified by:
getInternCompDatain interfaceBlkImgDataSrc- Parameters:
blk- Determines the rectangular area to return.c- Index of the output component.- Returns:
- The requested DataBlk
- See Also:
-
forwRCT(jj2000.j2k.image.DataBlk, int)forwICT(jj2000.j2k.image.DataBlk, int)
-
setTile
public void setTile(int x, int y) Changes the current tile, given the new indexes. An IllegalArgumentException is thrown if the indexes do not correspond to a valid tile.This default implementation changes the tile in the source and re-initializes properly component transformation variables..
- Specified by:
setTilein interfaceImgData- Overrides:
setTilein classImgDataAdapter- Parameters:
x- The horizontal index of the tile.y- The vertical index of the new tile.
-
nextTile
public void nextTile()Advances to the next tile, in standard scan-line order (by rows then columns). An NoNextElementException is thrown if the current tile is the last one (i.e. there is no next tile).This default implementation just advances to the next tile in the source and re-initializes properly component transformation variables.
- Specified by:
nextTilein interfaceImgData- Overrides:
nextTilein classImgDataAdapter
-