MoonStack version 2.1
logiciel destiné au compositage de tout type d'images : lunaires ou
ciel profond, argentiques ou numériques
Ce logiciel est entièrement gratuit, mais
si vous l'utilisez pensez à m'envoyer un mail :-)
I'm sorry there is no english translation available
yet of the file you are reading now
Nouveautés de la version 2.1:
- plus rapide pour l'alignement global des images
- image compositéeau format FITS 16 bits en plus du
BMP en sortie
- versions Linux et Macintosh en plus de la versionWindow
Je tiens à remercier Franck Sicard
pour le portage Linux et Jacques-André
Régnier pour la version Mac
Téléchargement (environ 50ko, la doc est contenue dans l'archive)
:
cliquez ici pour télécharger MoonStack
2.1 version Windows
cliquez ici pour télécharger
MoonStack 2.1 version Linux
cliquez ici pour télécharger
MoonStack 2.1 version Macintosh
Téléchargement d'un jeu d'images
de test pour vérifier que tout fonctionne correctement (226 ko, fichier
ZIP)
Cette page a pour but de vous présenter MoonStack. Au départ,
ce logiciel a été conçu pour le compositage d'images
lunaires faites avec une webcam, mais il peut servir pour compositer
tout type d'images en particulier celles obtenues en photo argentique duciel
profond. Toutes les photos lesplus récentesde
mon site ont été compositéesgrâce àMoonStack.
Images Lunaires ou solaires
Lorsqu'on veut compositer des images lunaires (ou solaires) faites avec une
webcam par exemple, celles-ci ont le défaut de ne pas être superposables
sur toute leur surface à cause de déformations provoquées
par la turbulence. Le but de ce logiciel est de déformer toutes
les images d'une série pour qu'elles soient superposables à
une image de référence.
Voici un exemple de compositage de 12 images de Copernic faites avec uneVesta
pro (Newton 200 à f/4.6+barlow qui donnait environ 3000mm defocale).Ce
compositage a été fait avec la version 1.2 de MoonStack,mais
bien sur la version 2.1 permet de faire la même chose plus facilement.
L'image ci-dessus a été réduite de 50%. Ci-dessous un
agrandissement de la partie centrale et une comparaison avec une registration
classique sans déformation (utilisation de la commande pregister dans
Iris). Le traitement final (un masque flou) est le même pour les deux
images.
Le gain en résolution sans être extraordinaire est quand même
assez bien visible, en particulier sur le bord inférieur droit ducratère.L'autre
avantage d'aligner séparément chaquepartie d'imageest d'obtenir
un alignement correct sur toute la surface del'image.
Images argentiques du ciel profond
Quand on veut aligner précisément 2 photos argentiques dans
le but de les compositer on se heurte à un problème : on abeau
les tourner dans tous les sens, il y a toujours un coin ou çane se
superpose pas bien. Même si le cadrage a été strictement
le mêmepour les deux photos, ça ne colle pas ! Il serait dommage
de se contenterd'un alignement imparfait qui dégraderait larésolution
de l'image alors qu'on a passé plus d'une heurel'oeil rivéà
l'oculaire guide pour essayer justement d'obtenirla meilleure résolutionpossible
! D'où viennent ces défauts?De tout un tas de facteurs: lefilm
n'est pas forcément tout àfait plan (ni dans le boîtierphoto
ni dans le scanner), différencedans la réfraction atmosphériqueentre
les deux prises de vue,cadragepas tout à fait identique combinéà
une déformationgéométrique de l'image en bordde champ,
erreur d’entraînementde la tête du scanner ..
Pour corriger ces défauts on doit faire subir à une des deux
images une déformation non linéaire (contrairement aux rotations
et translations de l'étape précédente). MoonStack réalise
cette opération de façon automatique.
Dans le même ordre d'idée, ce type de déformation autorise
de nouveaux types de prise de vue:
- prise de vue simultanée avec 2 objectifs différents (mais
de même focale) qui visent la même zone du ciel. Avantage pour
le même temps passé à guider la photo, vous en obtenez
2 que vous pouvez compositer, d'où un gain non négligeableen
qualité d'image.
- possibilité de faire des mosaïques: c'est à dire demettre
des photos bout à bout, ce qui permet d'augmenter le champ.Il suffitd'indiquer
un point commun aux deux images.
Téléchargement
Depuis la première version de MoonStack, j'ai corrigé
pas mal de bugs. Ceci dit si vous en trouvez de nouveaux faites le moi savoir
à eroyer@club-internet.fr
Bien entendu je suis également preneur de toute suggestion visantà
améliorer l'efficacité du programme.
Le lien pour le téléchargement est en haut de la page.
Ce logiciel est entièrement libre d'utilisation. Il fonctionne sous
Windows, mais le code source est écrit en C à la norme ANSI.
Il devrait être compilable sans problèmes pour Linux, Mac ou
autre. Si vous êtes intéressé par un portage sur un autre
système,écrivez moi.
Utilisation
Pour l'instant l'interface est très rudimentaire. Il s'agit
d'un fichier texte qui doit être dans le même dossier que leprogramme
et qui s'appelle ScriptMoonStack2.txt (ne pas oublier l'extension).
Tous les fichiers utilisés doivent être dans le même dossier
que MoonStack.
Les images doivent être enregistrées au format BMP non compressé.
Si vous utilisez Photoshop, dans la boite d'enregistrement du fichier BMP,
il faut cocher format Windows (et pas OS/2).
Le format du script a complètement changé pour cette version
de MoonStack. Le principe est le suivant chaque commande occupe une ligne
(il est possible de sauter des lignes). Pour être valable une ligne
commence par le nom de la commande suivie de 2 points. Par exemple on écrira
compositage : compo.bmp
pour que l'image issue du compositage soit sauvée sous le nom de
compo.bmp. Il est possible de mettre des commentaires en faisant commencer
la ligne par rem: Voici un exemple:
rem : ceci est un commentaire
La ligne ci-dessus sera ignoré par MoonStack, ce qui vous permet
de noter des informations dans le script (aide-mémoire)
Plutot que de rentrer dans le détail des commandes tout de suite je
vous propose 2 scripts : le premier est adapté pour traiter une série
d'images de la Lune faites avec une webcam, le second est destinéà
aligner 2 photos argentiques scannées.
Script n°1 : séquence d'imagesdela
Lune
La première chose à faire est de sélectionner les images
à compositer. On peut le faire avec Avi2Bmp par exemple. Il suffit
d'ouvrir le fichier AVI ou la séquence d'images BMP, de marquer les
images les plus nettes et de faire un enregistrement par lot des images marquées.
Ainsi vous obtenez une série d'images nommées par exmple
Lune1.bmp à Lune10.bmp prêtes à être
compositées dans MoonStack. Le script sera alors le suivant :
reference : Lune1.bmp
sourcesbmp : Lune, sortie, 1, 10
translation : 50 , 1
blocs : 10, 15, 4, 1
compositage : Lunecompositee.bmp
Notez qu'on pourra faire mieux par la suite (voir dernière remarque
de ce paragraphe). Mais pour l'instant, examinons ce script plus en détail.
La commande reference indique quelle image doit servir de référence.
Cette image ne sera pas modifiée et toutes les images de la série
vont venir se superposer dessus. Les images de la séquence sont appelées
image source et on précise leur nom ainsi que le numéro dedébut
et de fin de la séquence par la commande sourcesbmp: (notez
le s à la fin de sources). Le nom sortie indique que Moonstack
va déformer chaque image de la séquence et enregistrer le résultat
comme sortie1.bmp à sortie10.bmp.Notez que dans cette
commande on ne précise pas l'extension bmp mais les fichiers doivent
avoir cette extension. En passant à la dernière ligne, on voit
que l'image compositée sera nommée Lunecompositee.bmp
. Nouveau depuis la version 2.1 : une image compositée
est également sauvée au format FITS. Dans cet exemple, vous
obtiendrez 3 fichiers supplémentaires : LunecompositeeR.fit, LunecompositeeV.fit
et LunecompositeeB.fit qui contiennent les couches Rouges, Verte et Bleue
que vous pouvez importer directement dans IRIS. Dans la commande compositage
vous pouvez omettre l'extension.
Les 2 commandes restantes indiquent les traitements à effectuer.
La ligne translation: indique un décalage global appliqué
à chaque image avant de procéder à un alignement plus
fin. Ici on a précisé un décalage maximum de 50 pixels
(en plus ou en moins) par rapport à la position de départ,et
on a demandé d'aligner les images avec une précision de1 pixel.
La ligne blocs indique qu'une étape d'alignement plus fin sera
réalisé. A cette étape l'image n'est plus déplacée
dans son ensemble mais elle est déformée. En fait elle estdécoupée
en petit carrés (ou blocs) qui sont positionnésindépendament
les uns des autres. Pour cela MoonStack cherche àpositionner au mieuxun
certain nombre de blocs de l'image. Le 10 indiquequ'un calcul sera faittous
les 10 pixels de l'image (en hauteur et en largeur)Si on diminue cenombre,
l'alignement sera plus précis mais le calculsera plus long.Le nombre
15 précise la demi longueur de chaque bloc(c'est àdire lesblocs
feront 30 pixels de coté). Les blocssont toujours carrés.Il
vaut mieux ne pas descendre ce paramètreen dessous de 5 (et encore...)sinon
il n'y a plus assez de pixels pour faireun alignement fiable. Le 4indique
le déplacement maximum autorisépour chaque blocs (ça
devraitconvenir pour un bon nombre d'imagesmais on peut essayer d'autresvaleurspour
voir). Et enfin le 1 final indiquequ'on veut une précisionde1 pixel.
Quelques remarques :
- Il est possible de demander une précision inférieure (0.5
pixels ou même moins) mais alors les temps de calcul sont nettement
plus longs
- Pour accélérer la phase d'alignement global on aurait puse
contenter d'une précision de 2 pixels seulement car de toutes façons,
on fait un alignement plus fin par la suite.
- Le choix de l'image 1 comme image de référence n'est pasforcémentle
meilleur. Ça convient bien pour l'ajustement global,maisil estpréférablede
procéder autrement: on faitd'abordun alignementglobal en utilisantl'image
1 comme référence.Danscette étapeon ne metpas de commande
bloc, et on produit uneimage compositéequ'onappelleref.bmp et quiservira
de référencepour une deuxièmephaseou on ne feraqu'un
alignement par blocs cettefois-ci. Le résultatesten général
meilleur.
Script n°2 : alignement de 2 images argentiques
ciel profond
Supposons que les 2 images d'appellent image1.bmp et image2.bmp
. Il n'est plus nécessaires de faire un subir un alignement préalable
aux 2 images. La seule opération à faire consiste àrepérer
1 étoile commune aux deux images. On note ses coordonnéesdans
l'image 1 (par exemple x=1235, y=765) et dans l'image 2 (ex : x=1316,y=753).
C'est tout ! Le script sera le suivant :
reference : image1.bmp, 1235, 765
source : image2.bmp , sortieimage2.bmp , 1316, 753
angle : -20 , 20 , 0.05
blocs : 100, 50, 7, 1
compositage : Final.bmp
La commande reference indique quelle image doit servir de référence.
Cette image ne sera pas modifiée et l'image source va venir se superposer
dessus. En même temps que le nom de chaque image on note les coordonnées
qu'on a relevées juste avant. Le nom sortieimage2.bmp sera le nomsous
lequel sera enregistrée l'image 2 après déformation.
En passant à la dernière ligne, on voit que l'image compositée
sera nommée Final.bmp. Il suffira d'ouvrir cette image dans un logiciel
de retouche pour faire les derniers ajustements.
Les 2 commandes restantes indiquent les traitements à effectuer.
La ligne angle: indique que MoonStack va chercher à déterminer
la meilleure rotation possible pour amener les 2 images à se superposer.
On indique que cette rotation peut atteindre plus ou moins 20 degrés
autour de la position de départ, et on veux une précision de
0.05 degrés. Une telle précision est suffisante (si vous voulez
accélérer un peu ce calcul vous pouvez même vous contenter
de 0.1 degré).
A ce stade si on voulait compositer, on se rendrait compte que les images
se superposent plutôt bien, mais avec un certains nombres de petits
défautsrésiduels. Ces défauts vont être corrigés
parlacommande blocs:
A cette étape l'image ne subit plus un déplacement dans son
ensemble mais elle est déformée. En fait elle est découpée
en petit carrés (ou blocs) qui sont positionnés indépendament
les uns des autres. Pour cela MoonStack cherche à positionner au mieux
un certain nombre de blocs de l'image. Le 100 indique qu'un calcul sera fait
tous les 100 pixels de l'image (en hauteur et en largeur) Si on diminue ce
nombre, l'alignement sera plus précis mais le calcul sera plus long.
Le nombre 50 précise la demi longueur de chaque bloc (c'est à
dire les blocs feront 100 pixels de coté). Le 4 indique le déplacement
maximum autorisé pour chaque blocs (ça devrait convenir pour
un bon nombre d'images mais on peut essayer d'autres valeurs pour voir).Les
blocs sont toujours carrés. Pour des images du ciel profond scannées
à 1950 dpi ces valeurs conviennent très bien. A 4000 dpi je
pense que ça devrait marcher aussi mais vous pouvez remplacer la séquence
100,50,7 par 200,100,14. Enfin le 1 final indique que nous voulons une précision
d'alignement de 1 pixel. Il n'est pas nécessaire de descende sousla
barre des 1 pixels. La précision gagnée est insignifiantemais
le temps de calcul augmente considérablement.
On peut très bien ajouter une troisième image en ajoutant la
ligne
source : image3.bmp , sortieimage3.bmp , 1316, 753
Dans ce cas les 2 images sources seront traitées en utilisant la même
image de référence. L'image compositée sera la moyenne
des 3 images utilisées. Si vous avez de nombreuses images à
aligner la commande sourcesbmp est très pratique (voir le script
n°1).
Mosaïques
Une mosaïque consiste simplement à mettre des images bout à
bout pour élargir le champ. MoonStack permet d'aligner les imagesen
utilisant leur partie commune. Il suffit de procéder exactementcomme
dans le cas de l'alignement de 2 images, c'est à dire de noterlescoordonnées
d'une étoile commune aux 2 images. Il vautmieuxchoisir cette image
au centre de la partie commune aux deux images.Pasbesoindes'occuper du recadrage
des images.
Il est important de noter que dans le cas des mosaïques les déformations
sont souvent assez prononcées en bord de champ surtout si les images
ont été faites avec des objectfis de courte focale. Il vaut
mieux entrer une valeur de décalage maximum de bloc relativement importante,
mais il peut arriver que l'alignement ne soit pas bon à certains endroits.
Bref, il reste du boulot dans ce domaine !
Automatisation des traitements
Il est possible de traiter plusieurs séries d'images à la suite
les unes des autres. C'est pratique car on peut faire autre chose pendant
que l'ordinateur calcule. Pour cela il suffit d'écrire un fichier.bat
(par exemple ms.bat )tel que celui-ci
moonstack script1.txt
moonstack srcipt2.txt
etc ...
Ensuite au lieur de double cliquer sur l'icone de moonstack.exe, on double
clique sur moonstack.bat. Les scripts seront exécutés les uns
après les autres. Il n'est pas possible pour l'instant de donner plusieurs
scripts sur la même ligne de commande.
Normalement, si vous lancez directement MoonStack ,le programme attend l'appui
sur entrée à la fin de l'exécution. Si vous lancez MoonStack
à partir d'un ligne de commande, le programme quitte automatiquement.
Si vous désirez modifier ce comportement par défaut vous pouvez
rajouter dans le script:
quitter:0
ou
quitter:1
Si la valeur est mise à 1, MoonStack quittera automatiquement en fin
d'exécution.
Divers
Si vous utilisez la commande translation: un fichier intitulé
shift.lst est généré. Chaque ligne de ce fichier indique
le déplacement qui a été appliqué à chaque
image en abscisse en en ordonnée.
Afin de réduire le temps de calcul, le calcul de la meilleure translation
ne prend pas en compte la totalité de l'image mas seulement la partie
centrale. Cela peut poser des problèmes si l'objet n'occupe qu'une
partie du champ (une planète par exemple). Il est possible de régler
la fraction d'image prise en compte pour le calcul avec la commande optitranslation:
Voici 2 exemples:
optitranslation:1
Dans ce cas toute l'image est prise en compte, ce qui permet d'être
certain qu'il n'y aura pas d'erreur dans la superposition. Mais le calcul
sera plutot lent.
En faisant:
optitranslation:8
Seule une petite partie de l'image sera utilisée pour le calcul et
le calcul sera plus rapide. Ce réglage convient très bien pour
des images où la Lune qui occupe tout le champ. La valeur par défaut
est 6.