Hi
Is there any command in ImageJ to calculate the Fourier transform of images with the size of non-power of two? Best regards, Sara -- Sent from: http://imagej.1557.x6.nabble.com/ -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Good day,
did you try "ImageJ >> Process >> FFT >> FFT Options..."? If this doesn't suit your needs then please tell us why. Regards Herbie ::::::::::::::::::::::::::::::::::::: Am 05.12.19 um 18:47 schrieb Sara_24: > Hi > Is there any command in ImageJ to calculate the Fourier transform of images > with the size of non-power of two? > > Best regards, > Sara > > > > -- > Sent from: http://imagej.1557.x6.nabble.com/ > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
In reply to this post by Sara_24
Hi Sara,
You can do it with ImageJ Ops. Here is an example Groovy script that performs a lowpass filter in Fourier space: -------- #@ OpService ops #@input Img image #@input Double (value=10) radius #@output Img result import net.imglib2.type.numeric.real.FloatType import net.imglib2.util.Util lowpass = { fft, radius -> pos = new long[fft.numDimensions()] long[] origin = [0, 0] long[] origin2 = [0, fft.dimension(1)] cursor = fft.localizingCursor() while (cursor.hasNext()) { cursor.fwd() cursor.localize(pos) dist = Util.distance(origin, pos) dist2 = Util.distance(origin2, pos) if (dist > radius && dist2 > radius) cursor.get().setZero() } } // Perform fft of the input. fft = ops.filter().fft(image) // Filter it. lowpass(fft, radius) // Reverse the FFT. result = ops.run("create.img", image, new FloatType()) ops.filter().ifft(result, fft) -------- ImageJ Ops is part of ImageJ2, and included as part of Fiji. Regards, Curtis -- Curtis Rueden Software architect, LOCI/Eliceiri lab - https://loci.wisc.edu/software ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden Have you tried the Image.sc Forum? https://forum.image.sc/ On Thu, Dec 5, 2019 at 12:22 PM Sara_24 <[hidden email]> wrote: > Hi > Is there any command in ImageJ to calculate the Fourier transform of images > with the size of non-power of two? > > Best regards, > Sara > > > > -- > Sent from: http://imagej.1557.x6.nabble.com/ > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
In reply to this post by Sara_24
Hi Sara,
the standard ImageJ Process>FFT command works with images of any size. The image is padded with a constant value (equal to the average pixel value) to the next power of two. For the Fourier-domain filter operations, the image is padded to a power of two by taking the border as a mirror. Only the Process > FD Math operations need square input images where the side length is a power of two. Michael ________________________________________________________________ On 05.12.19 18:47, Sara_24 wrote: > Hi > Is there any command in ImageJ to calculate the Fourier transform of images > with the size of non-power of two? > > Best regards, > Sara > > > > -- > Sent from: http://imagej.1557.x6.nabble.com/ > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
In reply to this post by Sara_24
Dear Sara,
the options mentioned by you mainly depend on what you want to obtain (see below). Independently from these options, ImageJ *will* transform images that have side-lengths that are not a power of two. (Just try it!) In general and classically, the Fourier-transformation of digitized images with side-lengths that are not a power of two can be performed following two approaches: 1. Using the DFT (Discrete Fourier Transformation) This approach doesn't show the speed profit of the FFT-algorithm (Fast Fourier Transformation). In other words, it is comparably slow. (The classic FFT requires images with side-lengths that are a power of two.) Here <https://sites.google.com/site/piotrwendykier/software/parallelfftj> you find an implementation of the Fourier-transformation for ImageJ (plugin) that uses the FFT-algorithm for images with side-lengths that are a power of two and the DFT-algorithm for images with side-lengths that are not a power of two. 2. Padding (embedding) Images with side-lengths that are not a power of two are padded to the next size with side-lengths that are a power of two. In other words, the small image is embedded in an image support that has side-lengths that are a power of two. This new support is previously filled with the mean value of the small image. As Michael pointed out already, this approach is used by ImageJ.* (There is a different way of embedding that I prefer. It uses windowing and embedding in an empty support. If you prefer this common approach, I can provide a windowing plugin for ImageJ.) The options you've mentioned (in fact their naming is far from reasonable): 1. FFT window You get an 8bit result that is the Fourier-Power Spectrum with the spectral values (gray-values) logarithmically scaled. 2. Raw power spectrum You get a 32bit result that is the Fourier-Power Spectrum. 3. Fast Hartley Transform For the time being, forget about this option. 4. Complex Fourier Transform You get a 32bit stack (consisting of two slices) that represents the complex-valued Fourier Transform. The first slice is the real part and the second slice is the imaginary part of the complex-valued Fourier Transform. The question remains, what you need for your purposes. Please feel free to ask, if you have further questions. Regards Herbie ========================================== * ImageJ doesn't centrally embed the small image but puts it at the top left of the new support. This doesn't make any difference for Power Spectra but it does introduce a linear phase which has considerable impact on the complex-valued Fourier spectrum. If you need the complex-valued Fourier spectrum without this effect you need to do the correct embedding yourself. ========================================== Am 08.12.19 um 10:17 schrieb Sara_24: > Hi Herbie, > > would you please tell me which of FFT options do the FFT of images of > non-power of two size? I use Fiji and as FFT options it has only FFT > Window, > Raw power Spectrom, Fast Hartley transform, and complex Fourier transform. > Which one do the FFT of images of non-power of two size? > > Best regards, > Sara -- Sent from: http://imagej.1557.x6.nabble.com/ -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |