FEATURES

Performance Tuning:

Version 2 has been optimized to take advantage of multiple-core processors for improved performance. Here is a typical example of processor usage in Windows 7 Pro, 64-bit version of Version 1 and Version 2.

Version 1
Version 2

The tests consisted of 100 deconvolution iterations on a quad-core Nehalem processor machine running ar 2.66 GHz (8 virtual cores). Note Version 2's CPU Usage compared to Version 1. This performance enhancement translates into a massive time saving. The 100 iterations of a 4096 x 4096 image took 39 minutes with version 1 and 105 seconds with version 2! Even using 2 cores at 2.66 GHz, the same 100 iterations completed in 4.5 minutes.

Image Data:

CCDStack accepts image-file formats FITS, SBIG, TIFF, JPEG, BMP and DSLR RAW. Depending on the format, CCDStack reads 8, 16 and 32 bit monochrome or color files to create 32-bit floating-point image data and 24, 48, and 96 bit color files to create three 32-bit floating-point data structures.

Internal calculations are all performed in 32-bit floating point to maximize data precision. Data can be saved in a number of precisions, including 32-bit floating point.

The display bitmap is the immediate source of the image seen on your screen, though it is not the screen image itself. The display bitmap consists of 8-bits/color and is derived from the image data primarily via adjust display. Note that adjust display has no effect on the underlying image data (e.g. DDP or sharpen does not modify the underlying 32-bit image data).

Image Stack:

An image stack is a group of individual exposures framing the same object or field. Image stacks are typically used to accumulate long total exposure times that would otherwise be impractical or impossible in a single exposure. Such individual exposures are registered/aligned, normalized, data reject and combined to create a composite image.

Image stacks can be processed to remove undesirable artifacts (such as cosmic rays or airplane trails) from the composite image. CCDStack implements several data rejection procedures to detect artifacts, pixel by pixel, and reject those pixels in the image combine

Calibration:

Raw CCD images are calibrated to remove systematic artifacts from the camera and lens. Calibration consists of dark subtraction and flat fielding. Dark subtraction removes the pixel-to-pixel variation due to dark-current accumulation. Flat fielding compensates for variations in illumination across the CCD and pixel-to-pixel variations in sensitivity. Bias frames allow calibration of flat frames as well as scaling darks for minimum RMS noise.

Star Bloom Removal:

Star bloom removal can be done in the traditional fashion in which all blooms are automatically recognized and removed while interpolating the data underneath.

With CCDStack's advanced star bloom removal, images of different exposures can be added to the stack that do not contain blooms. Blooms are identified and the underlying data is retrieved from shorter exposures. This allows for the actual image data underneath blooms to be revealed and not interpolated.

Image Registration:

CCDStack supports a number of different registration algorithms. These include

CCDStack's new Star Snap technology aligns all the images to the reference image by matching one or more reference stars. Star Snap can be done with one click using the shift only option, or multiple stars can be selected in the base image, and all other images in the stack will snap precisely to the base image using shift, scale and rotation parameters.

Once images are registered, they need to be re-sampled. CCDStack offers several re-sampling methods to optimize image integrity for various conditions and purposes (e.g. preserve noise profiles, maximize resolution, or minimize artifacts and distortion).

Normalization:

Normalizing the stack results in all images having similar ADU values for corresponding pixels (and area and features). Normalization mathematically compensates for variations in sky background, sky transparency, exposure times and so on. Such compensation is often necessary to produce optimal data rejection and image combines.

For example, after normalization the average ADU of a 5-minute exposure will approximate the average ADU of a 10-minute exposure (that’s what normalization does). If these images are summed without weights then the 10-minute exposure will contribute the same S/N as the 5-minute exposure, thus resulting in sub-optimal S/N. But a weighted sum preserves this difference to produce optimal S/N.

Data Rejection:

Data rejection is used to remove or attenuate undesirable artifacts in the images in your stack. CCDStack implements a variety of data rejection procedures to detect undesirable pixels and mark them as rejected. Rejected pixels are graphically displayed for each image so that the effects of data rejection procedures are obvious.

The following lists rejection methods used on the data from the image itself:

  • Clear
  • Reject hot/cold pixels
  • Reject blooms
  • Reject range
  • Clear range
  • Grow
  • Freehand draw
  • Impute rejected pixels
  • Set rejects to Missing Value

Pixel stack data rejections operate on pixel stacks, which are a collection of pixels from a single location in all images in the stack. These procedures determine rejection based on the statistics of the pixel stack only (i.e. near by pixels within an image have no influence). There are basically 2 different types of stack rejections: Sigma-reject and clip.:

  • STD sigma-reject
  • Poisson sigma-reject
  • Linear factor reject
  • Min/Max Clip

Image Combine:

These procedures combine all included images in the stack to create a new image:

Sum Combine- A new image is created from the weighted sum of all included images in the stack.

Mean Combine - A new image is created from the weighted mean of all included images in the stack.

Median Combine - A new image is created from the un-weighted median of all included images:

Gradient Removal:

Different methods for computing the counter-gradient are used, based on the number of selected areas:

  1. nothing occurs when only one area is selected
  2. two areas define a linear gradient running between the two points (centers of the areas)
  3. three areas define a tilted plane that passess thru the three points
  4. four or more areas define a complex space where every point is weighted by a psudo-gravitational model.

Sharpening:

Deconvolution is a process that sharpens the image via a modified maximum entropy deconvolution algorithm developed by Benoit Schillings. Maximum entropy deconvolution minimizes a smoothness function in the image. Resolution depends on the signal-to-noise and thus is dependent on image particulars (sampling, object flux, noise) and varies across the image. Version 2 adds new deconvolution controls, PSF visualization and option for asymmetrical empirical PSF, which can be used to correct small tracking errors.

Unsharp mask is a method to sharpen and increase fine-scale contrast. A blurred (unsharp) mask is combined with the image to produce the sharpened image. CCDStack implements two different methods of combining the image and mask: DDP and non-DDP (traditional):

Color:

CCDStack handles color images using a psuedo-Lab scheme. The image data consists of a Luminance (L) 32-bit floating-point 2-dimensional array and two color-ratio 32-bit floating-point arrays. These psuedo-Lab values are converted to RGB for the display bitmap, output files, and color controls.

DSLR and One-Shot Color (OSC):

Version 2 contains special procedures for OSC and DSLR
(e.g. RAW Canon, Nikon, Olympus, etc.). Flat calibration is optimized for RAW DSLR/OSC. There are several options for converting DSLR/OSC to color or grayscale images, including color interpolation and pixel extractions. DSLR and OSC images are typically very large, for which a 64-bit version of Windows is
strongly recommended.


SYSTEM
REQUIREMENTS

Operating System

Windows 7, 32- and 64-bit
Windows Vista, 32- and 64-bit
Windows XP-64
Windows XP


.NET Framework 4.0

Now Available!
The Complete Tutorial of CCDStack
This fourth volume is part of the continuing series of tutorials, called Making Every Pixel Count by,
Adam Block.

Find out More >>>