|
||||||||||
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.wavelet.analysis.ForwardWT | +--jj2000.j2k.wavelet.analysis.ForwWTFull
This class implements the ForwardWT abstract class with the full-page approach to be used either with integer or floating-point filters
ForwardWT
Field Summary | |
private int |
cb0x
The horizontal coordinate of the code-block partition origin on the reference grid |
private int |
cb0y
The vertical coordinate of the code-block partition on the reference grid |
private CBlkSizeSpec |
cblks
The code-block size specifications |
(package private) SubbandAn[] |
currentSubband
The subband being dealt with in each component |
private DataBlk[] |
decomposedComps
Block storing the full band decomposition for each component. |
private IntegerSpec |
dls
The number of decomposition levels specification |
private AnWTFilterSpec |
filters
Wavelet filters for all components and tiles |
private boolean |
intData
Boolean to know if one are currently dealing with int or float data. |
private int[] |
lastm
The vertical index of the last "sent" code-block in the current subband in each component. |
private int[] |
lastn
The horizontal index of the last "sent" code-block in the current subband in each component. |
(package private) Coord |
ncblks
Cache object to avoid excessive allocation/desallocation. |
private PrecinctSizeSpec |
pss
The precinct partition specifications |
private BlkImgDataSrc |
src
The source of image data |
private SubbandAn[][] |
subbTrees
The subband trees of each tile-component. |
Fields inherited from class jj2000.j2k.wavelet.analysis.ForwardWT |
OPT_PREFIX, WT_DECOMP_DYADIC |
Fields inherited from class jj2000.j2k.image.ImgDataAdapter |
imgdatasrc, tIdx |
Fields inherited from interface jj2000.j2k.wavelet.WaveletTransform |
WT_IMPL_FULL, WT_IMPL_LINE |
Constructor Summary | |
ForwWTFull(BlkImgDataSrc src,
EncoderSpecs encSpec,
int cb0x,
int cb0y)
Initializes this object with the given source of image data and with all the decompositon parameters |
Method Summary | |
SubbandAn |
getAnSubbandTree(int t,
int c)
Returns a reference to the subband tree structure representing the subband decomposition for the specified tile-component of the source. |
int |
getCbULX()
Returns the horizontal offset of the code-block partition. |
int |
getCbULY()
Returns the vertical offset of the code-block partition. |
int |
getDataType(int t,
int c)
Return the data type of this CBlkWTDataSrc. |
int |
getDecomp(int t,
int c)
Returns the wavelet tree decomposition. |
int |
getDecompLevels(int t,
int c)
Returns the number of decomposition levels that are applied to the LL band, in the specified tile-component. |
int |
getFixedPoint(int c)
Returns the position of the fixed point in the specified component. |
AnWTFilter[] |
getHorAnWaveletFilters(int t,
int c)
Returns the horizontal analysis wavelet filters used in each level, for the specified component and tile. |
int |
getImplementationType(int c)
Returns the implementation type of this wavelet transform, WT_IMPL_FULL (full-page based transform). |
CBlkWTData |
getNextCodeBlock(int c,
CBlkWTData cblk)
Returns the next code-block in the current tile for the specified component, as a copy (see below). |
CBlkWTData |
getNextInternCodeBlock(int c,
CBlkWTData cblk)
Returns the next code-block in the current tile for the specified component. |
private SubbandAn |
getNextSubband(int c)
Returns the next subband that will be used to get the next code-block to return by the getNext[Intern]CodeBlock method. |
AnWTFilter[] |
getVertAnWaveletFilters(int t,
int c)
Returns the vertical analysis wavelet filters used in each level, for the specified component and tile. |
private void |
initSubbandsFields(int t,
int c,
Subband sb)
Initialises subbands fields, such as number of code-blocks and code-blocks dimension, in the subband tree. |
boolean |
isReversible(int t,
int c)
Returns the reversibility of the wavelet transform for the specified component and tile. |
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 coordinates. |
private void |
wavelet2DDecomposition(DataBlk band,
SubbandAn subband,
int c)
Performs the 2D forward wavelet transform on a subband of the initial band. |
private void |
waveletTreeDecomposition(DataBlk band,
SubbandAn subband,
int c)
Performs the forward wavelet transform on the whole band. |
Methods inherited from class jj2000.j2k.wavelet.analysis.ForwardWT |
createInstance, getParameterInfo |
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 |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
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 |
Field Detail |
private boolean intData
private SubbandAn[][] subbTrees
The subband tree for a component in the current tile is created on the first call to getAnSubbandTree() for that component, in the current tile. Before that, the element in 'subbTrees' is null.
private BlkImgDataSrc src
private int cb0x
private int cb0y
private IntegerSpec dls
private AnWTFilterSpec filters
private CBlkSizeSpec cblks
private PrecinctSizeSpec pss
private DataBlk[] decomposedComps
private int[] lastn
private int[] lastm
SubbandAn[] currentSubband
Coord ncblks
Constructor Detail |
public ForwWTFull(BlkImgDataSrc src, EncoderSpecs encSpec, int cb0x, int cb0y)
src
- From where the image data should be obtained.encSpec
- The encoder specificationscb0x
- The horizontal coordinate of the code-block partition
origin on the reference grid.cb0y
- The vertical coordinate of the code-block partition origin
on the reference grid.ForwardWT
Method Detail |
public int getImplementationType(int c)
c
- The index of the component.
public int getDecompLevels(int t, int c)
t
- The tile indexc
- The index of the component.
public int getDecomp(int t, int c)
t
- The tile-indexc
- The index of the component.
public AnWTFilter[] getHorAnWaveletFilters(int t, int c)
The returned filters are applicable only to the specified component and in the current tile.
The resolution level of a subband is the resolution level to which a subband contributes, which is different from its decomposition level.
t
- The index of the tile for which to return the filters.c
- The index of the component for which to return the filters.
public AnWTFilter[] getVertAnWaveletFilters(int t, int c)
The returned filters are applicable only to the specified component and in the current tile.
The resolution level of a subband is the resolution level to which a subband contributes, which is different from its decomposition level.
t
- The index of the tile for which to return the filters.c
- The index of the component for which to return the filters.
public boolean isReversible(int t, int c)
t
- The index of the tile.c
- The index of the component.
public int getCbULX()
public int getCbULY()
public int getFixedPoint(int c)
c
- The index of the component.
public CBlkWTData getNextInternCodeBlock(int c, CBlkWTData cblk)
When changing the current tile (through 'setTile()' or 'nextTile()') this method will always return the first code-block, as if this method was never called before for the new current tile.
The data returned by this method is the data in the internal buffer of this object, and thus can not be modified by the caller. The 'offset' and 'scanw' of the returned data have, in general, some non-zero value. The 'magbits' of the returned data is not set by this method and should be ignored. See the 'CBlkWTData' class.
The 'ulx' and 'uly' members of the returned 'CBlkWTData' object contain the coordinates of the top-left corner of the block, with respect to the tile, not the subband.
c
- The component for which to return the next code-block.cblk
- If non-null this object will be used to return the new
code-block. If null a new one will be allocated and returned.
CBlkWTData
public CBlkWTData getNextCodeBlock(int c, CBlkWTData cblk)
When changing the current tile (through 'setTile()' or 'nextTile()') this method will always return the first code-block, as if this method was never called before for the new current tile.
The data returned by this method is always a copy of the internal data of this object, and it can be modified "in place" without any problems after being returned. The 'offset' of the returned data is 0, and the 'scanw' is the same as the code-block width. The 'magbits' of the returned data is not set by this method and should be ignored. See the 'CBlkWTData' class.
The 'ulx' and 'uly' members of the returned 'CBlkWTData' object contain the coordinates of the top-left corner of the block, with respect to the tile, not the subband.
c
- The component for which to return the next code-block.cblk
- If non-null this object will be used to return the new
code-block. If null a new one will be allocated and returned. If the
"data" array of the object is non-null it will be reused, if possible,
to return the data.
CBlkWTData
public int getDataType(int t, int c)
t
- The index of the tile for which to return the data type.c
- The index of the component for which to return the data type.
private SubbandAn getNextSubband(int c)
c
- The component
private void waveletTreeDecomposition(DataBlk band, SubbandAn subband, int c)
band
- The band containing the float data to decomposesubband
- The structure containing the coordinates of the current
subband in the whole band to decompose.c
- The index of the current component to decomposeprivate void wavelet2DDecomposition(DataBlk band, SubbandAn subband, int c)
band
- The band containing the float data to decomposesubband
- The structure containing the coordinates of the subband
in the whole band to decompose.c
- The index of the current component to decomposepublic void setTile(int x, int y)
This method resets the 'subbTrees' array, and recalculates the values of the 'reversible' array. It also resets the decomposed component buffers.
setTile
in interface ImgData
setTile
in class ImgDataAdapter
x
- The horizontal coordinate of the tile.y
- The vertical coordinate of the new tile.public void nextTile()
This method resets the 'subbTrees' array, and recalculates the values of the 'reversible' array. It also resets the decomposed component buffers.
nextTile
in interface ImgData
nextTile
in class ImgDataAdapter
public SubbandAn getAnSubbandTree(int t, int c)
t
- The index of the tile.c
- The index of the component.
SubbandAn
,
Subband
private void initSubbandsFields(int t, int c, Subband sb)
t
- The tile index of the subbandc
- The component indexsb
- The subband tree to be initialised.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |