|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--jj2000.j2k.image.ImgDataAdapter | +--jj2000.j2k.quantization.quantizer.Quantizer
This abstract class provides the general interface for quantizers. The input of a quantizer is the output of a wavelet transform. The output of the quantizer is the set of quantized wavelet coefficients represented in sign-magnitude notation (see below).
This class provides default implementation for most of the methods (wherever it makes sense), under the assumption that the image, component dimensions, and the tiles, are not modifed by the quantizer. If it 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 output 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 M most significat bits. The rest of the bits (least significant bits) can contain a fractional value of the quantized coefficient. This fractional value is not to be coded by the entropy coder. However, it can be used to compute rate-distortion measures with greater precision.
The value of M is determined for each subband as the sum of the number of guard bits G and the nominal range of quantized wavelet coefficients in the corresponding subband (Rq), minus 1:
M = G + Rq -1
The value of G should be the same for all subbands. The value of Rq depends on the quantization step size, the nominal range of the component before the wavelet transform and the analysis gain of the subband (see Subband).
The blocks of data that are requested should not cross subband boundaries.
NOTE: At the moment only quantizers that implement the 'CBlkQuantDataSrcEnc' interface are supported.
Subband
Field Summary | |
static char |
OPT_PREFIX
The prefix for quantizer options: 'Q' |
private static java.lang.String[][] |
pinfo
The list of parameters that is accepted for quantization. |
protected CBlkWTDataSrc |
src
The source of wavelet transform coefficients |
Fields inherited from class jj2000.j2k.image.ImgDataAdapter |
imgdatasrc, tIdx |
Constructor Summary | |
Quantizer(CBlkWTDataSrc src)
Initializes the source of wavelet transform coefficients. |
Method Summary | |
protected abstract void |
calcSbParams(SubbandAn sb,
int n)
Calculates the parameters of the SubbandAn objects that depend on the Quantizer. |
static Quantizer |
createInstance(CBlkWTDataSrc src,
EncoderSpecs encSpec)
Creates a Quantizer object for the appropriate type of quantization specified in the options in the parameter list 'pl', and having 'src' as the source of data to be quantized. |
SubbandAn |
getAnSubbandTree(int t,
int c)
Returns a reference to the subband tree structure representing the subband decomposition for the specified tile-component. |
int |
getCbULX()
Returns the horizontal offset of the code-block partition. |
int |
getCbULY()
Returns the vertical offset of the code-block partition. |
abstract int |
getMaxMagBits(int c)
Returns the maximum number of magnitude bits in any subband in the current tile. |
abstract int |
getNumGuardBits(int t,
int c)
Returns the number of guard bits used by this quantizer in the given tile-component. |
static java.lang.String[][] |
getParameterInfo()
Returns the parameters that are used in this class and implementing classes. |
abstract boolean |
isDerived(int t,
int c)
Returns true if the quantizer of given tile-component uses derived quantization step sizes. |
Methods inherited from class jj2000.j2k.image.ImgDataAdapter |
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompULX, getCompULY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomRangeBits, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, nextTile, setTile |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface jj2000.j2k.quantization.quantizer.CBlkQuantDataSrcEnc |
getNextCodeBlock, getNextInternCodeBlock |
Methods inherited from interface jj2000.j2k.wavelet.analysis.ForwWTDataProps |
isReversible |
Methods inherited from interface jj2000.j2k.image.ImgData |
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompULX, getCompULY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomRangeBits, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, nextTile, setTile |
Field Detail |
public static final char OPT_PREFIX
private static final java.lang.String[][] pinfo
protected CBlkWTDataSrc src
Constructor Detail |
public Quantizer(CBlkWTDataSrc src)
src
- The source of wavelet transform coefficients.Method Detail |
public abstract int getNumGuardBits(int t, int c)
t
- Tile indexc
- Component index
public abstract boolean isDerived(int t, int c)
t
- Tile indexc
- Component index
protected abstract void calcSbParams(SubbandAn sb, int n)
sb
- The root of the subband tree.n
- The component index.SubbandAn.stepWMSE
public SubbandAn getAnSubbandTree(int t, int c)
This method gets the subband tree from the source and then calculates the magnitude bits for each leaf using the method calcSbParams().
getAnSubbandTree
in interface ForwWTDataProps
t
- The index of the tile.c
- The index of the component.
SubbandAn
,
Subband
,
calcSbParams(jj2000.j2k.wavelet.analysis.SubbandAn, int)
public int getCbULX()
getCbULX
in interface ForwWTDataProps
public int getCbULY()
getCbULY
in interface ForwWTDataProps
public static java.lang.String[][] getParameterInfo()
public static Quantizer createInstance(CBlkWTDataSrc src, EncoderSpecs encSpec)
src
- The source of data to be quantizedencSpec
- Encoder specifications
java.lang.IllegalArgumentException
- If an error occurs while parsing
the options in 'pl'public abstract int getMaxMagBits(int c)
c
- the component number
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |