- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
I have one more question, actually I want to perform FFT 3D for my image, but IPP haven't supported yet, so I tried to perform FFT 2D for x,ydimensions using ippiFFT and then FFT 1Dusing ippsFFT for all over vectors inz dimension. Now I use the function belowto perform FFT 2D, and as I understood, parameter dstin this function is a two-dimensional array. How can I convert it to one-dimensional array so that I can use "ippsFFTFwd_RToPack_32f" for FFT 1D.
status2D = ippiFFTFwd_RToPack_8u32s_C3RSfs(src, NX*sizeof(Ipp32u), dst, NY*sizeof(Ipp32u), spec, 18, 0);
Thank you for your attention and your help
Anh
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Someone please correct me if I am wrong, but I think that 3D FFT can only be done by calculating 1D FFT in each of the three dimensions. Either that or by using a function which does 3D transform natively.
Pay close attention to packing and scaling of the results too.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
our expert has added comment on this:
For example we need 3D FFT from 4x4x4 cube.
It consists of 4 2D planes for instance:
aaaa bbbb cccc dddd
aaaa bbbb cccc dddd
aaaa bbbb cccc dddd
aaaa bbbb cccc dddd
So we can use 2D FFT for the first stage and perform 4 2D transforms:
A
AAA BBBB CCCC DDDDAAAA BBBB CCCC DDDD
AAAA BBBB CCCC DDDD
AAAA BBBB CCCC DDDD
Then in order to have 3D transform it is required to perform 1D transform through z axis, so we need to prepare 16 1D vectors
ABCD and to call 1D FFT for each of them. There is no any special transform from 2D matrixes to 1D in z direction you should use a simple by-element copy loop.Regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Vladimir,
Thank you for your helping. According to your answer I think that I am on the right direction. But nowbesides performing FFT3D,I want to perform also FFT3D inverse.
So the question is: for FFT3D inverse, do I have to do the invert steps?. That means in your examples, first I have to perform FFT1D for 16 1D vectors and then FFT2D for 4 planes ??? Is that correct?
Thanks in advance
Regards
Anh
![](/skins/images/B7BA37F9CE4B52FF7CAE1FB0388839C8/responsive_peak/images/icon_anonymous_message.png)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page