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

Missing ippiMulPack_32f for real unpacked input

Thomas_Jensen1
Beginner
919 Views

I'm working on a DFT filter for images using a Real filter.

I forward transform the image using ippiDFTFwd_RToPack_32f_C1R(). The result is packed complex.

I then want to multiply my filter into the transform, but there is a problem: I don't know how to create a packed filter, and there is no variant of ippiMulPack_32f that takes an non-packed filter as source.

Of course, I could create a complex filter, then convert that to packed complex, but that extra step is costly.

Is there an ippiMulPack that takes unpacked real input?

Does anybody know how to write a packed complex image?

(w*h 32fc image array)

0 Kudos
22 Replies
Chao_Y_Intel
Moderator
92 Views

Hi,

The name of "DFT" may bring some confusing here. For IPP DFT transform function (ippiDFTFwd_/ippiDFTInv), it is optimized with some fast implementation. If its length is power of 2, it calls corresponding FFT functions. For some other lengths, it is based on prime-factor algorithm. the function have optimized for many primes.

For ippiFilter function, it does not use FFT internally, it has direct implementation.

ippiConv and ippiCrossCorr use 2D FFT. So if you needs filtering an image with rather big kernel (~20x20), it's better to use ippiConv, instead of ippiFilter.

Thanks,

Chao

0 Kudos
renegr
New Contributor I
92 Views

Thanks for the good explanation.

IMO a FFT is a FFT even if it has arbitrary length. But maybe it is historical and based on the first implementation of the DFT which really was a DFT and till now the algorithm was more and more optimized and uses FFT instead of a real DFT now.

In summary this means I can remove all decisions whether to call DFT or FFT by just calling FFT everytime because performance loss here will be insignificant

0 Kudos
Reply