コード例 #1
0
ファイル: ImgOps.cs プロジェクト: 0-v-0/test
        private static void Ifct8(ArraySlice <float> bloque, ArraySlice <float> res, float[,] tIcos)
        {
            float dc = bloque[0] * tIcos[0, 0];

            float suma02 = 0;

            suma02 += bloque[4] * tIcos[4, 0];

            float suma01 = 0;

            suma01 += bloque[2] * tIcos[2, 0];
            suma01 += bloque[6] * tIcos[6, 0];

            float suma11 = 0;

            suma11 += bloque[2] * tIcos[2, 1];
            suma11 += bloque[6] * tIcos[6, 1];

            float suma00 = 0;

            suma00 += bloque[1] * tIcos[1, 0];
            suma00 += bloque[3] * tIcos[3, 0];
            suma00 += bloque[5] * tIcos[5, 0];
            suma00 += bloque[7] * tIcos[7, 0];

            float suma10 = 0;

            suma10 += bloque[1] * tIcos[1, 1];
            suma10 += bloque[3] * tIcos[3, 1];
            suma10 += bloque[5] * tIcos[5, 1];
            suma10 += bloque[7] * tIcos[7, 1];

            float suma20 = 0;

            suma20 += bloque[1] * tIcos[1, 2];
            suma20 += bloque[3] * tIcos[3, 2];
            suma20 += bloque[5] * tIcos[5, 2];
            suma20 += bloque[7] * tIcos[7, 2];

            float suma30 = 0;

            suma30 += bloque[1] * tIcos[1, 3];
            suma30 += bloque[3] * tIcos[3, 3];
            suma30 += bloque[5] * tIcos[5, 3];
            suma30 += bloque[7] * tIcos[7, 3];

            float p00 = dc + suma02;
            float p01 = dc - suma02;

            float p10 = p00 + suma01;
            float p11 = p00 - suma01;
            float p12 = p01 + suma11;
            float p13 = p01 - suma11;

            res[0] = p10 + suma00;
            res[7] = p10 - suma00;
            res[3] = p11 + suma30;
            res[4] = p11 - suma30;
            res[1] = p12 + suma10;
            res[6] = p12 - suma10;
            res[2] = p13 + suma20;
            res[5] = p13 - suma20;
        }