C# Класс CSJ2K.j2k.wavelet.Subband

This abstract class represents a subband in a bidirectional tree structure that describes the subband decomposition for a wavelet transform. This class is implemented by the SubbandAn and SubbandSyn classes, which are for the analysis and synthesis sides respectively.

The element can be either a node or a leaf of the tree. If it is a node, it has 4 descendants (LL, HL, LH and HH). If it is a leaf, it has no descendant.

The tree is bidirectional. Each element in the tree structure has a "parent", which is the subband from which the element was obtained by decomposition. The only exception is the root element which, for obvious reasons, has no parent (i.e. it is null).

Показать файл Открыть проект Примеры использования класса

Открытые свойства

Свойство Тип Описание
anGainExp int
h int
isNode bool
level int
nomCBlkH int
nomCBlkW int
numCb Coord
orientation int
resLvl int
sbandIdx int
ulcx int
ulcy int
ulx int
uly int
w int

Открытые методы

Метод Описание
Subband ( ) : System

Creates a Subband element with all the default values. The dimensions are (0,0), the upper left corner is (0,0) and the upper-left corner with respect to the canvas is (0,0) too.

Subband ( int w, int h, int ulcx, int ulcy, int lvls, WaveletFilter hfilters, WaveletFilter vfilters ) : System

Creates the top-level node and the entire subband tree, with the top-level dimensions, the number of decompositions, and the decomposition tree as specified.

For the analysis subband gain calculation it is assumed that analysis filters are normalized with a DC gain of 1 and a Nyquist gain of 2.

This constructor does not initialize the value of the magBits member variable. This variable is normally initialized by the quantizer, on the encoder side, or the bit stream reader, on the decoder side.

ToString ( ) : System.String

Returns subband informations in a string.

getSubband ( int x, int y ) : Subband

Returns a reference to the Subband element to which the specified point belongs. The specified point must be inside this (i.e. the one defined by this object) subband. This method searches through the tree.

getSubbandByIdx ( int rl, int sbi ) : Subband

Returns a subband element in the tree, given its resolution level and subband index. This method searches through the tree.

nextSubband ( ) : Subband

Returns the next subband in the same resolution level, following the subband index order. If already at the last subband then null is returned. If this subband is not a leaf an IllegalArgumentException is thrown.

Защищенные методы

Метод Описание
initChilds ( ) : void

Initializes the childs of this node with the correct values. The sizes of the child subbands are calculated by taking into account the position of the subband in the canvas.

For the analysis subband gain calculation it is assumed that analysis filters are normalized with a DC gain of 1 and a Nyquist gain of 2.

split ( WaveletFilter hfilter, WaveletFilter vfilter ) : Subband

Splits the current subband in its four subbands. This creates the four childs (LL, HL, LH and HH) and converts the leaf in a node.

Описание методов

Subband() публичный Метод

Creates a Subband element with all the default values. The dimensions are (0,0), the upper left corner is (0,0) and the upper-left corner with respect to the canvas is (0,0) too.
public Subband ( ) : System
Результат System

Subband() публичный Метод

Creates the top-level node and the entire subband tree, with the top-level dimensions, the number of decompositions, and the decomposition tree as specified.

For the analysis subband gain calculation it is assumed that analysis filters are normalized with a DC gain of 1 and a Nyquist gain of 2.

This constructor does not initialize the value of the magBits member variable. This variable is normally initialized by the quantizer, on the encoder side, or the bit stream reader, on the decoder side.

public Subband ( int w, int h, int ulcx, int ulcy, int lvls, WaveletFilter hfilters, WaveletFilter vfilters ) : System
w int The top-level width /// ///
h int The top-level height /// ///
ulcx int The horizontal coordinate of the upper-left corner with /// respect to the canvas origin, in the component grid. /// ///
ulcy int The vertical coordinate of the upper-left corner with /// respect to the canvas origin, in the component grid. /// ///
lvls int The number of levels (or LL decompositions) in the tree. /// ///
hfilters WaveletFilter The horizontal wavelet filters (analysis or synthesis) /// for each resolution level, starting at resolution level 0. If there are /// less elements in the array than there are resolution levels, the last /// element is used for the remaining resolution levels. /// ///
vfilters WaveletFilter The vertical wavelet filters (analysis or synthesis) /// for each resolution level, starting at resolution level 0. If there are /// less elements in the array than there are resolution levels, the last /// element is used for the remaining resolution levels. /// ///
Результат System

ToString() публичный Метод

Returns subband informations in a string.
public ToString ( ) : System.String
Результат System.String

getSubband() публичный Метод

Returns a reference to the Subband element to which the specified point belongs. The specified point must be inside this (i.e. the one defined by this object) subband. This method searches through the tree.
public getSubband ( int x, int y ) : Subband
x int horizontal coordinate of the specified point. /// ///
y int horizontal coordinate of the specified point. /// ///
Результат Subband

getSubbandByIdx() публичный Метод

Returns a subband element in the tree, given its resolution level and subband index. This method searches through the tree.
public getSubbandByIdx ( int rl, int sbi ) : Subband
rl int The resolution level. /// ///
sbi int The subband index, within the resolution level. /// ///
Результат Subband

initChilds() защищенный Метод

Initializes the childs of this node with the correct values. The sizes of the child subbands are calculated by taking into account the position of the subband in the canvas.

For the analysis subband gain calculation it is assumed that analysis filters are normalized with a DC gain of 1 and a Nyquist gain of 2.

protected initChilds ( ) : void
Результат void

nextSubband() публичный Метод

Returns the next subband in the same resolution level, following the subband index order. If already at the last subband then null is returned. If this subband is not a leaf an IllegalArgumentException is thrown.
public nextSubband ( ) : Subband
Результат Subband

split() защищенный абстрактный Метод

Splits the current subband in its four subbands. This creates the four childs (LL, HL, LH and HH) and converts the leaf in a node.
protected abstract split ( WaveletFilter hfilter, WaveletFilter vfilter ) : Subband
hfilter WaveletFilter The horizontal wavelet filter used to decompose this /// subband. /// ///
vfilter WaveletFilter The vertical wavelet filter used to decompose this /// subband. /// ///
Результат Subband

Описание свойств

anGainExp публичное свойство

The base 2 exponent of the analysis gain of the subband. The analysis gain of a subband is defined as the gain of the previous subband (i.e. the one from which this one was obtained) multiplied by the line gain and by the column gain. The line (column) gain is the gain of the line (column) filter that was used to obtain it, which is the DC gain for a low-pass filter and the Nyquist gain for a high-pass filter. It is 0 by default.

Using the base 2 exponent of the value contrains the possible gains to powers of 2. However this is perfectly compatible to the filter normalization policy assumed here. See the split() method for more details.

public int anGainExp
Результат int

h публичное свойство

The height of the subband
public int h
Результат int

isNode публичное свойство

True if it is a node in the tree, false if it is a leaf.
public bool isNode
Результат bool

level публичное свойство

The level in the tree to which this subband belongs, which is the number of performed wavelet decompositions to get this subband. It is 0 for the top-level (i.e. root) node.
public int level
Результат int

nomCBlkH публичное свойство

The nominal code-block height
public int nomCBlkH
Результат int

nomCBlkW публичное свойство

The nominal code-block width
public int nomCBlkW
Результат int

numCb публичное свойство

The number of code-blocks (in both directions) contained in this subband.
public Coord numCb
Результат Coord

orientation публичное свойство

The orientation of this subband (WT_ORIENT_LL, WT_ORIENT_HL, WT_ORIENT_LH, WT_ORIENT_HH).
public int orientation
Результат int

resLvl публичное свойство

The resolution level to which this subband contributes. 0 is the smallest resolution level (the one with the lowest frequency LL subband).
public int resLvl
Результат int

sbandIdx публичное свойство

The subband index within its resolution level. This value uniquely identifies a subband within a resolution level and a decomposition level within it. Note that only leaf elements represent "real" subbands, while node elements represent only intermediate stages.

It is defined recursively. The root node gets a value of 0. For a given node, with a subband index 'b', its LL descendant gets 4*b, its HL descendant 4*b+1, its LH descendant 4*b+2, and its HH descendant 4*b+3, for their subband indexes.

public int sbandIdx
Результат int

ulcx публичное свойство

The horizontal coordinate of the upper-left corner of the subband, with respect to the canvas origin, in the component's grid and subband's decomposition level. This is the real horizontal index of the first column of this subband. If even the horizontal decomposition of this subband should be done with the low-pass-first convention. If odd it should be done with the high-pass-first convention.
public int ulcx
Результат int

ulcy публичное свойство

The vertical coordinate of the upper-left corner of the subband, with respect to the canvas origin, in the component's grid and subband's decomposition level. This is the real vertical index of the first column of this subband. If even the vertical decomposition of this subband should be done with the low-pass-first convention. If odd it should be done with the high-pass-first convention.
public int ulcy
Результат int

ulx публичное свойство

The horizontal coordinate of the upper-left corner of the subband
public int ulx
Результат int

uly публичное свойство

The vertical coordinate of the upper-left corner of the subband
public int uly
Результат int

w публичное свойство

The width of the subband
public int w
Результат int