| java.lang.Object jj2000.j2k.wavelet.synthesis.MultiResImgDataAdapter jj2000.j2k.quantization.dequantizer.Dequantizer
All known Subclasses: jj2000.j2k.quantization.dequantizer.StdDequantizer,
Dequantizer | abstract public class Dequantizer extends MultiResImgDataAdapter implements CBlkWTDataSrcDec(Code) | | 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.
|
Constructor Summary | |
public | Dequantizer(CBlkQuantDataSrcDec src, int utrb, DecoderSpecs decSpec) Initializes the source of compressed data.
Parameters: src - From where to obtain the quantized data. Parameters: rb - The number of "range bits" for each component (must be the"range bits" of the un-transformed components. |
Method Summary | |
public int | getCbULX() Returns the horizontal code-block partition origin. | public int | getCbULY() Returns the vertical code-block partition origin. | 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.
The returned value corresponds to the nominal dynamic range of the
reconstructed image data, not of the wavelet coefficients
themselves. | public static String[][] | getParameterInfo() Returns the parameters that are used in this class and
implementing classes. | public SubbandSyn | getSynSubbandTree(int t, int c) Returns the subband tree, for the specified tile-component. | public void | nextTile() Advances to the next tile, in standard scan-line order (by rows then
columns). | public void | setTile(int x, int y) Changes the current tile, given the new indexes. |
OPT_PREFIX | final public static char OPT_PREFIX(Code) | | The prefix for dequantizer options: 'Q'
|
rb | protected int rb(Code) | | The "range bits" for each transformed component
|
utrb | protected int utrb(Code) | | The "range bits" for each un-transformed component
|
Dequantizer | public Dequantizer(CBlkQuantDataSrcDec src, int utrb, DecoderSpecs decSpec)(Code) | | Initializes the source of compressed data.
Parameters: src - From where to obtain the quantized data. Parameters: rb - 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. See Also: Dequantizer.getNomRangeBits |
getCbULX | public int getCbULX()(Code) | | Returns the horizontal code-block partition origin. Allowable values
are 0 and 1, nothing else.
|
getCbULY | public int getCbULY()(Code) | | Returns the vertical code-block partition origin. Allowable values are
0 and 1, nothing else.
|
getNomRangeBits | public int getNomRangeBits(int c)(Code) | | Returns the number of bits, referred to as the "range bits",
corresponding to the nominal range of the data in the specified
component.
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 getSynSubbandTree() 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.
Parameters: c - The index of the component The number of bits corresponding to the nominal range of thedata. See Also: Subband |
getParameterInfo | public static String[][] getParameterInfo()(Code) | | 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 3
elements. The first element is the option name, the second one
is the synopsis and the third one is a long description of what
the parameter is. 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.
the options name, their synopsis and their explanation, or null if no options are supported. |
getSynSubbandTree | public SubbandSyn getSynSubbandTree(int t, int c)(Code) | | Returns the subband tree, for the specified tile-component. This method
returns the root element of the subband tree structure, see Subband and
SubbandSyn. The tree comprises all the available resolution levels.
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.
Parameters: t - The index of the tile, from 0 to T-1. Parameters: c - The index of the component, from 0 to C-1. The root of the tree structure. |
nextTile | public void nextTile()(Code) | | 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.
|
setTile | public void setTile(int x, int y)(Code) | | 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..
Parameters: x - The horizontal index of the tile. Parameters: y - The vertical index of the new tile. |
|
|