📄 trans_haar.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -