FFT Complex to Complex filters and helper classes

Please use this identifier to cite or link to this publication: http://hdl.handle.net/1926/326
ITK currently supports real to complex conjugate forward and inverse Fourier transformation's through dedicated filters. In turn, these utilize one of a number of Fourier transform implementations, such as that available through VNL, through FFTW or through Intel's implementation of the FFTW API.
When dealing directly with complex data, such as may be acquired by an MRI scanner, it is convenient to have dedicated filters supporting Complex to Complex transformations. It is also convenient to have filter classes that can convert between complex data and real and imaginary component and magnitude and phase component representations.
Data
minus 1 File (93Kb)
Code
minus Automatic Testing Results by Insight-Journal Dashboard on Sun Oct 22 16:37:59 2006 for revision #1
starstarstarstarstar expertise: 5 sensitivity: 3.6
yellow CMake was unable to configure this project.
Click here for more details.

Go here to access the main testing dashboard.

Reviews
minus Compilation troubles.... by Page Vincent on 12-11-2006 for revision #1
starstarstarstarstar expertise: 3 sensitivity: 4.4
yellow

Summary:
It s not a paper. The author implements a Complex to Complex FFT algorithms and some associated filters for the Insight Library.

As I have not been able to make/cmake the code, I guess that this review is of poor help.



Open Science:

Sure It is open science !

 

Reproducibility:
I was not able to compile ... I spend 4 hours to re-compile the whole ITK with respect to the procedure of the README file, and then discovered that It's been of no help...I tried many other compilations, but no results either. Maybe I missed something but I guess that I would have done a better work as a reviewer if :

- the install part (compilation) was more detailed.

- a test procedure would be welcome ?

- I guess it is possible to compile only the new parts (and test them). There might be a standard procedure for this ...

 

minus Suggestions for improving Complex to Complex FFT implementation by Kent Williams on 11-17-2006 for revision #1
starstarstarstarstar expertise: 2 sensitivity: 4.4
yellow

Summary:
Proposes adding ComplexToComplex FFT operations to ITK


Hypothesis:
Author hypothesizes that adding ComplexToComplex FFT filters to ITK would be a good thing.

Evidence:
Source Code


Open Science:

Freely available source code...

Reproducibility:

I downloaded the code and read the paper, such as it was. It's more like an abstract for a paper than an actual paper. The code being proposed for inclusion in ITK is very specific and concise, but a brief description of the new classes introduced, and why they have the class signature they do would be useful.

Use of Open Source Software:

As far as I can tell, completely open.

Open Source Contributions:
Source Code is included and is nominally useful and mostly correct.

Code Quality:
Suggestions: This code was derived by editing the existing FFT/FFTW real-to-complex and complex-to-real source code. That origional code has changed slightly since the author appropriated it to produce this new set of classes. In order to be compatible with the current FFTW it's necessary to make copies of the input data, since it gets scribbled on by the fftwX_plan function. Also, the current FFTW/FFT code in Code/Algorithms allocates buffers and preserves the plan memory, so you can instantiate a filter, and re-use it without re-generating the plan. This is a big performance win.

Applicability to other problems:
Generally applicable to FFT based image processing, in cases where Complex image data is the input. This includes use in a pipeline that requires more than one FFT/IFFT operation in an ITK Pipeline, as the intermediate image results can remain in complex numbers.

Suggestions for future work:
Revisit the real-to-complex and complex-to-real FFTW filters and incorporate the changes detailed above. Provide some 'real world' examples, implementing at least one common use case for FFT in Image processing.

Requests for additional information from authors:

Additional Comments:
It's suggested that the source code provided be copied into the Insight source tree for building and testing. For the purposes of a journal submission, a standalone project that can be built using an already-installed ITK would be a better choice. If the code passes review it can be copied into the Insight source tree one time.

minus First review by Jordi Inglada on 11-14-2006 for revision #1
starstarstarstarstar expertise: 3 sensitivity: 4.4
yellow

