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

**References**:**FFT of a noisy image with weak periodic information***From:*Dave Martin <miltydcm@gmail.com>