Munipack's logo


Kombine composes multiple frames into a new frame. This routine provides stacking of multiple frames as well as assembling of a mosaic.


munipack kombine [..] files


Purpose of this routine is to collect observed frames together to reveal very faint objects (potentially invisible on a particular frame), to increase of the dynamic range of frames, to average frames or to create of a mosaics covering larger sky area than any single frame.

The processing of frames follows the way: Every input frame is re-projected on the sky in a grid while its nodes are interpolated. Values for every node are averaged. The output frame is created as a projection of the sky nodes onto plane of a new synthetic frame.

The processing is relative flexible and has advantageous characteristics. Result image can be scaled to arbitrary size, rotated, shifted and reflected. The routine provides sub-pixel resolution. The blurring of image due to convolution can be reduced by choose interpolation method.

The output frames can be recommended generally for a regular photometry except photometry of background, because different levels of particular images are removed during processing.

Input And Output

On input, list of frames with astrometry calibration is necessary. A regular photometry calibration is recommended for averaging.

On output, a new FITS frame is created.

Memory allocation

Kombine requires approximately NAXIS(1)*NAXIS(2)*4 bytes per frame (frames are stored as single precision real numbers). For an illustration, one hundredth of 1000 x 1000 frames (1MB) takes 400 MB in memory. Some additional memory (commonly four frames) is also required.

The robust mean mode requires twice more of memory per frame which means that 800 MB of memory will be required in the above case.


Parameters for composition:

-i, --interpol [near,bilinear,bicubic,bi3conv]
An interpolation method selection: nearest neighbourhood, bilinear, bicubic (default) and bi3conv by convolution. The plain bi-cubic interpolation is preferred against to other variants because it gives smooth and appropriate images. The variant of bi-cubic convolution can give better results for critically under-sampled frames. The nearest neighbourhood method gives low quality results in a minimal time.
Switch-off subtract of the estimated background. As the result, the frames has properly scaled background including sky brightest; any composed frames, especially mosaics, will show white and black regions.
Compute average by arithmetic mean for every single pixel of output. By default, average is computed by robust mean giving brilliant look of result, but which is significantly slow and memory consuming.

Geometry parameters:

-p, --projection [none, gnomonic]
projection: none, gnomonic (default)
--rcen ddd.ddd, --dcen ddd.ddd
centre of projection in Right Ascension and Declination [deg]
--pm-ra d.ddd, --pm-dec d.ddd
proper motion of centre of projection in [deg/day]
--pm-jdref JD
reference Julian date for the proper motion
--width xxx, --height yyy
dimensions of the output frame in pixels
--xcen xxx.x, --ycen yyy.y
centre of projection on result [pix] (default: width/2, height/2)
--scale sss.sss
scale [deg/pix]
--angle ddd.ddd
rotation angle [deg]
--reflex [yes|no]
setup reflection

Unspecified parameters are inherited from the first frame on input. The strategy is chosen as the way of minimal surprise.

Exotic mounts of a camera device can be misleading, the live will more easy with set of the zero rotation angle (--angle 0) and with no reflection (--reflex no) options.

See Common options for input/output filenames.


The very basic and common way of use is like

$ munipack kombine images*.fits

All parameters of output frame (saved to kombine.fits) are inherited from the first frame.

There a way how to save the result under specified filename which has main axis oriented by a conventional way

$ munipack kombine -o kombi.fits --angle 0 --reflex no images*.fits

The frames can be composed into a large canvas 1000×1000 pixels and scaled by factor two. As the first step, one derives the frame scale by FITS keywords

$ munipack fits -K CD1_1,CD1_2 image1.fits
CD1_1   = -2.6589961865059603E-04
CD1_2   = -6.0182917772180531E-06

The frame scale is √({CD1_1}2 + {CD1_2}2) = 2.66e-4 deg/pix. The parameters are

$ munipack kombine --width 1000 --height 1000 --scale 5.32e-4 images*.fits

A little bit unusual usage of composition is for tracking of comets or faint asteroids:

$ munipack kombine --pm-ra 0.4 --pm-dec -0.01 images*.fits

The utility sets initial frame position and time by the first image and shifts all next images by the specified proper motion. Best way how to get values of the proper motion is to use of its ephemeris. An alternative, for visible objects, is the difference of object coordinates between the first and last images.

See Also

Frame Composition is detailed tutorial how to get a deep exposure while, Mosaics is detailed tutorial how to assembly a mosaic. Frame Colouring uses kombine to get more deep frames with nice example of use --rcen, --dcen parameters.

See also: Slip, Common options