Forum Astuces.divers Focus stacking avec enfuse

Posté par .
Tags : aucun
2
25
avr.
2010
Le focus stacking [http://en.wikipedia.org/wiki/Focus_stacking] consiste a utiliser un empilement de photos dont la mise au point à été faite a différentes profondeurs afin d'obtenir une seule image avec une profondeur de champ étendue. Je n'ai pas trouvé d'outil libre pour le faire simplement.
Mais il existe enfuse qui est utilisé par Hugin pour réaliser de la fusion d'images à expositions différente ( ca se rapproche de la hdr mais en restant sur de images à 8 bits de profondeur) mais peut aussi faire de la fusion basée sur le contraste.

Dans le script ci dessous, il ya aussi align_image_stack qui vient du paquet hugin , il sert a optimiser l'alignement des images entres elles, c'est son utilisation qui m'a imposé la conversion préalable des images en format tif, d'où l'utilisation de imagemagick et exiftool (pour conserver l'orientation).

Ce script utilise toutes les images jpg présentes dans le dossier sur le quel on lance le script, il faut donc trier les images avant de l'utiliser. En général je faisais plusieurs séries de photos que je liais ensuite dans des dossiers numéroté de 00 a XX , je lance le script depuis le dossier parent , et il me créait ensuite les images résultats dans ce dossier en les numérotants.

Pour la prise de vue il faut éviter d'avoir des écarts importants de plan focal entre 2 prises de vues sucéssives car la plupart des objectifs photos font un léger zoom lors du changement de mise au point, ce qui peut créer un halo autour de certaines zones de l'image finale. L'option hardmask de enfuse permet de limiter cet effet si la première image est aussi celle du premier plan.


#! /bin/bash
rename 'y/A-Z/a-z/' *
orientation=$(exiftool $(ls *.jpg | tail -1) | grep Orientation | cut -c 35-)

for i in *.jpg
do
echo "conversion de $i"
convert $i z_$i.tif
done

echo "création des masques"
align_image_stack -m -a mask z_*.tif
rm -f z_*.tif

numero=$(ls final* | grep final | wc -w)

echo "calcul de l'image finale"
enfuse -o final_$numero.tiff --wExposure=0 --wSaturation=0 --wContrast=1 --HardMask --ContrastWindowSize=9 mask*.tif
rm -f mask*.tif

case $orientation in
'Rotate 270 CW')
echo "Rotation de l'image"
mogrify -rotate 270 final_$numero.tif
;;
'Rotate 90 CW')
echo "Rotation de l'image"
mogrify -rotate 90 final_$numero.tif
;;
*)
echo "Pas de rotation de l'image"
;;
esac


PS: Je n'ai testé que des images provenant de reflex Canon, 300D, 40D, et 50D, il est possible que l'emploi de exiftool donne des résultats différent pour d'autres APN.
PPS:Désolé pour les fautes pourtant j'ai re..relu

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.