18.04.2013 Views

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Discrete Fourier Transform<br />

an algorithm that computes the discrete Fourier transform in . This is arguably the most<br />

important algorithm known, as measured by practical impact, for it opened the door to modern image<br />

processing. <strong>The</strong>re are several different algorithms that call themselves FFTs, all of which are based on a<br />

divide-and-conquer approach. Essentially, the problem of computing the discrete Fourier transform on n<br />

points is reduced to computing two transforms on n/2 points each and is then applied recursively<br />

<strong>The</strong> FFT usually assumes that n is a power of two. If this is not the case for your data, you are usually<br />

better off padding your data with zeros to create elements rather than hunting for a more general<br />

code.<br />

Since many image processing systems have strong real-time constraints, FFTs are often implemented in<br />

hardware, or at least in assembly language tuned to the particular machine. Be aware of this possibility if<br />

the codes below prove too slow.<br />

Implementations: FFTPACK is a package of Fortran subprograms for the fast Fourier transform of<br />

periodic and other symmetric sequences, written by P. Swartzrauber. It includes complex, real, sine,<br />

cosine, and quarter-wave transforms. A C language translation of the main routines is also provided.<br />

FFTPACK resides on Netlib (see Section ) at http://www.netlib.org/fftpack.<br />

<strong>Algorithm</strong> 545 [Fra79] of the Collected <strong>Algorithm</strong>s of the ACM is an implementation of the fast Fourier<br />

transform optimizing virtual memory performance and written in Fortran. See Section for further<br />

information.<br />

XTango (see Section ) is an algorithm animation system for UNIX and X-windows, which includes<br />

an interesting animation of the fast Fourier transform.<br />

A Pascal implementation of the fast Fourier transform for points appears in [MS91]. For more<br />

details, see Section . Sedgewick [Sed92] provides a bare bones implementation of the fast Fourier<br />

transform in C++. See Section for details.<br />

Notes: Brigham [Bri74] is an excellent introduction to Fourier transforms and the FFT and is strongly<br />

recommended, as is the exposition in [PFTV86]. Expositions in algorithms texts on the fast Fourier<br />

transform include [AHU74, Baa88, CLR90, Man89].<br />

Credit for inventing the fast Fourier transform is usually given to Cooley and Tukey [CT65], although it<br />

is not completely deserved. See [Bri74] for a complete history.<br />

An interesting divide-and-conquer algorithm for polynomial multiplication [KO63] does the job in<br />

file:///E|/BOOK/BOOK4/NODE146.HTM (3 of 4) [19/1/2003 1:30:34]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!