void DCT(int DCTW,int DCTH)
{
for(u = 0;u < v =" 0;v" dbtemp1 =" 0;" dbtemp2 =" 0;" dbtemp3 =" 0;" u ="="" cu =" (double)1/"> 0)
Cu = 1;
if(v == 0)
Cv = (double)1/ sqrt(2);
else if(v > 0)
Cv = 1;
for(i = 0;i < 8;i++)
{
for(j = 0;j < 8;j++)
{
dbTemp1 += (Im1Y[DCTH+i][DCTW + j]-128) * cos((2*i+1) * u * M_PI/16) * cos((2*j+1) * v * M_PI/16);
dbTemp2 += (Im1Cb[DCTH+i][DCTW + j]-128) * cos((2*i+1) * u * M_PI/16) * cos((2*j+1) * v * M_PI/16);
dbTemp3 += (Im1Cr[DCTH+i][DCTW + j]-128) * cos((2*i+1) * u * M_PI/16) * cos((2*j+1) * v * M_PI/16);
}
}
//陣列還沒改變需要更改
Im1DCTY[DCTH+u][DCTW+v] = (Cu * Cv * dbTemp1)/(double)4;
Im1DCTCb[DCTH+u][DCTW+v] = (Cu * Cv * dbTemp2)/(double)4;
Im1DCTCr[DCTH+u][DCTW+v] = (Cu * Cv * dbTemp3)/(double)4;
Im1QuaY[DCTH+u][DCTW+v]= Im1DCTY[DCTH+u][DCTW+v]/YQT[u][v];
Im1QuaCb[DCTH+u][DCTW+v]=Im1DCTCb[DCTH+u][DCTW+v]/CbCrQT[u][v];
Im1QuaCr[DCTH+u][DCTW+v]=Im1DCTCr[DCTH+u][DCTW+v]/CbCrQT[u][v];
}
}
i = DCTW;
j = DCTH;
}
沒有留言:
張貼留言