Script de focus stacking v2 pour vidéos

Tout ce qui concerne les manipulations et traitement d'images (numériques et pourquoi pas argentiques !)
Règles du forum
Tout ce qui concerne les manipulations et traitement d'images (numériques et pourquoi pas argentiques !)

Script de focus stacking v2 pour vidéos

Messagede Eddy » 30 Juil 2020 17:42

Bonsoir le forum,

Le focus stacking en 5 min, de l'acquisition au post-traitement compris, ça vous tente ?

Je profite de mon retour pour partager une nouvelle version du script Linux de focus stacking créé il a quelques années, mais cette fois-ci pour une acquisition au format vidéo.

Nous avions longuement parlé des problèmes causés par les vibrations (si besoin, voir cette page de Charles Krebs), de la possibilité de relever le miroir d'un Reflex avant la prise de vue, etc. Par ailleurs, j'ai beaucoup appris sur le forum grâce à vous tous concernant les gammes d'optiques et leurs qualités respectives.

J'ai coutume de réaliser mes tests avec des basidiospores de Russula montées dans le réactif de Melzer pour mettre en évidence l'ornementation sporale. J'ai déjà eu l'occasion de présenter des résultats similaires à partir de clichés individuels. Cependant, à partir d'une vidéo, l'acquisition ne prend plus que quelques secondes pour une qualité comparable... j'ajoute que c'est une façon commode de remettre en service un Canon 500D qui capture en full HD. Côté optique c'est un Olympus SPanApo 100 ON 1.4 à immersion à l'huile et un projectif Olympus NFK 1.67x. Le condenseur est l'universel d'Olympus, à lentille frontale ON 0.9.

Un lien box.net vers la vidéo de cet exemple (trop volumineuse pour être hébergée ici) et l'image finale ci-dessous (après un léger crop manuel).

Basidiospores_Russula_Melzer.jpg
Exif et Meta MicroCartouche Basidiospores_Russula_Melzer.jpg (129.99 Kio) Vu 6296 fois

Le script est ci-dessous. Il se déroule en trois étapes principales : (1) extraction des images (frames) à partir de la vidéo, (2) alignement des images et (3) focus stacking proprement dit. J'utilise ffmpeg pour la première étape, mais on peut aussi utiliser vlc ou d'autres outils. La troisième étape implique enfuse, mais certains logiciels de focus stacking ont une version en ligne de commande (notamment Zerene Stacker).

Code: Tout sélectionner
#! /bin/bash

LOG="log"
BASE="$(basename "$1" .MOV)"
FRAMES="8"
FORMAT="frame%03d.tif"

function ensure_exists() {
  which $1 > /dev/null || (echo "Error: $1 not found."; exit 2)
}

mkdir -p "$BASE" # Dossier contenant les images.
mkdir -p "$LOG"  # Dossier contenant les fichiers log.

echo "Script de focus stacking version 2.0 (mode vidéo)"

echo -n "* Extraction d'une image sur $FRAMES à partir de $(basename $1)... "
ensure_exists "ffmpeg"
# Des vibrations se produisent souvent pendant la première seconde, lorsqu'on
# enclenche la vidéo. Pour cette raison, les images correspondantes ne sont pas
# extraites. On extrait également une image sur 10.
# Référence : https://superuser.com/a/391749
ffmpeg -ss 00:00:01 -i "$1" \
  -vf "select=not(mod(n\,$FRAMES))" \
  -vsync vfr \
  -compression_algo raw \
  -pix_fmt rgb24 \
  "$BASE/$FORMAT" &> "$LOG/ffmpeg.log"
echo "OK ($(ls "$BASE/$tif" | wc -l) images)"

cd $BASE
ensure_exists "rename"
rename 'y/A-Z/a-z/' *

echo -n "* Correction de l'alignement et création des masques... "
ensure_exists "align_image_stack"
align_image_stack -v --gpu -C -i -a mask *.tif > "../$LOG/align_image_stack.log"
echo "OK"

echo -n "* Calcul de l'image finale... "
ensure_exists "enfuse"
enfuse -o "../$BASE.tif" \
  --exposure-weight=0 \
  --saturation-weight=0 \
  --contrast-weight=1 \
  --hard-mask \
  --contrast-window-size=5 \
  --compression=lzw \
  mask*.tif &> "../$LOG/enfuse.log"
echo "OK"

cd ..

echo -n "* Post-traitement et conversion JPEG... "
ensure_exists "convert"
convert "$BASE.tif" \
  -colorspace Gray \
  -normalize \
  -unsharp 2 \
  -quality 100 \
  "$BASE.jpg"
