谁有DCT变换,IDCT变换,小波变换,小波逆变换的算法?有其二就行,当然全有是最好的,呵呵~~ 
还望慷慨解囊!!

解决方案 »

  1.   

    上google上搜索一下吧,像这么有名的算法,应该有现成的模块可以用的。
    可惜我手头没有,不然一定帮忙。
    现在只能帮你up一下了。
      

  2.   

    谢谢foxustc(科狐) 
    有进行过图象处理方面的高手吗?我觉得应该用过dct变换,有些人是自己写的,本人基础不咋的,这个算法又只是我的项目中的一小部分,所以也没有多少时间去写了,希望有人能友情提供,特别是逆dct变换的算法,谢谢
      

  3.   

    /*
     * 
     *
     *该文件为前向DCT的浮点运算,它要比整数运算更精确。 
     *
     
     */#ifdef DCT_FLOAT_SUPPORTED
    /*
    /*该程序只适用于8×8的块变换*/ #if DCTSIZE != 8
      Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
    #endif/* 在一个采样块上进行DCT变换 */GLOBAL(void)
    jpeg_fdct_float (FAST_FLOAT * data)
    {
      FAST_FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
      FAST_FLOAT tmp10, tmp11, tmp12, tmp13;
      FAST_FLOAT z1, z2, z3, z4, z5, z11, z13;
      FAST_FLOAT *dataptr;
      int ctr;/* 第一部分,对行进行计算 */
      dataptr = data;
      for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
        tmp0 = dataptr[0] + dataptr[7];
        tmp7 = dataptr[0] - dataptr[7];
        tmp1 = dataptr[1] + dataptr[6];
        tmp6 = dataptr[1] - dataptr[6];
        tmp2 = dataptr[2] + dataptr[5];
        tmp5 = dataptr[2] - dataptr[5];
        tmp3 = dataptr[3] + dataptr[4];
        tmp4 = dataptr[3] - dataptr[4];
        
    /* 对偶数项进行运算 */    
        tmp10 = tmp0 + tmp3; /* phase 2 */
        tmp13 = tmp0 - tmp3;
        tmp11 = tmp1 + tmp2;
        tmp12 = tmp1 - tmp2;
        
        dataptr[0] = tmp10 + tmp11; /* phase 3 */
        dataptr[4] = tmp10 - tmp11;
        
        z1 = (tmp12 + tmp13) * ((FAST_FLOAT) 0.707106781); /* c4 */
        dataptr[2] = tmp13 + z1; /* phase 5 */
        dataptr[6] = tmp13 - z1;
        
    /* 对奇数项进行计算 */
        tmp10 = tmp4 + tmp5; /* phase 2 */
        tmp11 = tmp5 + tmp6;
        tmp12 = tmp6 + tmp7;    z5 = (tmp10 - tmp12) * ((FAST_FLOAT) 0.382683433); /* c6 */
        z2 = ((FAST_FLOAT) 0.541196100) * tmp10 + z5; /* c2-c6 */
        z4 = ((FAST_FLOAT) 1.306562965) * tmp12 + z5; /* c2+c6 */
        z3 = tmp11 * ((FAST_FLOAT) 0.707106781); /* c4 */    z11 = tmp7 + z3; /* phase 5 */
        z13 = tmp7 - z3;    dataptr[5] = z13 + z2; /* phase 6 */
        dataptr[3] = z13 - z2;
        dataptr[1] = z11 + z4;
        dataptr[7] = z11 - z4;    dataptr += DCTSIZE; /* 将指针指向下一行 */
      }/* 第二部分,对列进行计算 */
      dataptr = data;
      for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
        tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
        tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
        tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
        tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
        tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
        tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
        tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
        tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
        
    /* 对偶数项进行运算 */    
        tmp10 = tmp0 + tmp3; /* phase 2 */
        tmp13 = tmp0 - tmp3;
        tmp11 = tmp1 + tmp2;
        tmp12 = tmp1 - tmp2;
        
        dataptr[DCTSIZE*0] = tmp10 + tmp11; /* phase 3 */
        dataptr[DCTSIZE*4] = tmp10 - tmp11;
        
        z1 = (tmp12 + tmp13) * ((FAST_FLOAT) 0.707106781); /* c4 */
        dataptr[DCTSIZE*2] = tmp13 + z1; /* phase 5 */
        dataptr[DCTSIZE*6] = tmp13 - z1;
        
    /* 对奇数项进行计算 */
        tmp10 = tmp4 + tmp5; /* phase 2 */
        tmp11 = tmp5 + tmp6;
        tmp12 = tmp6 + tmp7;    z5 = (tmp10 - tmp12) * ((FAST_FLOAT) 0.382683433); /* c6 */
        z2 = ((FAST_FLOAT) 0.541196100) * tmp10 + z5; /* c2-c6 */
        z4 = ((FAST_FLOAT) 1.306562965) * tmp12 + z5; /* c2+c6 */
        z3 = tmp11 * ((FAST_FLOAT) 0.707106781); /* c4 */    z11 = tmp7 + z3; /* phase 5 */
        z13 = tmp7 - z3;    dataptr[DCTSIZE*5] = z13 + z2; /* phase 6 */
        dataptr[DCTSIZE*3] = z13 - z2;
        dataptr[DCTSIZE*1] = z11 + z4;
        dataptr[DCTSIZE*7] = z11 - z4;    dataptr++; /* 将指针指向下一列 */
    }#endif /* DCT_FLOAT_SUPPORTED */
      

  4.   

    多谢Sherwin(现在开始搞视频),我已找到了除逆dct变换外的算法,
      

  5.   

    逆DCT变换在MP3的解码代码里有实现,你可以去找一下。
      

  6.   

    多谢了!
    [email protected]
    最好带点注释的,呵呵~
      

  7.   

    give me a piece!
    [email protected]
    thank you!
      

  8.   

    tttc(Azure)
    你给我发了吗?我等着用呢?最好能带点注释的,谢谢!!!
      

  9.   

    收到了,不过不是单独的idc。