/SerialPhotoMerge

Merge an unlimited number of images into one

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Serial Photo Merge

Serial Photo Merge is a python3 tool for computing the average of an unlimited number of images. Serial Photo Merge (ideally) do not load in memory all the images so it can work with a very big numbers of images. It is useful for creating a daylight very long exposure photography.

Features

  • Average of an unlimited number of images
  • Remove extraneous elements given a collection of images
  • RAW support
  • Supprt for 16bit color depth (otput 16bit tiff)

How to

Take your photo-camera, a good quality tripod and, if necessary, an ND filter, mount the camera on the tripod and shot a lot of images of the same subject. After this you should use Serial Photo Merge for combining the images and obtaining the effect of a super long exposure; also in a full day light.

Advantages of Serial Photo Merge respect to the classical ND filters:

1. Improve the DR of your images. 2. Day light extreme long exposure. 3. Better flexibilty in settings the aperture and exposure time of your camera. 4. Better capacity in controlling situations with a difficult light.

Advantages of Serial Photo Merge respect to others software [like photoshop or imagemagik]

Photoshop and Imagemagik load into memory all the images before computing the average, so the maximal number of images is limited by your installed RAM. With Serial Photo Merge you can virtually process an unlimited number of images.

Example

Here's some usage examples of how to use Serial Photo Merge

Observation: The images that don't fit in size and color depth of the first image in the directory will be discarded during the process.

  1. Compute the average of the images in the directory "/myimagecollection/serial/" and save the result in the default file: "/tmp/out_merge.jpg"
> ./serial_photo_merge -d /myimagecollection/serial/
  1. Compute the average of the images in the directory "/myimagecollection/serial/" and save the result in "/tmp/r.tif" if the imput images are in RAW the resulting r.tif will be written in 16bit.
> ./serial_photo_merge -d /myimagecollection/serial/ -o /tmp/r.tif -ocd auto
  1. Force the output tif to 16bit:
> ./serial_photo_merge -d /myimagecollection/serial/ -o /tmp/r.tif -ocd 16
  1. Remove extraneous elements (slow at the moment; max 3 or 4 images)
> ./serial_photo_merge -d /myimagecollection/serial/ -o /tmp/r.jpg -a re

Requirements

Python 3
numpy: http://www.numpy.org/
scipy: https://www.scipy.org/
matplotlib: http://matplotlib.org/
rawpy: https://github.com/neothemachine/rawpy (optional)
imageio: https://github.com/imageio/imageio (optional)

Optional arguments


usage: serial_photo_merge [-h] [-d DIR_IN] [-o OUT_IMAGE] [-ocd {8,16,auto}]
[-a {avg,average,re,remove_extraneous}]

optional arguments:
-h, --help
show this help message and exit

-d DIR_IN, --dir_in DIR_IN
set the input directory

-o OUT_IMAGE, --out_image OUT_IMAGE
set the output file (default: /tmp/out_merge.jpg )

-ocd {8,16,auto}, --out_color_depth {8,16,auto}
set the output colordepth [dafault: auto]

-a {avg,average,re,remove_extraneous}, --algorithm {avg,average,re,remove_extraneous}
select the algorithm:
avg|average: compute the average.
re|remove_extraneous: remove extraneous elements

Image Example

The following image has been produced by combining more than 100 images and about 350 seconds of total exposure.