Posted by
Herbie-3 on
Mar 21, 2014; 4:03pm
URL: http://imagej.273.s1.nabble.com/Rephrased-FFT-Question-tp5007000p5007037.html
Dear Jim Ewing,
thanks for your comments that appear to be "to the point".
I have doubts as well concerning the application of Fourier-analysis.
As long as the list doesn't know what the exact meaning of
"locate oscillations of a certain frequency onto a 2D visual field"
is, it appears impossible to recommend a _good approach_.
What we've tried so far is to help with the _desired approach_, not
knowing if it is adequate.
Best
Herbie
:::::::::::::::::::::::::::::::::::::
On 21.03.14 13:55, James Ewing wrote:
> Rebecca - The list has answered your questions about implementing an
> FFT on your time-stacked data very nicely, but I wonder if an FFT is
> what you want. First, there’s an implicit assumption that whatever
> is moving is following a stationary process - things are moving at a
> constant frequency across the entire time of your sample. If that’s
> not true, you’ll get destructive interferences in your interesting
> frequencies, and a loss of power in the frequencies. Second, there’s
> the idea that your pixels are uncorrelated, so that an independent
> analysis of pixel i,j completes your information about that pixel
> without knowing what’s happening in i,j+1.
>
> I wonder what the list thinks? Would it be better to use a band-pass
> filter in the time dimension and fiddle with the band-pass parameters
> until the movement becomes apparent? Or something like an
> auto-correlation? Autoregressive moving average (ARMA) comes to mind.
> The computation is quick, and the information you get back is
> intuitive because the 2-d information is still in picture form. If
> you want to get fancy, you might start to think about correlations in
> all three dimensions, so that neighboring pixels get included in the
> picture. Just to be clear - these techniques relate strongly to the
> FFT, but they allow non-stationary signals to be analyzed.
>
> Thanks to the list for the information about FFTJ. That was very
> useful to me.
>
> - Jim Ewing
>
> On Mar 20, 2014, at 9:58 PM, Rebecca Keller <
[hidden email]>
> wrote:
>
>> Yes, this macro is exactly the right thing, but it is really slow
>> even when I make the stack 2^n (4096) images and bin it 4 x 4 x 2.
>> (128 x 128 x 2048 total voxels.) I would think it could be much
>> faster if implemented right, in java perhaps? I would guess that
>> opening all those windows is unnecessary, but I am not sure how to
>> *not* open them. But anyway, the results are pretty cool--any idea
>> what frequency is represented by each image? Also, it's close to
>> symmetrical over time--what's going on there, exactly (see
>> attached)? I would think if it were symmetrical it would be largest
>> in the center as well, but...
>>
>> Anyway, thanks for this start--I'll see what can be done,
>>
>> JPK
>>
>>
>>
>>
>>
>> On Thu, Mar 20, 2014 at 12:01 PM, Brian Northan
>> <
[hidden email]> wrote:
>>
>>> Hi Rebecca
>>>
>>> I am not aware of a simple solution, hopefully someone else
>>> knows. But someone had a similar problem a while back and it
>>> ended up being a fairly involved discussion. He had to write
>>> some macros.
>>>
>>>
>>>
http://imagej.1557.x6.nabble.com/Automating-Image-Processing-and-Problems-with-FFTJ-td5004660.html>>>
>>>
>>>
As Herbie mentioned FFTJ is not macro-recordable, I have a slightly
>>> modified version of FFTJ which is recordable and is available
>>> here
>>>
>>>
https://github.com/bnorthan/RogueImageJPlugins/releases>>>
>>> It is really just a copy of the original except with the small
>>> changes talked about in the other thread.
>>>
>>> I played around with calling FFTJ on individual points in a time
>>> series using a python macro. I think the logic is right but keep
>>> in mind it is a hack and pretty slow. The proper way to do it
>>> would be to perform all calculations in one plugin. This
>>> approach loops through every pixel, copies a time profile to a
>>> temp image then runs the plugin over and over.
>>>
>>>
>>>
https://github.com/bnorthan/RogueImageJPlugins/blob/master/FFTJ_scriptable/macros/Time_Macro.py>>>
>>>
>>>
>>>
>>>
>>>
On Thu, Mar 20, 2014 at 6:02 AM, Herbie <
[hidden email]> wrote:
>>>
>>>> Rebecca,
>>>>
>>>> if you manage to extract 1D-"images" from your time series of
>>>> images, i.e. in fact pixel sequences as 1D-images, then you may
>>>> use the FFTJ-PlugIn to perform 1D-FFTs of each of these
>>>> series.
>>>>
>>>> <
http://rsb.info.nih.gov/ij/plugins/fftj.html>
>>>>
>>>> You may use a macro to extract the n^2 1D-images (assuming that
>>>> your images are of size n x n). To make use of the FFT speed
>>>> advantage, your stack must consist of m images (time slices),
>>>> where m is a power of two.
>>>>
>>>> The problem with FFTJ is, that it isn't perfectly
>>>> macro-recordable. It shows a dialog for choosing the result
>>>> format. In other words, to fully automatize processing by an
>>>> IJ-macro, you need to modify the source code
>>> of
>>>> FFTJ.
>>>>
>>>> HTH
>>>>
>>>> Herbie
>>>>
>>>> ::::::::::::::::::::::::::::::::::::::::
>>>>
>>>> On 20.03.14 02:04, Rebecca Keller wrote:
>>>>
>>>>> Thanks very much for this reference, but actually it is a
>>>>> bit cumbersome to come in and out of imagej, since this
>>>>> "plugin" requires ms excel for the fft'ing.
>>>>>
>>>>> Seems like it should be possible to get the current fft
>>>>> algorithm to do a 1D FFT on each pixel over time, then
>>>>> re-output the timelapse stack as a 2D image in frequency
>>>>> domain. Then it would be neat, for example, to make a 2D
>>>>> image depth-coded by frequency. I, however, just need to get
>>>>> the pixels which all have the same frequencies, which should
>>>>> be easy enough to do using the 1D FFT pixelwise which I
>>>>> suggested.
>>>>>
>>>>> JPK
>>>>>
>>>>> On Wed, Mar 19, 2014 at 5:18 PM, Eric Denarier <
>>>>>
[hidden email]> wrote:
>>>>>
>>>>> Hi Rebecca, You may have a look to Claire Smith's CiliaFA
>>>>> macro. It
>>>>>> reveals frequencies of intensity variation in different
>>>>>> zone of a brightfield image. We are using it for high
>>>>>> frequency Cilia beating. here is a link to the paper and
>>>>>> macro :
http://www.ciliajournal.com/content/1/1/14>>>>>>
>>>>>>
>>>>>> Rebecca Keller <
[hidden email]> a écrit :
>>>>>>
>>>>>> Dear List,
>>>>>>
>>>>>>>
>>>>>>> Let me rephrase: what I am trying to do is locate
>>>>>>> oscillations of a certain frequency onto a 2D visual
>>>>>>> field, i.e., convert the third dimension (time) of a
>>>>>>> time-lapse image series into frequency space. Then I
>>>>>>> could scan through frequency space (the new third
>>>>>>> dimension) to find groups of pixels with similar
>>>>>>> oscillation frequencies.
>>>>>>>
>>>>>>> So I guess what would need to be done is a 1D FFT for
>>>>>>> each pixel. Is there any way easily to do this with the
>>>>>>> current imagej tools?
>>>>>>>
>>>>>>> JPK
>>>>>>>
>>>>>>> -- ImageJ mailing list:
>>>>>>>
http://imagej.nih.gov/ij/list.html>>>>>>>
>>>>>>>
>>>>>> -- ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>>>>>>
>>>>>>
>>>>> -- ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>>>>>
>>>>>
>>>> -- ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>>>>
>>>
>>> -- ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>>>
>>
>> -- ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>> <whole_stack_FFT.png>
>
> -- ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html