|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjp2codec.wavelet.synthesis.MultiResImgDataAdapter
jp2codec.quantization.dequantizer.Dequantizer
public abstract class Dequantizer
This is the abstract class from which all dequantizers must inherit. This class has the concept of a current tile and all operations are performed on the current tile.
This class provides default implemenations for most of the methods (wherever it makes sense), under the assumption that the image and component dimensions, and the tiles, are not modifed by the dequantizer. If that is not the case for a particular implementation then the methods should be overriden.
Sign magnitude representation is used (instead of two's complement) for the input data. The most significant bit is used for the sign (0 if positive, 1 if negative). Then the magnitude of the quantized coefficient is stored in the next most significat bits. The most significant magnitude bit corresponds to the most significant bit-plane and so on.
The output data is either in floating-point, or in fixed-point two's complement. In case of floating-point data the the value returned by getFixedPoint() must be 0. If the case of fixed-point data the number of fractional bits must be defined at the constructor of the implementing class and all operations must be performed accordingly. Each component may have a different number of fractional bits.
Field Summary | |
---|---|
protected int[] |
rb
The "range bits" for each transformed component |
protected CBlkQuantDataSrcDec |
src
The entropy decoder from where to get the quantized data (the source). |
protected int[] |
utrb
The "range bits" for each un-transformed component |
Fields inherited from class jp2codec.wavelet.synthesis.MultiResImgDataAdapter |
---|
mressrc, tIdx |
Constructor Summary | |
---|---|
Dequantizer(CBlkQuantDataSrcDec src,
int[] utrb,
DecoderSpecs decSpec)
Initializes the source of compressed data. |
Method Summary | |
---|---|
int |
getNomRangeBits(int n)
Returns the number of bits, referred to as the "range bits", corresponding to the nominal range of the data in the specified component. |
Coord |
getNumCodeBlocks(SubbandSyn sb,
int n,
Coord co)
Returns the number of code-blocks in a subband, along the horizontal and vertical dimensions. |
int |
getPartitionULX()
Returns the horizontal coordinate of the origin of the cell and code-block partition, with respect to the canvas origin, on the reference grid. |
int |
getPartitionULY()
Returns the vertical coordinate of the origin of the cell and code-block partition, with respect to the canvas origin, on the reference grid. |
SubbandSyn |
getSubbandTree(int t,
int c)
Returns the subband tree, for the specified tile-component. |
void |
nextTile()
Advances to the next tile, in standard scan-line order (by rows then columns). |
void |
setTile(int x,
int y)
Changes the current tile, given the new indexes. |
Methods inherited from class jp2codec.wavelet.synthesis.MultiResImgDataAdapter |
---|
getCompHeight, getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompWidth, getHeight, getImgHeight, getImgULX, getImgULY, getImgWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileIdx, getTileOff, getULX, getULY, getWidth |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface jp2codec.wavelet.synthesis.CBlkWTDataSrcDec |
---|
getCodeBlock, getFixedPoint, getInternCodeBlock |
Methods inherited from interface jp2codec.wavelet.synthesis.MultiResImgData |
---|
getCompHeight, getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompWidth, getHeight, getImgHeight, getImgULX, getImgULY, getImgWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileIdx, getTileOff, getULX, getULY, getWidth |
Field Detail |
---|
protected CBlkQuantDataSrcDec src
protected int[] rb
protected int[] utrb
Constructor Detail |
---|
public Dequantizer(CBlkQuantDataSrcDec src, int[] utrb, DecoderSpecs decSpec)
src
- From where to obtain the quantized data.utrb
- The number of "range bits" for each component (must
be the "range bits" of the un-transformed components. For a
definition of "range bits" see the getNomRangeBits() method.getNomRangeBits(int)
Method Detail |
---|
public int getNomRangeBits(int n)
The returned value corresponds to the nominal dynamic range of the reconstructed image data, not of the wavelet coefficients themselves. This is because different subbands have different gains and thus different nominal ranges. To have an idea of the nominal range in each subband the subband analysis gain value from the subband tree structure, returned by the getSubbandTree() method, can be used. See the Subband class for more details.
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.
getNomRangeBits
in interface CBlkWTDataSrcDec
n
- The index of the component
Subband
public SubbandSyn getSubbandTree(int t, int c)
The number of magnitude bits ('magBits' member variable) for each subband may have not been not initialized (it depends on the actual dequantizer and its implementation). However, they are not necessary for the subsequent steps in the decoder chain.
getSubbandTree
in interface InvWTData
t
- The index of the tile, from 0 to T-1.c
- The index of the component, from 0 to C-1.
public int getPartitionULX()
getPartitionULX
in interface InvWTData
public int getPartitionULY()
getPartitionULY
in interface InvWTData
public Coord getNumCodeBlocks(SubbandSyn sb, int n, Coord co)
This default implementation returns the value of the source.
getNumCodeBlocks
in interface CBlkWTDataSrcDec
sb
- The subband for which to return the number of blocks.n
- The component where the subband is.co
- If not null the values are returned in this
object. If null a new object is allocated and returned.
public void setTile(int x, int y)
This default implementation changes the tile in the source and re-initializes properly component transformation variables..
setTile
in interface MultiResImgData
setTile
in class MultiResImgDataAdapter
x
- The horizontal index of the tile.y
- The vertical index of the new tile.public void nextTile()
This default implementation just advances to the next tile in the source and re-initializes properly component transformation variables.
nextTile
in interface MultiResImgData
nextTile
in class MultiResImgDataAdapter
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |