Table of Contents

NAME

QccHYPrklt - data structure QccHYPrklt spectral reversible KLT transform

SYNOPSIS

#include "libQccPack.h"

int QccHYPrkltInitialize(QccHYPrklt *rklt);
int QccHYPrkltAlloc(QccHYPrklt *rklt);
void QccHYPrkltFree(QccHYPrklt *rklt);

DESCRIPTION

QccPack provides data structure QccHYPrklt for representing a reversible KLT transform.

The components of a QccHYPrklt structure are a vector representing the dataset mean and a matrix representing the transform itself, as determined by a singular value decomposition of the dataset's covariance matrix.

DATA STRUCTURE

The QccHYPrklt data structure is defined as:

typedef struct
{
int num_bands;
QccVectorInt mean;
QccMatrix matrix;
QccMatrix P;
QccMatrix L;
QccMatrix U;
QccMatrix S;
int factored;
} QccHYPrklt;

The fields of QccHYPrklt are as follows:

num_bands
The number of spectral bands the reversible KLT is designed for.
mean
The mean vector (length = num_bands).
matrix
The transform matrix (size = num_bands x num_bands). This is the original KLT matrix as trained on the data
P, L, U, S
These matrices are the KLT matrix factored into reversible lifting steps.
factored
Indicates whether matrix has be factored into P, L, U, S

ROUTINES

QccHYPrkltInitialize() should be called before any use of a QccHYPrklt structure. QccHYPrkltInitialize() initializes the fields of rklt to the following values:

num_bands: 0
mean: NULL
matrix: NULL
P: NULL
L: NULL
U: NULL
S: NULL

QccHYPrkltAlloc() allocates the mean, matrix, P, L, U, and S fields of the reversible KLT. num_bands must be set prior to calling QccHYPrkltAlloc().

QccHYPrkltFree() frees the mean, matrix, P, L, U, and S fields of rklt.

THEORY

The Karhunen-Loève transform (KLT) is a data-dependent linear transform that is optimal in the sense that it packs the most signal energy into a given number of transform coefficients. The usual KLT is an irreversible transform. A reversible KLT, on the other hand, maps integers to integers. Such a reversible integer KLT was proposed Hao and Shi (2003) based on reversible matrix factorizations originating with Hao and Shi (2001).

In Hao and Shi (2001), a square transform matrix A with determinant equal to +1 or -1 is factored as A = P*L*U*S where L and S are lower triangular, U is upper triangular, and P is a reversible permutation matrix. Implementing the U transform using upper-triangular lifting steps and the L and S transforms using corresponding lower-triangular counterparts results in a reversible calculation of A. Since the KLT is an orthonormal transform (i.e., its determinant is 1), this factorization was used in Hao and Shi (2003) to obtain a reversible integer transform that approximates the KLT. Here, we employ the variant using quasi-complete pivoting proposed by Galli and Salzo.

RETURN VALUE

These routines return 0 on success, and 1 on failure.

SEE ALSO

QccHYPrkltTrain(3) , QccHYPrkltTransform(3) , QccHYPrkltInverseTransform(3) , QccIMGImageCube(3) , QccPackHYP(3) , QccPackIMG(3) , QccPack(3)

P. Hao and Q. Shi, "Matrix factorization for reversible integer mapping," IEEE Transactions on Signal Processing, vol. 49, no. 10, pp. 2314-2324, October 2001.

P. Hao and Q. Shi, "Reversible integer KLT for progressive-to-lossless compression of multiple component images," in Proceedings of the International Conference on Image Processing, vol. 1, Barcelona, Spain, September 2003, pp. 633-636.

L. Galli and S. Salzo, "Lossless hyperspectral compression using KLT," in Proceedings of the International Geoscience and Remote Sensing Symposium, vol. 1, Anchorage, AK, September 2004, pp. 313-316.

AUTHOR

Copyright (C) 1997-2021 James E. Fowler


Table of Contents



Get QccPack at SourceForge.net. Fast, secure and Free Open Source software downloads