PixInsight is an advanced image processing software platform designed specifically for astrophotography and other technical imaging fields. PixInsight is a modular, open-architecture system where the entire processing and file handling capabilities are implemented as external, installable modules.
PixInsight has been ported natively to FreeBSD, Linux, Mac OS X and Microsoft Windows operating systems and is available in 32-bit and 64-bit versions on all supported platforms. PixInsight is a strongly multithreaded environment able to exploit all processors and processor cores available on all platforms and hardware architectures.
PixInsight is both an image processing environment and a software development framework. The core PixInsight application integrates three user interfaces: a graphical interface, a command-line interface, and a scripting interface based on the JavaScript language. As a development platform, PixInsight provides the PixInsight Class Library (PCL), an ISO C++ framework for development of PixInsight modules, and the PixInsight JavaScript Runtime (PJSR), an ECMA 262-3 compliant environment readily available in the core PixInsight application.
Its open architecture makes PixInsight an extremely evolving and versatile platform. Software developers can author new PixInsight modules to meet any image processing needs. PixInsight can be extended to the fields of CCD photometry and astrometry, and easily beyond astronomical imaging.
The PixInsight project originates from the inside of astrophotography: PixInsight is a software platform made by astrophotographers, for astrophotographers.
PixInsight's graphical user interface (GUI) lets you handle images and processes independently through specific interface tools and resources. This gives you full control over all of the elements that take part in your processing workflow. Nothing is lost in PixInsight: every aspect of your work can be rescued at any point to modify and reuse it as you decide.
For example, you can extract an arbitrary subset of the processes that you have applied to a particular image to edit, organize and store them as disk files. Processes are reusable in multiple processing projects in PixInsight. You can document your processes with user-defined textual information, so you can share them with other users, giving them detailed information about your purposes and processing strategies.
Process icons are characteristic of the PixInsight interface. A process icon encapsulates a process instance and allows you to handle all of its properties through an intuitive and flexible interface. The implementation of process icons in PixInsight LE has been widely acclaimed as a fresh, innovative contribution to graphical interfaces for imaging applications. PixInsight Standard further boosts process icons, and introduces more iconic metaphors to key elements in the image processing workflow: image icons and image containers.
Isolation between images and processes plays a key role in the PixInsight platform. Once you gain some experience with PixInsight's GUI, you'll hate having to use other simplistic approaches.
PixInsight's core processing engine supports five numeric types for internal storage and manipulation of pixel values:
With the exception of complex images, which are only supported in the PCL and JavaScript programming interfaces, all processes in PixInsight can be applied to any data format without distinction. To put a few well-known examples, you can apply unsharp mask, curves, histogram transformations and wavelet transforms irrespectively to 8, 16 or 32-bit integer images, and to 32 or 64-bit floating point images.
The 8-bit format allows you to save RAM and disk space to store some masks and intermediate images not requiring more than 256 discrete sample values. With 64-bit floating point images you can perform extremely accurate and complex transformations into a huge dynamic range of 1015 discrete sample values. With PixInsight you have the freedom to select the pixel data format that best suits to each element of your processing workflow.
Any image can work as a mask in PixInsight. Just that simple. Masking is an essential feature for virtually any nontrivial image processing task. When you activate a mask for a target image in PixInsight, black mask pixels protect target pixels completely, while white mask pixels allow full processing. A gray mask pixel yields a proportional mixture of original and processed target pixel values. This allows you to modulate image processing algorithms through fuzzy logic criteria. Masks are powerful tools to adapt each process to the natural uncertainty inherent to the data, where the signal coexists with noise as a function of illumination.
PixInsight implements the richest and most flexible masking system that you've ever seen in a technical imaging application: any image can work as a mask for an unlimited number of images, with the condition that the mask and all masked images must have the same dimensions.
The GUI manages masking relations in a completely transparent and automatic way. You can modify a mask, and as long as mask changes don't invalidate masking relations, all masked images are notified and updated automatically.
A preview is a temporary subimage that you can freely define over any image in PixInsight. You can use a preview to try out any number of processes without modifying its parent image.
Previews are accurate: Every process that you apply to a preview works with actual pixels, just as it will do when you apply it to its parent image. You can obtain histograms, statistics and any kind of numeric readouts from previews.
Previews are modular processing tools: In all respects, a preview behaves exactly as a regular image does. You can duplicate a preview as another preview or as an independent image, or view and extract a preview's processing history to store it as a ProcessContainer object that can be edited, managed and saved as a process icon, converted to JavaScript source code, etc.
Finally, previews are versatile: A preview's processing history can be reused to apply it to other previews or images without limitations. You can define an unlimited number of previews for any image, where you can try out different processing strategies to compare their results rigorously.
The Processing Console window in PixInsight provides a powerful command-line interface that can be used along with the GUI. When you learn how to use PixInsight's command line, you'll realize that nothing can beat it to perform a large number of advanced, complex operations, especially when groups or sets of images and disk files have to be processed quickly and easily.
For example, you can open all JPEG images on the current directory by simply entering this command:
open *.jpg
So simple, and so powerful. How about rotating a set of images 90 degrees counter-clockwise? Try this command:
FastRotation -r90 M33*
The command above would apply the FastRotation process to rotate +90 degrees every image whose identifier begins with "M33".
Along with a large set of internal and emulated UNIX commands, all installed processes can be invoked from the command-line in PixInsight. Tired to type the "FastRotation" word? No problem:
alias r FastRotation
Now you can use a command like "r -r90 M33*". What about running an operating system command without having to open a terminal window? No problem: PixInsight's console can execute any external process by just prefixing it with a bang sign (!). For example:
!ls -l /home/john/astroimages/2007/*.fit?
and you'll get a list of all FITS files on the specified directory, using the standard ls program. The output of ls is sent to PixInsight's console, which acts just as a system terminal.
You can even launch a new instance of the PixInsight core application as a detached process (double bang prefix):
!!$PXI_BINDIR/PixInsight
Or use PixInsight's JavaScript runtime as an extremely powerful calculator with the js command:
js Math.sqrt(1/Math.PI);
This is just a small sample of the large capabilities of PixInsight's command-line.
PixInsight's JavaScript Runtime Environment (PJSR) allows users to create their own tools to meet their specific needs, try out new algorithms, generate high-quality graphics, and perform complex tasks involving thousands of images.
This obviously makes the PixInsight platform much more powerful and versatile. Imagine for example, that you have to open and process one hundred images, adapting the applied processes to individual image properties: wouldn't it be easier to have a script that makes it for you?
The Script Editor interface is an integrated development environment that includes a fully configurable code editor, syntax highlighting, an object browser tree that provides access to all properties and methods of core and installed objects, code completion, and much more.
Scripts are smoothly integrated in the whole PixInsight platform: all installed processes are automatically scriptable. You can apply any sequence of processes to an image, extract its processing history, and generate a script automatically with just a couple clicks. Imagine the power of this: imagine the power of your creativity.
Included in the default set of processes you'll find, among many others:
Complete set of geometric transformations: resample, binning, crop/expand, arbitrary rotatation, fast rotations, translation, and dynamic cropping/rotation/scaling. Available pixel interpolation algorithms include: nearest neighbor, bilinear, artifact-free bicubic spline, cubic filter interpolations (parameterized Mitchell-Netravali, Catmull-Rom and cubic B-spline interpolations) with user-defined smoothness level, and Bourke's bicubic B-spline.
High-precision histogram and curves transformations with full real-time previsualization, full real-time previsualization of output histogram functions, real-time readouts, luminance, hue and saturation curves, zoomed histogram functions and curves up to 1000:1.
Advanced noise reduction algorithms: ACDNR (Adaptive Contrast-Driven Noise Reduction) with full real-time previsualization, multiscale (wavelet-based) noise reduction, GREYCstoration image normalization and SCNR (Subtractive Chromatic Noise Reduction).
Advanced multiscale processing. À trous wavelet transform with user-defined scaling functions, per-layer adaptive noise reduction and deringing, large-scale transfer functions, automatic significant structure detection and visualization, and the possibility of working with extremely large dimensional scales (only limited by the available RAM).
High-performance HDRWaveletTransform algorithm implementation that allows you to deal with any high dynamic range problem.
State-of-the-art regularized Richardson-Lucy and Van Cittert deconvolution algorithms with fully customizable PSF, wavelet regularization parameters, and efficient deringing algorithms. Optional step-by-step interactive control of deconvolution procedures with full previewing and evaluation of results.
Interactive and automatic gradient correction with enhanced implementations of our widely acclaimed DynamicBackgroundExtraction (DBE) and AutomaticBackgroundExtractor (ABE) algorithms.
ImageCalibration tool including the following corrections: overscan (up to 4 user-definable overscan regions), master bias, master darks, master flats, and superflats. Our image calibration tool includes a powerful dark optimization/scaling algorithm based on iterative multiscale noise evaluation. This tool has been released as an open-source product under GPL V3 license.
Several interactive and automatic image registration tools, including Fourier-based featureless registration and feature-based automatic and manual registration algorithms. StarAlignment is an extremely accurate and versatile automatic image registration and mosaic construction tool for deep-sky images. StarAlignment includes automatic image intersection detection and automatic mosaic frame equalization. DynamicAlignment is an interactive registration system for versatile alignment of deep-sky images under arbitrary geometrical transformations, including arbitrary local distortions.
ImageIntegration tool with average, median, minimum and maximum image combination operators; automatic image weighting/optimization based on multiscale noise evaluation; optional 64-bit integration result; automatic persistent file caching for fast retrieval of statistical data; min/max, percentile clipping, sigma clipping, Winsorized sigma clipping, averaged (Poisson-based) sigma clipping, linear fit clipping and CCD noise model rejection algorithms; automatic image normalization and scaling, and generation of pixel rejection maps.
Sophisticated PixelMath process with enhanced C syntax, multiple expressions, user-defined variables and constants, a large set of mathematical functions and operators, and an equation editor interface.
Morphological transformations (erosion, dilation, opening, closure, median and selection filters) with customizable n-way structuring elements, including a structuring element editor and database manager.
Exponential transformations (SMI and PIP functions).
CloneStamp tool for cosmetic correction of images.
In preparation: High-dynamic range composition tool (a C++ reimplementation of the already available HDRComposition JavaScript script).
In preparation: Gaussian and user-defined convolution filters with graphical kernel filter designer and filter manager utilities.
In preparation: LayeredComposition process with powerful and versatile bitmap, vector-based and text drawing tools.
Besides this default set, created by the Pleiades Development Team (PTeam), new processes, tools and utilities are being written by a growing community of developers, thanks to the open architecture of the PixInsight platform.
Our implementation of the FITS format is both robust and strictly conformant to the standard defined by the IAU FITS Working Group (IAU-FWG) authority (FITS Standard Specification 3.0, July 2008). We support all integer and floating-point data formats defined by the IAU-FWG.
We have pioneered support for some important features to integrate the FITS format in the natural workflow of imaging applications. Our implementation fully supports embedding of the following data in FITS files:
These embedded data items are implemented through FITS extensions. This demonstrates that the word "Flexible" in the FITS name responds to a reality. With PixInsight's FITS implementation, you can work with FITS just as you do with TIFF or JPEG2000. FITS is, in fact, an excellent data format for any field of technical imaging, not just for astronomy.