Étirement de l'image
Les images sont stockées sous forme de valeurs de pixels qui proviennent de l'appareil photo selon une loi quasi-linéaire, ce qui signifie que pour les zones du ciel qui ne présentent aucune caractéristique visible, la valeur du pixel sera proche de zéro, mais pour les objets brillants comme les étoiles, elle sera proche d'une valeur maximale en fonction de l'exposition et du gain. Entre les deux, si une nébuleuse a une magnitude de surface égale à la moitié de celle d'une étoile, elle aura des valeurs de pixels égales à la moitié de celles de l'étoile, et ainsi de suite. C'est ce que nous appelons le mode linéaire des pixels.
L'œil humain ne voit pas les photons de cette manière. Il amplifie les zones sombres, de sorte qu'un objet dix fois moins lumineux qu'un autre semble deux fois moins lumineux. Pour les images d'astronomie, nous affichons généralement les images avec une mise à l'échelle similaire des valeurs de pixels (voir les modes d'affichage de l'interface graphique).
Mais ce n'est qu'une astuce d'affichage, utilisant une fonction de transfert d'écran, pour rendre les valeurs de pixels de l'image intacte en images de meilleure qualité.
L'étirement d'image consiste à faire quelque chose de similaire, mais en modifiant les valeurs des pixels des images au lieu de simplement modifier leur rendu. Siril dispose de trois outils principaux pour y parvenir.
Transformation asinh
La transformation asinh, ou sinus hyperbolique inverse, modifie les valeurs des pixels de l'image d'une manière similaire à ce que l'on peut voir avec la fonction asinh de mise à l'échelle des pixels de l'écran, qui est paramétrée par les curseurs de coupure des valeurs basses et hautes. Ici, les paramètres sont le facteur d'étirement et la valeur du point noir.
Pour les images monochromes, la valeurs des pixels est modifiée en utilisant la fonction suivante :
Pour les images en couleur, la fonction devient :
où rgb_original est calculé en utilisant les valeurs des pixels des trois canaux.
Théorie
Comme rgb_original est une moyenne des 3 canaux, les valeurs d'un ou deux canaux seront supérieures à rgb_original et peuvent donc s'écrêter. Cela peut provoquer des artefacts de couleur lorsque des régions claires et fortement colorées sont étirées. Afin d'éviter ce problème, l'algorithme d'écrêtage du mélange RVB est utilisé. Il a été conçu par les mêmes auteurs que les transformations d'étirement hyperboliques généralisées. Les valeurs \((r, g, b)\) sont d'abord étirées sur la base de la valeur de luminance rgb_original pour donner \((r', g', b')\). Ensuite, les valeurs \((r, g, b)\) originales sont étirées indépendamment pour donner \((r'', g'', b'')\). Enfin, on identifie la plus grande valeur de \(k\) telle que
\(k \times r' + ( 1 - k ) \times r'' ≤ 1\);
\(k \times g' + ( 1 - k ) \times g'' ≤ 1\);
et
\(k \times b' + ( 1 - k ) \times b'' ≤ 1\)
Les valeurs transformées sont ensuite calculées comme suit
\(( k \times r' + ( 1 - k ) \times r'', k \times g' + ( 1 - k ) \times g'', k \times b' + ( 1 - k ) \times b'')\)
Cet algorithme d'écrêtage des mélanges RVB est également utilisé pour les transformations d'étirement hyperbolique généralisé décrites ci-dessous.
Lorsque l'option Utiliser l'espace de travail RVB n'est pas cochée, rgb_original est la moyenne entre les trois valeurs de pixels ; lorsqu'elle est définie, la pondération passe à 0,2126 pour la valeur rouge, 0,7152 pour la valeur verte et 0,0722 pour la valeur bleue, ce qui permet d'obtenir des résultats plus proches de l'équilibre des couleurs.
Ligne de commande Siril
asinh [-human] stretch [offset]
Transformation de la fonction de transfert de la tonalité moyenne (MTF)
La MTF est l'un des outils les plus puissants pour étirer l'image. Elle peut être facilement automatisée et c'est pourquoi la vue auto-étirée l'utilise.
L'outil se présente sous la forme d'un histogramme avec 3 curseurs (en forme de triangle placé en dessous) qu'il faut déplacer pour transformer l'image. Le triangle de gauche représente le signal des ombres, celui de droite les hautes lumières et enfin, celui du milieu le paramètre de balance des tons moyens. Les valeurs de ces curseurs sont affichées sous l'histogramme, à gauche, et peuvent être modifiées directement à la main. Ci-contre, le pourcentage de pixels écrêtés par la transformation : il est important de ne pas écrêter trop de pixels. Si seul le paramètre des tons moyens est modifié, aucun pixel ne peut être écrêté.
Théorie
La nouvelle valeur de pixel est calculé grâce à la fonction :
Pour \(x_p=0\), \(\text{MTF} = 0\),
pour \(x_p=m\), \(\text{MTF} = 0.5\),
pour \(x_p=1\), \(\text{MTF} = 1\),
où \(x_p\) est la valeur du pixel défini comme
Note
Il n'est généralement pas recommandé de modifier la valeur des hautes lumières, sinon elles seront saturées et l'information sera perdue.
La barre d'outils contient de nombreux boutons qui affectent la visualisation de l'histogramme. Vous pouvez choisir d'afficher l'histogramme d'entrée, l'histogramme de sortie, la courbe de transfert et la grille. Le bouton permet d'appliquer la même transformation que l'algorithme d'auto-ajsutement. Il est rarement conseillé d'utiliser ce bouton tel quel. Des ajustements sont généralement nécessaires pour éviter de perdre des informations. En haut de l'histogramme, il est également possible de choisir d'afficher l'histogramme en mode logarithmique, comme dans l'illustration. Ce comportement peut être rendu par défaut comme expliqué ici. Enfin, un zoom en X est disponible. Ceci est très utile lorsque tout le signal est concentré sur la gauche de l'histogramme.
Ligne de commande Siril
mtf low mid high [channels]
Note
mtf
est également une fonction qui peut être utilisée dans l'outil PixelMath.
Ligne de commande Siril
autostretch [-linked] [shadowsclip [targetbg]]
Appliquer la transformation à la séquence
Cette transformation peut facilement être appliquée à une séquence. Il suffit de définir la transformation sur l'image chargée (avec une séquence déjà chargée), puis de cocher le bouton Appliquer à la séquence et de définir le préfixe de sortie de la nouvelle séquence (stretch_
par défaut), ou d'utiliser la commande suivante :
Ligne de commande Siril
seqmtf sequencename low mid high [channels] [-prefix=]
Transformations hyperboliques généralisées (GHS)
Il s'agit de l'outil le plus performant et le plus moderne de Siril, mais aussi le plus complexe à apprendre. Un tutoriel très détaillé pour cet outil dans Siril a été écrit par les auteurs de cet algorithme : https://siril.org/tutorials/ghs. Nous nous contenterons ici de résumer le fonctionnement de base de cet outil.
En d'autres termes, le SGH est capable d'améliorer le contraste d'une gamme de niveaux de luminosité dans une image. Par exemple, si l'on souhaite mieux voir les détails dans la partie de luminosité moyenne à élevée d'une nébuleuse (qui est en général très faible dans une image d'astronomie), il est possible de ne sélectionner que cette plage pour l'étirement. L'outil est très efficace pour améliorer le contraste des objets principaux sans rendre les étoiles trop grosses. L'outil est basé sur une utilisation itérative, c'est-à-dire qu'il étire toutes les plages de luminosité de l'image l'une après l'autre, par petites touches.
Pour ce faire, l'outil s'appuie fortement sur l'affichage et l'interaction de l'histogramme, pour chaque canal de couleur. La fonction de transformation, en forme d'hyperbole ou de 'S', peut être modifiée en déplaçant son centre (le paramètre SP - point de symétrie), en aplatissant l'une ou l'autre de ses extrémités (avec les protections ombre et haute lumière), et bien sûr sa torsion (facteurs d'étirement D et d'étirement local b). La manipulation de ces paramètres sur une petite image (pour aller vite) avec une valeur SP de 0,5 vous aidera à comprendre leur effet.
Il y a deux opérations principales à effectuer à chaque itération : sélectionner la plage de lumières à modifier, et la modifier effectivement. La sélection de la plage est assez facile, il s'agit de trouver une valeur représentative (SP) et de définir la largeur de la plage (b). La définition de SP peut se faire de trois manières :
en sélectionnant une zone de luminosité identique dans l'image et en cliquant sur le bouton du sélecteur
cliquer directement sur l'histogramme avec un clic gauche (il est possible de zoomer dans l'histogramme en utilisant le bouton + en haut à gauche)
en utilisant le curseur ou les boutons plus et moins qui lui sont associés ou directement la valeur.
La largeur de la plage dépend de l'étirement local. Une valeur élevée de b créera une petite plage et augmentera le contraste sur une petite plage de luminosité dans l'image.
La modification de l'histogramme une fois que l'emplacement du changement a été fixé est une opération plus complexe. L'un des objectifs fixés par les auteurs de l'algorithme est de faire en sorte que la vue logarithmique de l'histogramme (activée en cochant la case) soit aussi proche que possible d'une ligne décroissante. Pour ce faire, des bosses doivent être creusées et des vallées comblées. Voici un guide rapide des valeurs à utiliser en fonction de ce que l'on souhaite obtenir :
Étirement initial à partir de linéaire : réglez SP légèrement à gauche du pic principal, modérez b à partir de 6, augmentez D légèrement pour commencer à voir l'objet principal. Ne pas trop étirer à ce stade comme le ferait un auto ajustement, sinon les étoiles deviendraient trop grosses (principale section du tutoriel pour cela).
Amélioration du contraste d'une plage ou remplissage d'une vallée : réglez SP au centre de la vallée dans l'histogramme, réglez b aussi haut que la plage ou la vallée est étroite, diminuez HP pour préserver les étoiles, augmentez D lentement jusqu'à ce que l'amélioration apparaisse.
Diminuer le contraste d'une plage ou aplanir un pic : La diminution d'un pic n'est pas facile à réaliser, mais elle est un effet secondaire du remplissage des vallées. Par exemple, la création d'un pic, ou le remplissage d'une vallée, diminuera ce qui se trouve à gauche de SP. Une autre possibilité consiste à utiliser la transformation inverse, à partir de la liste déroulante Type d'étirement, et une valeur LP élevée, et HP à 1.
déplacer la courbe vers la gauche, rendant l'image plus sombre : souvent, si l'on étire tout l'histogramme, le pic se déplace vers la droite, rendant l'arrière-plan trop lumineux. Il existe un moyen simple de tout déplacer vers la gauche, en sélectionnant dans la liste déroulante Type d'étirement la dernière entrée, Étirement linéaire (décalage BP). Il n'y a plus qu'un seul curseur à déplacer, contrôlant l'ampleur du déplacement.
Certaines opérations sont également courantes pour les images couleurs, où l'on souhaite souvent obtenir une forme de courbe similaire pour les trois canaux, en travaillant sur chaque canal indépendamment en les désélectionnant à l'aide des trois cercles colorés situés sous la vue de l'histogramme :
déplacement du pic vers la droite : un simple étirement avec une valeur SP à gauche du pic le fera en général, donc cela devrait être fait dans le cadre d'un étirement.
étaler un pic : pour étirer un peu plus un canal et lui donner plus d'importance dans le résultat final, sans trop changer l'emplacement du pic, réglez SP près du pic ou légèrement à sa droite, réglez b en fonction de la contribution attendue sur l'ensemble du canal, entrez une valeur négative si l'impact doit se faire sentir jusqu'au niveau des étoiles (pour changer leur couleur) et une valeur élevée si cela ne concerne qu'une nébuleuse, augmentez D pour obtenir la largeur cible du pic, puis décalez le pic vers la gauche en augmentant HP.
bouger tous les canaux ensemble : une alternative d'étirement de la luminance existe, voir la combo box Modèle d'étirement de couleur en haut à droite de la fenêtre GHS, en utilisant l'une ou l'autre des valeurs d'étirement de la luminance permet d'étirer la luminance et de réappliquer les couleurs sur celle-ci au lieu d'étirer directement les trois canaux. Les modes de luminance permettent de mieux préserver les couleurs de l'image. Ces modes utilisent le même mode d'écrêtage du mélange RVB décrit ci-dessus pour éviter les artefacts d'écrêtage des canaux de couleur.
Saturation de l'image : ** Les transformations GHS peuvent être appliquées au canal de saturation de l'image en sélectionnant l'option Saturation dans la liste déroulante *Modèle d'étirement des couleurs*. Lorsque ce mode est sélectionné, les histogrammes de saturation avant et après l'étirement sont affichés en jaune. Toutes les options du GHS sont disponibles et ce mode permet un ajustement très ciblé du canal de saturation de l'image. Une méthode simple pour augmenter la saturation dans les régions relativement non saturées tout en évitant la sursaturation consiste à utiliser un étirement par **transformation hyperbolique généralisée inverse avec SP fixé à environ 0,5 et HP abaissé suffisamment pour aplatir l'extrémité supérieure de l'histogramme de saturation.
Ligne de commande Siril
ght -D= [-B=] [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
invght -D= [-B=] [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
modasinh -D= [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
invmodasinh -D= [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
linstretch -BP= [-sat] [channels]
Appliquer la transformation à la séquence
Cette transformation peut facilement être appliquée à une séquence. Il suffit de définir la transformation sur l'image chargée (avec une séquence déjà chargée), puis de cocher le bouton Appliquer à la séquence et de définir le préfixe de sortie de la nouvelle séquence (stretch_
par défaut). Toutes les commandes ont également une version de traitement en séquence. Chaque commande d'étirement de séquence commence par seq et le premier argument doit être le nom de la séquence, mais ils sinon elles sont les mêmes.
Ligne de commande Siril
seqght sequence -D= [-B=] [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqinvght sequence -D= [-B=] [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqinvmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqlinstretch sequence -BP= [channels] [-sat] [-prefix=]