I'm trying to understand and implement 3D DCT for video compression. An important part of that is the quantization of the coefficients and efficient implementation of the 3D DCT.

So far I've been prototyping a bit based on scipy.fftpack.dct, but I'm now looking more in-depth into efficient implementation and quantization. I found this paper about an FPGA Implementation of Optimal 3D-Integer DCT Structure for Video Compression, but I'm missing some puzzle pieces to understand it.

From what I gather, the WHT and DCT are both remote cousins to the DFT, with the important point about the WHT being that it's implemented without multiplication. On the other hand, the transformed domain does not seem to be directly related to the DFT frequency domain.

But then in section 3 they seem to transform the DCT to an equivalent WHT, which is where I'm completely lost.

Although new to me, I can kind of get behind the idea that if you write out a DFT you probably get a matrix, but find the answer in https://math.stackexchange.com/questions/962533/why-does-the-discrete-cosine-transform-as-matrix-multiplication-work-this-way not very satisfactory. What about a 3D DFT?

I have been unable to find what a Walsh domain vector is, and how the resulting transformation matrix is used to implement efficient integer DCT. Specifically, which part takes care of rounding the coefficients, and does the resulting transform represent a frequency domain? Because compression seems to depend on the low power in high frequencies.

I think section 4 proposes to just brute-force integer coefficients to find ones that gives the smallest error compared to DFT? It does not mention WHT there. Later in the paper they choose the direct method, so is there a useful application for WHT in integer DCT?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.