MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: 2dFFT & image processing

  • To: mathgroup at smc.vnet.net
  • Subject: [mg101596] Re: [mg101500] 2dFFT & image processing
  • From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
  • Date: Fri, 10 Jul 2009 23:22:34 -0400 (EDT)
  • References: <200907090553.BAA16870@smc.vnet.net>

Hi,

the fourier transformed image is *not* centered in the middle.
So either you cut a way the edges or you center it before cutting the
central region.

img = ColorConvert[Import["https://ipanema.tictec.de/badische-z\
    eitung/ipanema_images/21/4/!!PerformanceID_32-InfoTypeID_0-Para\
    graphID_0!Yvonne%20Catterfeld%20003.clip0.png"], "Grayscale"]; 
{nx, ny} = ImageDimensions[img]; 
filter = Table[1 - Exp[-(x^2 + y^2)/70.], 
       {y, -ny/2., ny/2. - 1}, {x, -nx/2., nx/2. - 1}]; 
fimg = RotateLeft[(RotateLeft[#1, nx/2] & ) /@ 
         Fourier[ImageData[img]], ny/2]; 
result = InverseFourier[RotateRight[
         (RotateRight[#1, nx/2] & ) /@ (fimg*filter), ny/2]]; 
Column[{img, ArrayPlot[Re[fimg], ColorFunction -> Hue, 
       ColorFunctionScaling -> False], ArrayPlot[filter, 
       ColorFunction -> GrayLevel], Image[Re[result]]}]



Cheers
Patrick


On Thu, 2009-07-09 at 01:53 -0400, alexxx.magni at gmail.com wrote:
> hi everybody,
> I need to perform a high-pass filter on some images.
> 
> I know I can get a high pass filter doing a convolution of the image
> with a predefined kernel, but for various reasons (and my learning
> too) I wanted to follow the sequence:
> 1) fft
> 2) cut away central region (with a smooth edge)
> 3) fft again
> 
> but, due to my ignorance, I'm unable to accomplish the process:
> 
> given the image in a, I put:
> 
> f = Fourier[a[[1]]];
> af = Abs@f;
> Dimensions[f]
>    {500,500}
> 
> and I can check the fft with Graphics[Raster[255*af/Max[af]]]
> 
> I then create the "hole" and apply it to the fft and invert again:
> 
> k = Table[1 - Exp[-(x^2 + y^2)/s], {x, -249, 250}, {y, -249, 250}] /.
> s -> 1000.;
> holed = af*k;
> fholed = Abs[Fourier[holed]];
> 
> since the reconstructed image Graphics[Raster[255*fholed/Max[fholed]]]
> is strongly fuzzed, whichever value I choose for the parameter s
> above, I wanted to ask you if I completely misunderstood the process!
> 
> thank you,
> 
> 
> alessandro
> 
> 
> 
> 



  • Prev by Date: Re: Re: Polynomial rewriting question
  • Next by Date: Re: Fast calculation of pair correlation function
  • Previous by thread: Re: 2dFFT & image processing
  • Next by thread: Re: 2dFFT & image processing