fourier
JTransforms 2.3
Java-based FFT library more>> Java-based FFT library
JTransforms is a free and open source, multithreaded FFT library written in pure Java.
Currently, four types of transforms are available: Discrete Fourier Transform (DFT), Discrete Cosine Transform (DCT), Discrete Sine Transform (DST) and Discrete Hartley Transform (DHT).
NOTE: JTransforms is licensed and distributed under the terms of the GNU General Public License (GPL), GNU Library or Lesser General Public License (LGPL) and Mozilla Public License 1.1 (MPL 1.1).
Main features:
- The fastest implementation of DFT, DCT, DST and DHT in pure Java (see benchmark).
- 1, 2 and 3 dimensional transforms.
- Arbitrary size of the data.
- Single and double precision.
- One-dimensional and multi-dimensional variants of 2D and 3D transforms.
- Automatic multithreading - threads are used automatically if #CPUs > 1.
- Optimized FFTs for real input data (40% faster than complex).
System requirements:
-
Version restrictions:
- 1D transforms for not power-of-two sizes are sequential (when the mixed-radix is used).
- 1D transforms for power-of-two sizes can use only 2 or 4 threads.
- The number of threads must be a power-of-two number.
- Only in-place transforms are available.
- Only DCT-II and DCT-III are available.
- Only DST-II and DST-III are available.
- Only real DHT is available.
Enhancements
- Performance improvements for 3D FFT (realForwardFull() and realInverseFull() for not power-of-two sizes).
- Cosmetic changes.
apfloat Lib 2.41
apfloat Lib - High performante arithmetic library more>>
Three different moduli are used for optimal memory usage. The final result is achieved using the Chinese Remainder Theorem. The algorithms are optimized for very high precision (more than 100 000 digits). The package is written to be easily portable, but also includes assembler optimization in critical parts for various processors for maximum performance.
Completly freeware for non-commercial use.
Fresnel Diffraction Explorer 1.4
Fresnel Diffraction Explorer - Calculate numerically a Fresnel diffraction pattern more>>
Fresnel Diffraction Explorer is based on an efficient algorithm to calculate numerically a Fresnel diffraction pattern using any two-dimensional aperture.
It is a simple exercise to show that Fraunhofer diffraction by an aperture is mathematically equivalent to the Fourier transform of the aperture shape. Because the integrals describing Fresnel diffraction are so intractable, however, Fresnel diffraction patterns have few analytical solutions, even in one dimension. ... A calculation in two dimensions is even more problematic.
Enhancements:
Universal Application release for Intel- and PowerPC-based Macs running OS X. Clusters of any combination of Intel or PowerPC Macs can be used in a Fresnel diffraction calculation.
Other updates:
- OS X-compliant icons, dialog boxes, including sheets and antialiased text.
- Endian conversion for file and disk storage as well as sending data over the network.
- Adaptations to bundle formats and Xcode.
- When using multiple wavelengths, FDE can export to QuickTime in addition to PICS.
- Establishment of a data fork only file format.
Numerics.osax 1.1.2
Numerics.osax is a free Scripting Addition to provide advanced mathematical commands more>>
The computational features now include five Suites: Linear algebra, FFT and convolution, Image files, 3D array handling, and Numerical data files.
Main features:
- linear algebra (eigenvalues, linear systems solving, etc.)
- signal processing (1d, 2d, and n-d FFT, cross- and self-correlations, convolution, interpolation)
- image processing (import/export, particle analysis)
- 3D arrays (handling by reference, extraction, isosurfaces, stream lines).
Enhancements:
- Linear algebra: transpose, multmatrix, invertmatrix, solve linear system, compute eigenvalues, LUdecomposition, pivot, determinant
- Basic linear algebra and basic commands for inverting, diagonalizing, and decomposing a matrix. These commands support complex matrices. multmatrix performs the product of matrices and/with vectors: M x M, M x v, v x M, v x v.
- FFT and convolution: fft1d, fft2d, filterarray, convolve, correlate, interpolate
- Fast Fourier transforms: 1d, grouped, n-dimensional, and 2d. Use algorithms which time like N.Log N. Not powers of 2-limited. Convolution and correlation of two arrays, support periodic boundary conditions. Interpolation, linear or spline, supports periodic boundary conditions.
- Image files: imagefile bounds, convert imagefile, create imagefile, create grayimagefile, particles
- Basic commands for doing image processing: getting an images bounds, importing it as a numerical matrix and back, and doing particles analysis (get statistical info and contours of particles of an image).
- 3D array handling: open3D, close3D, list3Darrays, info3D, contents3D, extract3D, isosurface, streamline
- This Suite is to cope with 3D data and visualize them conveniently. Instead of manipulating the data in your script, you load them into memory and specify a name for them. Using the name you can extract whatever fraction of the data you really need. You can produce isosurfaces of a scalar field, and the stream lines of a vectorial field (results are triangle lists).
- Numerical data files: XNFGetArray, XNFSave, XNFdelete, XNFtoc
- This Suite introduces a new extensible data format, XNF (eXtensible Numerical File format.), extension .xnf. XNF files store binary 1D, 2D, and 3D arrays. One XNF file may contain arbitrarily many arrays of various kinds, stored under a variety of formats: the XNF file manages a Table of contents which specifies the properties of each array. Access to arrays is simply by name. Since the Table of contents is a XML, you can apply XPaths to retrieve a particular set of data. XMLLib osax required.
CoherentOptics 2.1.1
A program for the simulation of Laser illuminated optical systems and for the construction of Optical filters more>> A program for the simulation of Laser illuminated optical systems and for the construction of Optical filters
CoherentOptics is based upon a program made for Classic Mac called FFTVision that was written over a period of years for use in the research program of Professors Jeffrey Davis and myself at San Diego State University.
You can see how we have used the program by consulting the optics literature. This new program is written from scratch for the Cocoa environment in Objective C, and is still used in the optics research as SDSU. This program can read and write the two major file types of the old program.
CoherentOptics is a program for constructing optical filters and for simulating the passage of coherent light of one color and polarization at a time. This simulated propagation through an optical system, uses Fresnel optics, but no ray tracing.
CoherentOptics is capable of handling several documents at the same time. Each document and its associated windows are color coded to somewhat decrease confusion.
Enhancements
- A bug in the direct propagation option for Power PC has been corrected. There is an option to speed up script execution by suppressing the flash of each icon.
- This version computes in double precision "Fourier Transform" and "Direct Propagation" are multi-threaded, and should calculate much faster on an Intel Mac having multiple cores.
- The "Big Window" is now easier to use since the upper left corner is used as the origin of its coordinates.
- New script functions have been added to increase functionality.
San Diego State University - Fourier optics for scientists. CoherentOptics. A freeware program for constructing optical filtersSonogram 2.48
Sonogram is a highly flexible, feature-rich MP3 tool. more>>
Sonogram 2.48 is a highly flexible, feature-rich MP3 tool. Complete Description: Sonogram has been programmed at the German Research Center for Artificial Intelligence (Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI), and is a tool to analyze speech and sound signals with methods of the:
- Fast Fourier Transformation (FFT)
- Linear Predictive Coding (LPC)
- Wavelet Transformation
- cepstral analysis
- Autokorrelation
- Pitch Detection
Keiths Image Stacker 4.2
Keiths Image Stacker - Image processing program more>>
What Keiths Image Stacker provides, more than anything else, is a workspace in which to align many similar images (say from a quicktime movie of Jupiter taken through a telescope with a webcam) and then to produce a stack of the images, which consists of a single image that comprises either the sum, or the average, or some value in between of the individually stacked images.
Stacking images is a well-established method for increasing the signal-to-noise ratio in a series of similar images. True "information" will shine through the stack, while random noise will drop out.
Enhancements:
- In the Unsharp Mask and Laplacian Sharpening Interfaces, if you attempted to redefine a the preview bounds but released the mouse button without dragging a rectangle, this could cause subsequent crashes later on. Should be fixed.
- v4.1 introduced a bug into the Open FITS file interface, in which each channel opened would erase any existing channels in the stack. This made it impossible to recover an RGB stack from three FITS files. The problem has been solved.
- The sliders in the Power Spectrum Sorting Interface were being memory leaked. Fixed.
- Fixed a bug that could cause a crash when the Clips Window is closed.
- Centroid alignment wasnt using the proper algorithm to determine a pixels overall value (using average instead of max of RGB components). Fixed.
- Preview bounds for a variety of operations were not properly displayed in the FrameStack window if the FrameStack window size did not perfectly match that actual FrameStacks size. Should be fixed.
- The Laplacian Sharpening Interface did not respect the pin-zero and pin-one boxes when creating the final result after hitting the OK button. This would cause the final result to suddenly change so as to not match the preview that was available immediately before hitting OK. This is fixed now.
- The Laplacian Sharpening Interface did not remember the value of the DC term properly after being closed. Fixed.
- Half bug, half missing feature in some cases, the Marking Clip Rect (cyan border around a clip) often was not drawn for many operations. Several occurances of this bug were fixed in v4.1. Several more are fixed here.
- Turns out I was calculating 2D power spectrums quite incorrectly. Sorting by power spectrum will hopefully improve now.
- A smattering of small changes and fixes to the precise dimensions of power-2 operations bounds rects and methods for getting pixels from GWorlds (inclusion of the right and bottom edges of pixels of a bounds rect primarily)
- In the Unsharp Masking Interface, if you moved the preview rect, the old preview rect was not restored to the original image. Fixed.
- If the RGB channels of the Frame Stack were independently aligned, the single channel views in the Histograms/Levels Interface were not drawn properly. Fixed (and eliminated now that those checkboxes are gone)
- If the FrameStack was rebuilt, the RGB alignments on the FrameStack were not reinitialized to (0, 0). Bug? Stupid feature? Either way, they are initialized now.
Changes:
- Added Debayering on the individual clips, for use with cameras that have been "RAW" modded to receive the Bayer pattern directly from the cameras CCD.
- Decreased the Event reaction time slightly. This vastly cuts the amount of CPU resources being hogged by the program without noticably affecting the programs performance.
- When sorting frames by power spectrum distribution, there is now a high frequency cutoff slider in addition to the old low frequency cutoff slider. The score of a frame will be the ratio of the sum of power between the cutoffs to the sum of total power. Initial experiments suggest that this can definitely improve the final sorted order of the frames.
- A few sorting methods have been completely removed because people continue to be confused as to how to properly sort the frames in such a way as to get satisfying results. At the same time, the sorting menu has been garnished with some textual notes that should prod people in the right direction under most circumstances.
- Significant changes to centroid alignment. Centroid alignment is considerably faster than difference alignment, especially when the misalignments are large. However, it may not produce the optimal alignment (I am unsure about this. Perhaps it is optimal after all, in which it is definitely superior to the difference method). Therefore, it is suggested to use centroid alignment (4-key) first and then clean up with a difference alignment using the 3-key. The 1-key and 2-key difference alignments, despite fixing large misalignments better than the 3-key method, are slower than the centroid method, which is why centroid followed by 3-key is recommended as the best overall approach.
- Added Cross-Correlation alignment. It is used in the same fashion as the existing four methods of alignment, three for difference and one for centroid. Simply hold down the 5 key and click on a clip or a selection of clips to use it. You must, however, use a power-of-two Operations Bound rect. Otherwise the program simply beeps. While this method usually works pretty well, it sometimes gets confused and produces a completely ridiculous alignment. Additionally, it is noticeably slower than the other alignment methods. Frankly, I think the centroid method is best for macro-alignments and the key-3 difference method is best for micro-alignments.
- Added a new operation on the FrameStack called Fourier Transform Editor. This allows you to literally paint out those parts of the Fourier transform of the stack that correspond to periodic interference patterns, such as the "herring bone" pattern that pervades many long exposure modified webcams. Aligning with a brightness threshold (which deals with the same problem in some cases) is still crucial, since it provides an optimal and sharp alignment, but if the final stack is not deep enough, it can still exhibit these kinds of interference patterns. This tool will virtually eliminate them. I would guess that it should also help in mitigating Bayer pattern effects, although I have not experimented with this yet.
- The centroid alignment wasnt using the brightness threshold before. Only the difference alignment was. Now centroid alignment uses it too, as does the new cross correlation alignment (although it may introduce unnatural edges into the image which could mess up the cross correlation alignment).
- Added a new checkbox to the Open Movie Interface that lets you specify that frames should be aligned on the fly as they are brought into the workspace. Not only does this allow you to align at the time of opening the file (which doesnt really save any time if you think about it), but it allows you to specify a bounds rect in the Open Movie Interface that only needs to fit around the object in the first frame, not the full drifted area of the object in all frames. This will save memory of course. Likewise this prevents the object from drifting outside the specified rect and being clipped by accident if you didnt make the original rect big enough in the first frame.
- Added four menu commands to the View menu for viewing the RGB channels of the FrameStack individually. Note that the 1, 2, and 3 command key menu equivalents have been reassigned in accordance with this change. These menu commands work even when the various operations dialogs are open. Note, however, that the channel appearances interact with the preview rects in some strange ways. I am still working on designing the best possible interface and interaction for all the possible combinations of settings.
- Removed the recently added channel checkboxes in the Histogram/Levels Interface. They are no longer necessary now that the much easier to use menu command replacements are available.
- Documentation updates.
- Resampling of the clips used to occur on the original opened-from-disk form of the clip. It now occurs on the modified form and makes the modified form the original form after resampling is completed. This means any operations become permanant and should be turned off prior to resampling if you dont want this, including dark frame subtraction, flat field division, normalization, median filtering, and alignment. In particular, this applies to deBayering as well, but deBayering must be done before resampling, as it will not work properly after resampling.
- Increased the maximum slider value for the Mask Intensity sliders in the Unsharp Masking and Laplacian Sharpening Interfaces.
Diatoms Screen Saver 1.1
Diatoms Screen Saver is an interesting screensaver for your desktop which is based on a fast fourier transform. more>> <<less
Diatoms 1.0
Diatoms - Fast Fourier Transform screensaver more>>
The module supports multiple monitors, which is lacking in many AD modules.
Completly freeware.
SciPy 0.7.1 RC1 / 0.7.0
Free and open source package of tools for science and engineering for Python more>> Free and open source package of tools for science and engineering for Python
SciPy includes modules for statistics, optimization, integration, linear algebra, Fourier transforms, signal and image processing, genetic algorithms, ODE solvers, and more.
The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation. The SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization.
Together, they run on all popular operating systems, are quick to install, and are free of charge. SciPy and NumPy are easy to use, but powerful enough to be depended upon by some of the worlds leading engineers and scientists.
If you need to manipulate numbers on a computer and display or publish the results, give SciPy a try!
NOTE: SciPy is licensed and provided under the terms of the BSD License.
System requirements:
-
- Python 2.4 or later
CUDA 2.2
A C language development environment for CUDA-enabled GPUs. more>> A C language development environment for CUDA-enabled GPUs.
The CUDA Toolkit is a C language development environment for CUDA-enabled GPUs.
In a matter of a few years, the programmable graphics processor unit has
developed into an absolute computing workhorse. With multiple cores driven by very high memory bandwidth, todays GPUs offer incredible resources for both graphics and non-graphics processing.
The main reason behind such an evolution is that the GPU is specialized for compute-intensive, highly parallel computation exactly what graphics rendering is about and therefore is designed such that more transistors are devoted to data processing rather than data caching and flow control.
The CUDA development environment includes:
- nvcc C compiler
- CUDA FFT and BLAS libraries for the GPU
- Profiler
- gdb debugger for the GPU (alpha available in March, 2008)
- CUDA runtime driver (now also available in the standard NVIDIA GPU driver)
- CUDA programming manual
The CUDA Developer SDK provides examples with source code to help you get started with CUDA. Examples include:
- Parallel bitonic sort
- Matrix multiplication
- Matrix transpose
- Performance profiling using timers
- Parallel prefix sum (scan) of large arrays
- Image convolution
- 1D DWT using Haar wavelet
- OpenGL and Direct3D graphics interoperation examples
- CUDA BLAS and FFT library usage examples
- CPU-GPU C- and C++-code integration
- Binomial Option Pricing
- Black-Scholes Option Pricing
- Monte-Carlo Option Pricing
- Parallel Mersenne Twister (random number generation)
- Parallel Histogram
- Image Denoising
- Sobel Edge Detection Filter
- MathWorks MATLAB Plug-in
Main features:
- Standard C programming language enabled on a GPU.
- Unified hardware and software solution for parallel computing on CUDA-enabled NVIDIA GPUs.
- CUDA compatible GPUs range from lower power notebook GPUs to high performance, multi-GPU systems.
- CUDA-enabled GPUs support the Parallel Data Cache and Thread Execution Manager.
- Standard numerical libraries for FFT (Fast Fourier Transform) and BLAS (Basic Linear Algebra Subroutines).
- Dedicated CUDA driver for computing.
- Optimized direct upload and download path from the CPU to CUDA-enabled GPU.
- CUDA driver interoperates with OpenGL and DirectX graphics drivers.
- Support for Linux 32/64-bit and Windows XP 32/64-bit operating systems.
- Direct driver and assembly level access through CUDA for research and language development.
Enhancements
- Visual Profiler for the GPU - The most common step in tuning application performance is profiling the application and then modifying the code. The CUDA Visual Profiler is a graphical tool that enables the profiling of C applications running on the GPU. This latest release of the CUDA Visual Profiler includes metrics for memory transactions, giving developers visibility into one of the most important areas they can tune to get better performance.
- Improved OpenGL Interop - Delivers improved performance for Medical Imaging and other OpenGL applications running on Quadro GPUs when computing with CUDA and rendering OpenGL graphics functions are performed on different GPUs.
- Texture from Pitch Linear Memory - Delivers up to 2x bandwidth savings for video processing applications.
- Zero-copy - Enables streaming media, video transcoding, image processing and signal processing applications to realize significant performance improvements by allowing CUDA functions to read and write directly from pinned system memory. This reduces the frequency and amount of data copied back and forth between GPU and CPU memory. Supported on MCP7x and GT200 and later GPUs.
- Pinned Shared Sysmem - Enables applications that use multiple GPUs to achieve better performance and use less total system memory by allowing multiple GPUs to access the same data in system memory. Typical multi-GPU systems include Tesla servers, Tesla Personal Supercomputers, workstations using QuadroPlex deskside units and consumer systems with multiple GPUs.
- Asynchronous memcopy on Vista - Allows applications to realize significant performance improvements by copying memory asynchronously. This feature was already available on other supported platforms but is now available on Vista.
- Hardware Debugger for the GPU - Developers can now use a hardware level debugger on CUDA-enabled GPUs that offers the simplicity of the popular open-source GDB debugger yet enables a developer to easily debug a program that is running 1000s of threads on the GPU. This CUDA GDB debugger for Linux has all the features required to debug directly on the GPU, including the ability to set breakpoints, watch variables, inspect state, etc.
- Exclusive Device Mode - This system configuration option allows an application to get exclusive use of a GPU, guaranteeing that 100% of the processing power and memory of the GPU will be dedicated to that application. Multiple applications can still be run concurrently on the system, but only one application can make use of each GPU at a time. This configuration is particularly useful on Tesla cluster systems where large applications may require dedicated use of one or more GPUs on each node of a Linux cluster.
Pinned Memory Support:
- These new memory management functions (cuMemHostAlloc() and cudaHostAlloc()) enable pinned memory to be made "portable" (available to all CUDA contexts), "mapped" (mapped into the CUDA address space), and/or "write combined" (not cached and faster for the GPU to access).
- cuMemHostAlloc
- cuMemHostGetDevicePointer
- cudaHostAlloc
- cudaHostGetDevicePointer
Function attribute query:
- This function allows applications to query various function properties.
- cuFuncGetAttribute
2D Texture reads from pitch linear memory:
- You can bind linear memory that you get from cuMemAlloc() or cudaMalloc() directly to a 2D texture. In previous releases, you were only able to bind cuArrayCreate() or cudaMallocArray() arrays to 2D textures.
- cuTexRefSetAddress2D
- cudaBindTexture2D
Flags for event creation:
- Applications can now create events that use blocking synchronization.
- cudaEventCreateWithFlags
New device management and context creation flags:
- The function cudaSetDeviceFlags() allows the application to specify attributes such as mapping host memory and support for blocking synchronization.
- cudaSetDeviceFlags
Improved runtime device management:
- The runtime now defaults to attempting context creation on other devices in the system before returning any failure messages. The new call cudaSetValidDevices() allows the application to specify a list of acceptable devices for use.
- cudaSetValidDevices
Driver/runtime version query functions:
- Applications can now directly query version information about the underlying driver/runtime.
- cuDriverGetVersion
- cudaDriverGetVersion
- cudaRuntimeGetVersion
New device attribute queries:
- CU_DEVICE_ATTRIBUTE_INTEGRATED
- CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY
- CU_DEVICE_ATTRIBUTE_COMPUTE_MODE
Documentation:
- Doxygen-generated and cross-referenced html, pdf, and man pages.
- Runtime API
- Driver API
FFTW 3.2 Alpha 3
C library that will help you compute the Discrete Fourier Transform more>> C library that will help you compute the Discrete Fourier Transform
FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size. FFTW will compute the DFT in both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).
Main features:>
- Speed. (Supports SSE/SSE2/3dNow!/Altivec, since version 3.0.)
- Both one-dimensional and multi-dimensional transforms.
- Arbitrary-size transforms. (Sizes with small prime factors are best, but FFTW uses O(N log N) algorithms even for prime sizes.)
- Fast transforms of purely real input or output data.
- Transforms of real even/odd data: the discrete cosine transform (DCT) and the discrete sine transform (DST), types I-IV. (Version 3.0 or later.)
- Efficient handling of multiple, strided transforms. (This lets you do things like transform multiple arrays at once, transform one dimension of a multi-dimensional array, or transform one field of a multi-component array.)
- Parallel transforms: parallelized code for platforms with Cilk or for SMP machines with some flavor of threads (e.g. POSIX). An MPI version for distributed-memory transforms is also available, currently only as part of FFTW 2.1.5.
- Portable to any platform with a C compiler. Documentation in HTML and other formats.
- Both C and Fortran interfaces.
Enhancements:
- Performance improvements for sizes with factors of 5 and 10.
- Documented FFTW_WISDOM_ONLY flag, at the suggestion of Mario Emmenlauer and Phil Dumont.
- Port Cell code to SDK2.1 (libspe2), as opposed to the old libspe1 code.
- Performance improvements in Cell code for N < 32k, thanks to Jan Wagner for the suggestions.
- Cycle counter for Sun x86_64 compiler, and compilation fix in cycle counter for AIX/xlc (thanks to Jeff Haferman for the bug report).
- Fixed incorrect type prefix in MPI code that prevented wisdom routines from working in single precision (thanks to Eric A. Borisch for the report).
- Added make check for MPI code (which still fails in a couple corner cases, but should be much better than in alpha2).
- Many other small fixes.
License:GPL
DtBlkFx 1.1
Free FFT plug-in for your Mac more>> Free FFT plug-in for your Mac
DtBlkFx by Darrell Barrell is a freeware Fast-Fourier-Transform (FFT) based multi effect VST plug-in for Mac.
Main features:
- Precision parametric equalizing with sharp-roll off, adjust individual harmonics of a sound.
- Harmonic based (or comb) filtering, including active harmonic tracking.
- Various types of noise control, change contrast between loud and soft frequencies, clip frequencies or apply sound smearing.
- Frequency shifting, harmonic and non-harmonic shifting, including active harmonic repitch.
- Various methods of mixing left and right channels, standard and harmonic vocoding, convolution like mixing and more.
- Frequency masking, set harmonic or threshold masks for any effect.
- Up to 8 effects in series.
- GUI graphics can be customized.
System requirements:
- AU or VST host
- Page: 1 of 1
- 1