echo "OK"

echo -n "* Effacement des fichiers intermédiaires... "
rm -rf "$BASE" "$BASE.tif"
echo "OK"

Pour toute question n'hésitez pas ! Bonnes observations :-)

Cordialement,
Eddy
Groupe "Le Naturaliste" sur Flickr
Micro Olympus BH2 DIC, darkfield, objectifs 10/0.4, 25/0.8, 40/1.3, 63/1.4, 100/1.4.
Photo Canon EOS 7D
Avatar de l’utilisateur
Eddy
membre
membre
 
Messages: 848
Inscription: 14 Mai 2009 13:23
Localisation: Royaume-Uni
Prénom: Eddy

Re: Script de focus stacking v2 pour vidéos

Messagede JMP76 » 31 Juil 2020 16:33

Bonjour,

sujet comme toujours intéressant...
J'avais créé il y a 7 ans un programme complet pour faire ce travail. On peut voir la discussion ici http://www.lenaturaliste.net/forum/viewtopic.php?f=56&t=12521 et svt
Cela donnait de bons résultats, et m'a permis de faire des photos en pseudo-relief. C'est en effet une méthode très rapide. Et qui permet d'obtenir de bons résultats même à main levée. J'avais aussi utilisé une fonction d'accumulation des images pour améliorer le rapport S/B des images.
Je viens de recevoir une caméra 4K et si j'ai le temps, je regarderai la possibilité de faire du relief en 8MPx. A la rentrée...

Cordialement
Microscopie avec des BHS (dia/epi LPA, fluo, DIC, IR, capteurs) et analyses théoriques (FTM, spectro, ...)
Mes photos de voyages, microscopie et relief http://pichotjm.free.fr/Photos/Photos.php
Racine du site: Description des débuts de l'informatique (lampes, tores, Tr, SSI, LSI, ... ) http://pichotjm.free.fr
JMP76
membre
membre
 
Messages: 1386
Inscription: 16 Nov 2011 17:19
Prénom: Jean-Marie

Re: Script de focus stacking v2 pour vidéos

Messagede Eddy » 31 Juil 2020 22:17

Bonjour Jean-Marie, le forum,

Merci pour le lien, la discussion est très intéressante. Effectivement la limite reste la résolution vidéo. Je joins quelques images de diatomées (de la lame test de D. Prades) obtenues à partir de vidéos en gardant un frame sur cinq (et Zerene Stacker, car align_image_map est hélas rapidement lent...) et sans autre retouche ultérieure que crop et désaturation. Je parle sous contrôle des diatomistes du forum, il me semble que les résultats sont encourageants. On attend avec impatience les essais en 4k !

planche_diatomees.jpg
Exif et Meta MicroCartouche planche_diatomees.jpg (187.69 Kio) Vu 6208 fois


Cordialement,
Eddy
Groupe "Le Naturaliste" sur Flickr
Micro Olympus BH2 DIC, darkfield, objectifs 10/0.4, 25/0.8, 40/1.3, 63/1.4, 100/1.4.
Photo Canon EOS 7D
Avatar de l’utilisateur
Eddy
membre
membre
 
Messages: 848
Inscription: 14 Mai 2009 13:23
Localisation: Royaume-Uni
Prénom: Eddy

Re: Script de focus stacking v2 pour vidéos

Messagede DanielCrabbé » 01 Aoû 2020 11:50

Bonjour Eddy,

Je ne suis pas diatomiste, mais cela me paraît parfaitement résolu.
Moi qui trouve le stacking manuel pénible, il faudrait que j'explore cette piste.
Je ne travaille pas sous Linux mais je suppose que je devrais pouvoir trouver une solution équivalente en Windows 10.
Je possède la même configuration que toi pour la microscopie. Pour la photo, comme le projectif 1.67 était hors de prix, je suis resté avec mon 2.5 mais j'ai acquis un Canon 6D (full frame) en fin de commercialisation et qui au moins peut me servir également à autre chose.
Penses-tu qu'une solution équivalente serait possible pour le stiching ?
Encore bravo pour tes clichés.

Amicalement.

Daniel
Amicalement.

Daniel Crabbé

Olympus BH2 fond noir, contraste de phase et contraste interférentiel - 4X, 10X, 20X et 100X D Plan - 10x, 20X, 40X et 100X S Plan - 2x S Plan FL - 40X, 100X S Plan Apo - 10X, 20X, 40X et 100X Phase positif A Pl - 40X Phase négatif A NH
Clone Paralux L3000 Trino Obj 4-10-20-40-100 planachromatiques infinis
Clone Paralux XLT 745
Inversé chinois infini à lumière transmise - 4X, 10X, 20X Contraste de phase, 40X.
"Macroscope numérique" zoom 0.7 à 4.5 X.
Avatar de l’utilisateur
DanielCrabbé
membre
membre
 
