quantim.h

来自「基于小波的图像压缩」· C头文件 代码 · 共 58 行

H
58
字号
#ifndef QUANTIM_H
#define QUANTIM_H

#include <crblib/inc.h>
#include <crblib/memutil.h>
#include "image.h"
#include "coder.h"

// types :

extern char * qtype_names[];

#define QTYPE_DEADZONE	0
#define QTYPE_ESZZ   	1
#define QTYPE_MAX		1
// todo : adaptives and type_best

// flags : (encoder only)

#define QFLAG_UNIFORM	0
#define QFLAG_SEEKSTOP	(1<<0)
#define QFLAG_FIDDLE	(1<<1)

	// <>

typedef struct _quantInfo {
	int nquants,qtype;	// nquants == 0 is quantizer == 1.0
	float quantizers[0];
} quantInfo;

#define quantInfoSize(qi) (sizeof(quantInfo) + ((qi)->nquants)*sizeof(float))
#define newQI(quantizers) AllocMem(sizeof(quantInfo) + (quantizers)*sizeof(float),MEMF_CLEAR)

extern quantInfo * findQuantizers(int qtype,int qflags,double quant_target,
			imageFloat *imF,int levels,int stoplen,coder *coder_template); // used by non-uniform only

// 'quantInfo' can just be free()'ed or written to a file, or etc.

extern void   quantizeImage(image *im,int levels,quantInfo *qi);
extern void dequantizeImage(image *im,int levels,quantInfo *qi);
extern void   quantizeImageF(image *im,imageFloat *imF,int levels,quantInfo *qi);
extern void dequantizeImageF(image *im,imageFloat *imF,int levels,quantInfo *qi);

extern quantInfo * doTransQuantIm(image *im,int levels,int transformN,
				int qtype,int qflags,double q,
				int stoplen,const coder *coder_template);
extern void deTransQuantIm(image *im,int levels,int transformN,quantInfo *qi);

/****** these trans-wavelet routines are the suggested entry point into the API : *********/

extern wavelet * makeTransQuantWavelet(image *im,int levels,int transformN,
				int qtype,int qflags,double q,
				int stoplen,const coder *coder_template);
extern void deTransQuantWavelet(wavelet * w);

#endif // QUANTIM_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?