Re: FFT of a noisy image with weak periodic information

• To: mathgroup at smc.vnet.net
• Subject: [mg126806] Re: FFT of a noisy image with weak periodic information
• From: Dave Martin <miltydcm at gmail.com>
• Date: Fri, 8 Jun 2012 03:38:25 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <201206060851.EAA17867@smc.vnet.net> <jqprli\$2ca\$1@smc.vnet.net>

```On Thursday, June 7, 2012 5:18:42 AM UTC-4, W Craig Carter wrote:
> Hello Dave,
> This may work for you as long as your data is composed of reals.
>
> threshHold[data_, value_] :=
>  data /. anumber_?NumericQ /; anumber < value :> 0
>
> threshHold[RandomReal[{0, 1}, {8, 8}], 0.25]
> threshHold[RandomReal[{0, 1}, {4, 4, 4}], 0.25] // MatrixForm
>
> W Craig Carter
> Professor of Materials Science, MIT
>
>
>
> On Jun 6, , at Wed Jun 6, 12 @4:51 AM, Dave Martin wrote:
>
> > I'm trying to accomplish what should be a relatively simple frequency
> > domain filtering of a noisy input image with with some weak, periodic
> > signals (a low dose transmission electron microscope image of some
> > organic crystals).   Using the commands below, I've been able to input
> > the image (x), convert it to data (xi), and calculate the FFT (fx).
> > Now what I want to do is to set the FFT to zero for all values below
> > some threshold, and then inverse transform back to a filtered image.
> > My stumbling block is a simple means to set the values of the array fx
> > to zero below some threshold, before I perform InverseFourier.
> >
> > x=Import["data.tif"]   (*import the file as an image*)
> > xi=ImageData[x];   (*convert image to array data*)
> > x1=xi[[All,All,1]];    (*extract one of the three color channels from
> > the RGB image*)
> > fx=Fourier[x1];       (*calculate the FFT of x1*)
> >
> > Some other commands I've found useful...
> >
> > pfx=fx*Conjugate[fx];  (*calculate power spectrum = fx^2*)
> > n=Length[pfx]             (*determine size of arrays*)
> > pxr=RotateRight[pfx, {n/2,n/2}];   (*put origin in center of PS
> > image*)
> > pi = Image[pxr]           (*convert PS to image for display*)
> >
> > Inverse transforming...
> >
> > rx=Chop[InverseFourier[fx]];  (*convert fx back to a real space data
> > set rx*)
> > ri=Image[rx]                         (*convert rx to an image ri for
> > display*)
> >
> >

Thanks Craig, but my data is Complex, so also I need to find the amplitudes first..  regards from UD, DCM

```

• Prev by Date: Fitting complex functions or simultaneous fit of functions with identical parameters with Mathematica
• Next by Date: Re: FindDistributionParameters
• Previous by thread: Re: FFT of a noisy image with weak periodic information
• Next by thread: Re: FFT of a noisy image with weak periodic information