public abstract class Quantizer extends ImgDataAdapter implements CBlkQuantDataSrcEnc
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
Modifier and Type | Field and Description |
---|---|
static char |
OPT_PREFIX
The prefix for quantizer options: 'Q'
|
protected CBlkWTDataSrc |
src
The source of wavelet transform coefficients
|
imgdatasrc, tIdx
Constructor and Description |
---|
Quantizer(CBlkWTDataSrc src)
Initializes the source of wavelet transform coefficients.
|
Modifier and Type | Method and Description |
---|---|
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,
J2KImageWriteParamJava wp)
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 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.
|
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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getNextCodeBlock, getNextInternCodeBlock
isReversible
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
public static final char OPT_PREFIX
protected CBlkWTDataSrc src
public Quantizer(CBlkWTDataSrc src)
src
- The source of wavelet transform coefficients.public abstract int getNumGuardBits(int t, int c)
t
- Tile indexc
- Component indexpublic abstract boolean isDerived(int t, int c)
t
- Tile indexc
- Component indexprotected 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(io.scif.jj2000.j2k.wavelet.analysis.SubbandAn, int)
public int getCbULX()
getCbULX
in interface ForwWTDataProps
public int getCbULY()
getCbULY
in interface ForwWTDataProps
public static String[][] getParameterInfo()
public static Quantizer createInstance(CBlkWTDataSrc src, J2KImageWriteParamJava wp)
src
- The source of data to be quantizedencSpec
- Encoder specificationsIllegalArgumentException
- If an error occurs while parsing
the options in 'pl'public abstract int getMaxMagBits(int c)
c
- the component numberCopyright © 2015–2022 SCIFIO. All rights reserved.