trans_haar.c

来自「傅立叶变换和小波变换是图像压缩的重要工具。该代大戏是利用小波变换进行图像压缩。」· C语言 代码 · 共 58 行

C
58
字号
#include "transform.h"

void forwardHaar(float *data,float *low,float *high,int half)
{
	while(half--)
	{
		*low++  = (data[0] + data[1])*0.5f;
		*high++ = (data[0] - data[1]);
		data += 2;
	}
}

void inverseHaar(float *data,float *low,float *high,int half)
{
	while(half--)
	{
		data[0] = *low + (*high)*0.5f;
		data[1] = *low - (*high)*0.5f;
		low++; high++;
		data += 2;
	}
}

void inverseHaarTransBuf(RowAbstract *out,RowBuffer * lowTB,RowBuffer * highTB,int y)
{
int w;
float *row0,*row1,*low,*high;
	
	// rowCenter was just filled in both transbufs
	// y goes 0 -> height_half

	row0 = RowAbstract_Row(out,0);
	row1 = RowAbstract_Row(out,1);
	RowAbstract_Advance(out,2);

	low  = RowBuffer_Row(lowTB,0);
	high = RowBuffer_Row(highTB,0);

	for(w=out->width;w--;)
	{
	float L,H;
		L = *low++;
		H = *high++;
		*row0++ = L + H*0.5f;
		*row1++ = L - H*0.5f;
	}
}

Transform transformHaar =
{
	forwardHaar,
	inverseHaar,
	"Haar",
	1,1,
	inverseHaarTransBuf
};

⌨️ 快捷键说明

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