0
コードは次のとおりです。この2D DCTコードは実際にどのように機能しますか?ここで
void dct(const tga_image *tga, double data[8][8],
const int xpos, const int ypos)
{
int i,j;
double in[8], out[8], rows[8][8];
/* transform rows */
for (j=0; j<8; j++)
{
for (i=0; i<8; i++)
in[i] = (double) pixel(tga, xpos+i, ypos+j);
dct_1d(in, out, 8);
for (i=0; i<8; i++) rows[j][i] = out[i];
}
/* transform columns */
for (j=0; j<8; j++)
{
for (i=0; i<8; i++)
in[i] = rows[i][j];
dct_1d(in, out, 8);
for (i=0; i<8; i++) data[i][j] = out[i];
}
}
で発見listing2.cから取られ、私はちょうど1質問があり、私たちは、[I]行[J]として行に記入しますが、それを読んでout行[i] [j]を含む。 2D DCTの式に従って、実際のデータではなくDCT行列を転置します。実際のデータが転記されるのはなぜですか?
私が追加多くのDCTを行う必要がある場合は、これは非常に非効率的なコードです。 – user3344003
はい、私が知っている限り、いくつかの高速DCTアルゴリズムは実際に使用されますが、FPGAのようなハードウェアでDCTを行う場合、この方法はちょうど良いかもしれません – quantum231
あなたは個人的に何をお勧めしますか? – quantum231