C 实现 离散余弦转换 DCT 源代码
算法特点:
1:将调用 FFT-1D 和 FFT-2D 实现 DCT-1D 和 DCT-2D
2:初始化函数将任意长度数组进行调整使其满足 FFT 处理的 2 的整数次幂。
3:由于核心算法采用的是蝶形运算的 FFT-1D,所以运算速度特别快。
4:FFT 算法的源代码参照: C
实现 快速傅立叶变换
FFT FFT-1D FFT-2D 源代码
源代码:
void InitTDAndFD(double *TD,double *FD,unsigned char *data,int lWidth,int lHeight)//初始化
TD 和 FD(DCT 操作)
{
int w=1;
int h=1;
int wp=0;//存储 w 的 2 的幂数
int hp=0;//存储 h 的 2 的幂数
//////计算刚好大于或等于 lWidth,lHeight 的 2 的整数次幂,和相应的幂数///////////////
while(w<lWidth)
{
w=w*2;
wp++;
}
while(h<lHeight)
{
h=h*2;
hp++;
}
TD=new double[w*h];
FD=new double[w*h];
memset(TD,0,sizeof(double)*w*h);
memset(FD,0,sizeof(double)*w*h);
for(int i=0;i<h;i++)
{
if(i<lHeight)
{
- 1
- 2
前往页