Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6812 ディスカッション

Fast Fourier Transform of a Real Image

mickeyhah
ビギナー
925件の閲覧回数

Hallo, I am newbie here. So please help me smiley [:-)]

I found this code in ippiman.pdf (P.606). Does anyone know how to make it complete and run with Microsoft Visual Studio 2005?

And I also have some questions:

1. In line 2, what do 64 and {0}mean?

2. In line 5 (src[0] = -3; src[9] = 1;), why do we take these values? Are these random values?

3. In this value 8*sizeof(IPP32f), what does 8 mean, does it mean 2^3???

IppStatus fft( void ) {

Ipp32f src[64] = {0}, dst[64];

IppiFFTSpec_R_32f *spec;

IppStatus status;

src[0] = -3; src[9] = 1;

ippiFFTInitAlloc_R_32f( &spec, 3, 3, IPP_FFT_DIV_INV_BY_N,

ippAlgHintAccurate );

status = ippiFFTFwd_RToPack_32f_C1R( src, 8*sizeof(Ipp32f), dst,

8*sizeof(Ipp32f), spec, 0 );

ippiFFTFree_R_32f( spec );

return status;

}

Thank you very much for helping.

Anh

0 件の賞賛
4 返答(返信)
Vladimir_Dudnik
従業員
925件の閲覧回数

Hi Anh,

this sample demonstrates how to do FFT for 8x8 image with Ipp32f data. So, for source and destination arrays you need buffer with length of 64 Ipp32f elements. Source array was initialized with zero and to obtain non zero output, random choosen elements of source array were initilaized with somewhat non zero values (arbitrary for the demonstration goal). Function ippiFFTFwd_.. work with 2D array, so it need to know step paramater (which specifies number of bytes between two adjacent image rows). For that particular case step (number of bytes between adjacent rows) is 8*sizeof(Ipp32f).

Regards,
Vladimir

mickeyhah
ビギナー
925件の閲覧回数

Hi Vladimir,

Thank you for your helping, I think that now it is a little bit clearer for me.

Regards

Anh

mickeyhah
ビギナー
925件の閲覧回数

I have another question smiley [:-)], if I want to proceed 1 image 2*4,is this function correct? Can someone explain for me in detail what does "specifies number of bytes between two adjacent image rows" mean?

status2D = ippiFFTFwd_RToPack_8u32s_C1RSfs( src, 2*sizeof(Ipp8u), dst, 4*sizeof(Ipp32s), spec, 0, pBuffer );

When I use the function above, I think I get the wrong result, but when I change to this

status2D = ippiFFTFwd_RToPack_8u32s_C1RSfs( src, 2*sizeof(Ipp8u), dst, 2*sizeof(Ipp32s), spec, 0, pBuffer );

It seems that it works correctly, so now I am confused by the phrase "specifies number of bytes between two adjacent image rows"

Thanks in advance

Anh

Vladimir_Dudnik
従業員
925件の閲覧回数

Ahn,

I recommend you to start from IPP image processing manual, where IPP image concept is described.

Regards,
Vladimir

返信