IPP v3.0 DCT transform

IPP v3.0 DCT transform

Hello,

I'm a bit puzzled with the general DCT transform in IPP v3.0 (not the 8x8 versions).
After forward transforming an image, the inverse transform of this transformed image doesn't yield the original image. Is this normal? I've called both initialisation functions (forward and inverse) and I'm working with the 32f_C1R version of the functions.
By the way, are the low frequencies of the transform at the begining of the image (nearest to the original image pointer)?

Hope someone can help!

6 posts / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.

ok, sorry everyone. My fault. I wasn't comparing the same images... silly me.

Hi Oliver

Regards,

Allright :-). Here I go!
I'm using the DCT transform functions to solve a 2D partial differential equation. I suppose the DCT transform used in the IPP is the classical:

F(i,j) = sum(k: 0 to N) sum(l: 0 to M) f(k,l).cos[Pi.k.(i+1/2)/N].cos[Pi.l.(j+1/2)/N]

and inverse:

f(i,j) = (4/NM) sum(k: 0 to N) sum(l: 0 to M) F(k,l).cos[Pi.k.(i+1/2)/N].cos[Pi.l.(j+1/2)/N]

I haven't got access to the book referenced as [Rao90] in the documentation so I'm not absolutely sure of that. Can someone confirm this?
Also, is the data in the transformed image packed the straightforward way :F(i,j) stored at pixel location (i,j)?

Are there any constraints involved when using these transform functions not cited in the documentation?

According developer in ippiDCT the following equation are used:

F(k,l) = (1/sqrt(N*M))*C(k)*C(l) * sum(i: 0 to N-1) sum(j: 0 to M-1) f(i,j)*cos[Pi*k*(i+1/2)/N]*cos(Pi*l*(j+1/2)/M]

f(i,j) = (1/sqrt(N*M)) * sum(k: 0 to N-1) sum(l: 0 to M-1) C(k)*C(l) * F(k,l)*cos[Pi*k*(i+1/2)/N]*cos(Pi*l*(j+1/2)/M]

where?(?)=1for ?=0and ?(k)=sqrt(2)for k>0

Doesit helps you?