|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | 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 with the full-page approach to be used either with integer or floating-point filters
Field Summary | |
(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 code-block "sent" in the current subband in each component. |
private int[] |
lastn
The horizontal index of the last code-block "sent" in the current subband in each component. |
(package private) Coord |
ncblks
Cache object to avoid excessive allocation/deallocation. |
private int |
pox
The horizontal coordinate of the cell and code-block partition origin, with respect to the canvas origin, on the reference grid |
private int |
poy
The vertical coordinate of the cell and code-block partition origin, with respect to the canvas origin, on the reference grid |
private BlkImgDataSrc |
src
The source of image data |
private SubbandAn[][] |
subbTrees
The subband trees for each component, in each tile. |
Fields inherited from class jj2000.j2k.wavelet.analysis.ForwardWT |
OPT_PREFIX,
pinfo,
WT_DECOMP_DYADIC |
Fields inherited from class jj2000.j2k.image.ImgDataAdapter |
imgdatasrc,
tIdx |
Constructor Summary | |
ForwWTFull(BlkImgDataSrc src,
EncoderSpecs encSpec,
int pox,
int poy)
Initializes this object with the given source of image data and with all the decompositon parameters |
Method Summary | |
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. |
Coord |
getNumCodeBlocks(SubbandAn sb,
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. |
SubbandAn |
getSubbandTree(int t,
int c)
Returns a reference to the subband tree structure representing the subband decomposition for the specified tile-component of the source. |
AnWTFilter[] |
getVertAnWaveletFilters(int t,
int c)
Returns the vertical analysis wavelet filters used in each level, for the specified component and tile. |
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 |
getCompHeight,
getCompImgHeight,
getCompImgWidth,
getCompSubsX,
getCompSubsY,
getCompWidth,
getHeight,
getImgHeight,
getImgULX,
getImgULY,
getImgWidth,
getNomRangeBits,
getNumComps,
getNumTiles,
getNumTiles,
getTile,
getTileIdx,
getTileOff,
getULX,
getULY,
getWidth |
Methods inherited from class java.lang.Object |
|
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 getSubbandTree() for that component, in the current tile. Before that the element in 'subbTrees' is null.
private BlkImgDataSrc src
private int pox
private int poy
private IntegerSpec dls
private AnWTFilterSpec filters
private DataBlk[] decomposedComps
private int[] lastn
private int[] lastm
SubbandAn[] currentSubband
Coord ncblks
Constructor Detail |
public ForwWTFull(BlkImgDataSrc src, EncoderSpecs encSpec, int pox, int poy)
src
- From where the image data should be obtained.encSpec
- The encoder specificationspox
- The horizontal coordinate of the cell and code-block
partition origin with respect to the canvas origin, on the reference
grid.poy
- The vertical coordinate of the cell and code-block partition
origin with respect to the canvas 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 getPartitionULX()
public int getPartitionULY()
public int getFixedPoint(int c)
c
- The index of the component.public Coord getNumCodeBlocks(SubbandAn sb, Coord co)
sb
- The subband for which to return the number of blocks.co
- If not null the values are returned in this object. If null a
new object is allocated and returned.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 componentprivate 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.
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.
public SubbandAn getSubbandTree(int t, int c)
t
- The index of the tile.c
- The index of the component.SubbandAn
,
Subband
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |