I have multiple noisy photos (caputed without tripod) that needs to be adjusted (moved/rotated) and averaged.

How it's better to do it in Linux with FOSS console-based programs?

Current way is something like:

mplayer mf://*.JPG -vo yuv4mpeg:file=qqq.yuv
transcode -i qqq.yuv -y null -J stabilize=maxshift=500:fieldsize=100:fieldnum=6:stepsize=50:shakiness=10
transcode -i qqq.yuv -J transform=smoothing=100000:sharpen=0:optzoom=0 -y raw -o www.yuv
mplayer www.yuv -vo pnm
gm convert -average 0*.ppm q.ppm


  1. Convert photos to video
  2. Apply Transcode's "Stabilize" filter
  3. Convert the video back to images
  4. Average the images.

It works, but bad: photos still not perfectly adjusted and the whole sequence is very slow.

What is better way of doing it?

Update: Experimented with "Hugin". It only distorted all photos according some "projection" and refused to merge them: enblend: excessive overlap detected; remove one of the images. Of course "excessive" - they're all almost in the same place. No averaging? /* and images are not actually aligned */.

Proceeding to experiments with enblend/panorama_tools/ale.


Enblend is a tool for stitching photographs into panoramas. What you are looking for is a combination of "align_image_stack" and "enfuse". The first application takes care of the shifting, the second application takes care of the actual merging and averaging. Quite a few parameters available for both steps as well.


You might want to have a look at Panorama Tools and Enblend.

However I have to disclaim any experience with those, I just know those tools exist.


ALE - Anti-Lameness Engine - just feed it frames and get better one.

ale *.JPG out.ppm

Seems to be the tool for the job - mets all requirements, configurable and have other features as well.

Disadvantage: default mode is slowly slowly slow (even slower than original transcode hack), (good point that progress indication is good).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.