Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6704 Discussions

FFT - convert "PACK"-data to halfcomplex (FFTW) and back

mweissbach
Beginner
367 Views
Hello all

I use the IPP 5.1 for several things including the FFT transform of images. For this I receive the results as "pack"-data. I also use the FFTW for running the same programs on other platforms.

My question is:
Is it possible to convert the IPP-Pack-Format to the FFTW-halfcomplex format?
It seems very hard to develop myself this conversion. Maybe there is an existing algorithm... ?

For information about the halfcomplex-format, please see:
http://www.fftw.org/fftw3_doc/Multi_002dDimensional-DFTs-of-Real-Data.html#Multi_002dDimensional-DFTs-of-Real-Data

Thank you all in advance!

M.W.
0 Kudos
3 Replies
Vladimir_Dudnik
Employee
367 Views

Hello,

there is comment from our expert:
IPP52 betacontains conversions from pack to complex and from complex to pack formats:

IPPAPI (IppStatus, ippiPackToCplxExtend_32f32fc_C1R, (const Ipp32f* pSrc, IppiSize srcSize, int srcStep, Ipp32fc* pDst, int dstStep ))

IPPAPI(IppStatus,ippiCplxExtendToPack_32fc32f_C1R,(const Ipp32fc* pSrc, int srcStep, IppiSize srcSize, Ipp32f* pDst, int dstStep ))

We dont haveintention to support any other external formats - the complex format is universal one and can be used as an intermediate format for any other transforms.

Regards,
Vladimir

0 Kudos
mweissbach
Beginner
367 Views
Hi @ all


I solved the problem. The solution is here for all that are interested:

Halfcomplex To Pack:
The block without the left border (and the right corner if the count of elements of a columns is even) can be copied. Be aware of the number of rows by regarding both cases if the count is odd or even.
Handle the left (and maybe the right) border seperatly by arranging the comlex numbers in the order that is given by the scheme in the documentation. At the end the correct values for the edges has to been set.

Pack To HalfComplex:
Copy the inner part of the block (see above). Rearrange the borders. Compute the second part of the data by the conjugated complex numbers of of the upper part. The handling of the borders and later the edges follow.

Only the real-part of numbers in the left and the right corner (FFTW-halfcomplex) are stored in the IPP-packed-Format and cannot be restored by the inverse transform.

I hope this will help, if you face this problem.

Greetings

MW
0 Kudos
Vladimir_Dudnik
Employee
367 Views

Thanks a lot for your contribution to the community

Regards,
Vladimir

0 Kudos
Reply