int QccIMGImageComponentDCT(const
QccIMGImageComponent *input_component, QccIMGImageComponent *output_component,
int block_num_rows, int block_num_cols);
int QccIMGImageComponentInverseDCT(const
QccIMGImageComponent *input_component, QccIMGImageComponent *output_component,
int block_num_rows, int block_num_cols);
int QccIMGImageDCT(const QccIMGImage
*input_image, QccIMGImage *output_image, int block_num_rows, int block_num_cols);
int QccIMGImageInverseDCT(const QccIMGImage *input_image, QccIMGImage
*output_image, int block_num_rows, int block_num_cols);
QccIMGImageComponentInverseDCT() calculates the two-dimensional inverse DCT of blocks from input_component, returning the transformed blocks in output_component. Again, output_component must be allocated to the same size as input_component prior to calling QccIMGImageComponentInverseDCT(), and the size of both input_component and output_component must be evenly divisible by the block size (which must be the same block size as used initially by QccIMGImageComponentDCT() for sane results). QccIMGImageComponentInverseDCT() calls QccMatrixInverseDCT(3) to perform the inverse DCT for each block.
QccIMGImageDCT() and QccIMGImageInverseDCT() perform the forward and inverse DCT, respectively, on image by calling QccIMGImageComponentDCT() and QccIMGImageComponentInverseDCT(), respectively, on each of the Y, U, and V components of the image.
A. K. Jain, Fundamentals of Digital Image Processing. Englewood Cliffs, NJ: Prentice Hall, 1989.