Messages: 1592
Inscription: 08 Fév 2008 22:37
Localisation: Belgique
Prénom: Daniel

Re: Script de focus stacking v2 pour vidéos

Messagede André » 01 Aoû 2020 21:31

Bonjour à tous, Eddy

"Résultats encourageants" je trouve que l'adjectif encourageant est un peu faible car je qualifierais ces résultats de plus que parfaits !

Je suppose que c'est du DIC avec des objectifs planapo ?
Amicalement
André Advocat

Logiciels:Microcartouche outil indispensable développé par Christian Aubert,Photoshop,Neatimage,Helicon

Le Naturaliste...le forum le plus regardé dans les terriers!
Avatar de l’utilisateur
André
Coadmin
Coadmin
 
Messages: 11655
Inscription: 28 Aoû 2007 22:12
Localisation: Citoyen du monde-Europe

Re: Script de focus stacking v2 pour vidéos

Messagede JMP76 » 02 Aoû 2020 15:02

Bonjour,

Je trouve tes résultats excellents sur des diatomées. Caméra N&B ou couleur?

Concernant la 4k, j'ai laissé filer un boitier à 65€ +port en Corée... et je le regrette! Car la petite caméra 4K que j'ai reçue ne fait que 1/2.5" et ne va pas me permettre simplement de la connecter au BHS (à cause de la compensation) or mes mesures au SlantEdge m'ont bien démontré l'utilité de la compensation. Cette caméra sera surtout utilisée pour lever un doute sur mes mesures SlantEdge.
Il faut que je recherche un boitier aps-c avec la 4k pour environ 100€ et c'est donc un défi.

Il me faut relire mon lien ... car c'était il y a 7 ans!
Et réactiver les essais, car à l'époque je faisais cela avec du vieux matos. Depuis je suis passé au BHS avec des objectifs Splan ou MSplan (mais impose compensation). Je reste persuadé que le 1920x1080 donne de bons résultats (je ne publie pas comme Fred ou Daniel)

Cordialement
Microscopie avec des BHS (dia/epi LPA, fluo, DIC, IR, capteurs) et analyses théoriques (FTM, spectro, ...)
Mes photos de voyages, microscopie et relief http://pichotjm.free.fr/Photos/Photos.php
Racine du site: Description des débuts de l'informatique (lampes, tores, Tr, SSI, LSI, ... ) http://pichotjm.free.fr
JMP76
membre
membre
 
Messages: 1386
Inscription: 16 Nov 2011 17:19
Prénom: Jean-Marie

Re: Script de focus stacking v2 pour vidéos

Messagede Eddy » 02 Aoû 2020 19:49

Bonjour Daniel, André, Jean-Marie, le forum,

Merci pour vos retours positifs. L'objectif est effectivement apochromatique (c'est un 60x de marque Nikon) et l'illumination est bien du DIC (celui d'Olympus). Pour répondre à Jean-Marie : les vidéos sont obtenues avec un Canon 500D et les images ont été désaturées en post-traitement.

Composer un panorama à partir d'une vidéo est une idée séduisante. Sur le principe ça ne devrait pas poser de problème. En pratique, les capteurs CMOS utilisent un mode de lecture ligne à ligne (le rolling shutter) qui entraîne des déformations lors des mouvements rapides (très marqué sur le 500D). Le 6D est certainement meilleur sur ce point.

Dernièrement, j'ai essayé les vidéos RAW avec l'outil Magic Lantern (une addition au firmware de Canon, qui offre des fonctionnalités supplémentaires). Jusqu'à présent je n'ai pas observé de grosse différence de qualité avec le mode HD standard, mais le 500D n'est clairement pas le meilleur boîtier pour ce genre de test. À suivre.

Cordialement,
Eddy
Groupe "Le Naturaliste" sur Flickr
Micro Olympus BH2 DIC, darkfield, objectifs 10/0.4, 25/0.8, 40/1.3, 63/1.4, 100/1.4.
Photo Canon EOS 7D
Avatar de l’utilisateur
Eddy
membre
membre
 
Messages: 848
Inscription: 14 Mai 2009 13:23
Localisation: Royaume-Uni
Prénom: Eddy


Retourner vers Traitement des images

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

cron