Summary:
The problem addressed is the one of providing an easy access to complex valued images. Helper classes for conversion between cartesian and polar complex representations are given.

Hypothesis:
Non Applicable


Evidence:
Non Applicable

Open Science:
Source code is given.

Reproducibility:
I was able to successfully compile and run the code.

Use of Open Source Software:
ITK is used.


Open Source Contributions:
Source code is available.


Code Quality:
Seems to follow the ITK guidelines.

Applicability to other problems:
Very interesting for other image processing fields where comples images are used (radar images in remote sensing, for instance).

Suggestions for future work:
Helper classes for filter design in the Fourier domain would be useful. Time-frequency analysis for complex data (short-time Fourier transform, Wigner-Ville and other transforms from the Cohen's class could be easily implemented) as well as Doppler analysis functionnalities would be useful for complex valued images.

 


Requests for additional information from authors:

A more detailed description of the source code would be appreciated. The paper text is only ine page long!

Additional Comments:
None.

minus Contribution that brings useful class, but still needs many improvements. by Jakub Bican on 11-07-2006 for revision #1
starstarstarstarstar expertise: 3 sensitivity: 4.6
yellow

Summary:
While Real-Complex and Complex-Real FFT filters are already present in the ITK, the general Complex-Complex filter is missing. This contribution brings such class along with two classes to compose a complex image from real and imaginary or modulus and phase components.

Evidence:
Complex-Complex FFT is useful transform and corresponding filters are missing in ITK

Open Science:
This submission includes source codes and very simple example code, but with no testing data. I did not compile or execute the example as it does not comply with IJ submission style and requires overwriting parts of my local ITK installation.

Reproducibility:
I suggest adjusting the submission configuration to the IJ Testing Environment and add some tests and test images.

Use of Open Source Software:
These filters should be an extension of ITK.

Open Source Contributions:
The source code is provided but i found some problems that has to be fixed before the code will be widely usable.

Code Quality:
Code looks good.

Applicability to other problems:
N/A

Suggestions for future work and comments:

FFTComplexToComplexImageFilter

  • FFT Direction should be rather a class "property" than a template parameter
  • complex to complex FFT is ALWAYS "FullMatrix" - halving of size in first dimension is a property of real to complex (and inverse) FFTs (due to so called Hermitian Redundancy) - see for example FFTW documentation for more details.
  • I recommend implementing customized New() method to this base class to enable configuration-based instantiation (see "factories for FFTW filters - update" discussion in Insight-users mailing list)

FFTWComplexToComplexImageFilter

  • I believe, that the current implementation - the way it is handling USE_FFTWD and USE_FFTWF constants and input pixel types - is not very functionable. I think it will work if only one of these constants is defined - if both are (which is not a very rare case), it may fail during compilation. But may be i am wrong in this, as i did not compile the code and i still have some gaps in generic programming:). BUT i highly recommend completely refactoring this class to use (possibly extended) FFTWProxy class as e.g. FFTWRealToComplexConjugateClass does.


Final sigh: the optimal way would be to have one FFT filter that will be able to perform all types of FFT transforms (real-complex, complex-real, complex-complex) depending on the input and output image types and Direction property (only in case of complex-complex, as the direction is fully determined by the input and output types in case of "real" FFTs) - so you can focus in this way when refactoring the classes :-) (but of course - having simple complex-complex filter as you are proposing is OK too!)

 

Add a new review
Quick Comments


Resources
backyellow
Download All

Statistics more
backyellow
Global rating: starstarstarstarstar
Review rating: starstarstarstarstar [review]
Code rating: starstarstarstarstar
Paper Quality: plus minus

Information more
backyellow
Keywords: FFT, ITK
Toolkits: ITK (moved into the sandbox)
Export citation:

Share
backyellow
Share

Linked Publications more
backyellow
Alternative Memory Models for ITK Images Alternative Memory Models for ITK Images
by Mueller D.
A Spline-Driven Image Slicer A Spline-Driven Image Slicer
by Velut J.

View license
Loading license...

Send a message to the author
main_flat
Powered by Midas