Re: 2-D Fourier Transform?
- To: mathgroup at smc.vnet.net
 - Subject: [mg113784] Re: 2-D Fourier Transform?
 - From: "Nasser M. Abbasi" <nma at 12000.org>
 - Date: Fri, 12 Nov 2010 05:28:23 -0500 (EST)
 - References: <ibgivj$ea9$1@smc.vnet.net>
 - Reply-to: nma at 12000.org
 
On 11/11/2010 3:10 AM, Matthias Odisio wrote:
>
> CenteredFourier[img_] := Module[{data = ImageData[img], dim},
>     dim = Dimensions[data];
>     Fourier[data*(-1)^Table[i + j, {i, First[dim]}, {j, Last[dim]}]]
>     ];
>
Hello Matthias;
I liked your way to center the image more than the way
I did it. Even though it is the same effect, your's is
little bit more clear, and clear code is important for
me.
So, if you do not mind, I borrowed your line above to
center the image, and use it instead of mine.
I also now use Image to display the spectrum, not ArrayPlot.
Here is the updated complete script to the 2D spectrum of an image
(Mathematica 7)
----------Spectrum of 2D image ---------
img=Import["ExampleData/lena.tif"];
data=ImageData[img];  (*get data*)
{nRow,nCol,nChannel}=Dimensions[data]
d=data[[All,All,2]]; (*get channel 2 to FFT but center it first*)
d=d*(-1)^Table[i+j,{i,nRow},{j,nCol}];
(*make FFT, and look at spectrum and phase*)
fw= Fourier[d,FourierParameters->{1,1}];
fudgeFactor=100; (*adjust for better viewing as needed*)
abs=fudgeFactor * Log[1+Abs@fw];
Labeled[Image[abs/Max[abs],ImageSize->500],Style["Magnitude spectrum", 18]]
arg=Arg@fw;
Labeled[Image[arg/Max[arg],ImageSize->500],Style["Phase spectrum", 18]]
-----------------------------------
--Nasser