Files
jens 05da8712f6 Initial import
git-svn-id: http://moon:8086/svn/software/trunk/libsrc/_to_be_added@1 b431acfa-c32f-4a4a-93f1-934dc6c82436
2014-07-19 07:44:42 +00:00

65 lines
1.9 KiB
C
Executable File

// ------------------------------------------------------------
// clob.h
//
// A color quantizer using binary-split technique
// From:
// "Color Quantization of Images", Orchard, Bouman
// IEEE Trans. on Sig. Proc., vol. 39, no. 12, pp. 2677-2690, Dec. 1991.
//
// 10.03.2005, J.Ahrensfeld
// ------------------------------------------------------------
#ifndef CLOB_H
#define CLOB_H
#include "bintree.h"
#include "colortypes.h"
// ------------------------------------------------------------
#define ROW_DIM 3
// ------------------------------------------------------------
typedef struct _node_data_t
{
int N, *pC, len_C;
color_vector_t R[ROW_DIM];
color_vector_t cov[ROW_DIM];
color_vector_t m;
color_vector_t q;
color_vector_t e;
double lambda;
double *pExpr_left, expr_right;
} node_data_t;
typedef struct _colorquant_t
{
int nRow, nCol, N_max, M_max, nPixel;
double *pTemp;
color_vector_t *pX, *pXs;
node_data_t *pRootData, *pData;
} colorquant_t;
typedef struct _codebook_t
{
int num_colors, max_colors, max_samples;
color_vector_t *pColor;
int **ppC, *pC, *size_C;
} codebook_t;
// ------------------------------------------------------------
void ColorQuant_Init(colorquant_t *pCQ, int N_max, int M_max);
void ColorQuant_Free(colorquant_t *pCQ);
void FreeNodeData(node_data_t *pObj);
void ColorNodeStat(colorquant_t *pCQ, node_data_t *pObj, color_vector_t *pXs);
double ColorLambda(colorquant_t *pCQ, node_data_t *pObj, color_vector_t *pXs);
void ColorNodeSplit(colorquant_t *pCQ, node_data_t *pObj, node_data_t *pData2n, node_data_t *pData2n1);
int ColorQuant(colorquant_t *pCQ, codebook_t *pCB, color_vector_t *pX, int K, int N, int M, double lambda_min);
void CodebookAlloc(codebook_t *pObj, int N_max, int M_max);
void CodebookFree(codebook_t *pObj);
// ------------------------------------------------------------
#endif // CLOB_H