É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.
A clipping mode can also be set.
Théorie
As rgb_original is an average of the 3 channels, one or two channel values will be greater than rgb_original and can therefore clip. This can cause color artefacts when bright, strongly-colored regions are stretched. In order to avoid this problem the RGB blend clipping algorithm was developed by the authors of the original GHSastro tool: the same algorithms are available in the Siril implementation and this is the default clipping mode for stretches that require handling of clipping. The \((r, g, b)\) values are stretched first based on the luminance value rgb_original to give \((r', g', b')\). Then the original \((r, g, b)\) values are independently stretched to give \((r'', g'', b'')\). Finally the largest value of \(k\) is identified such that
\(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'')\)
This RGB blend clipping algorithm is also available for the Generalised Hyperbolic Stretch transforms described below.
Other choices of clipping algorithm are available:
Clip - this clipping mode just allows any colour components that clip to clip, but restricts them to values in the range 0.0 to 1.0. This may suffer from coloured artefacts such as fringes around nearly-saturated stars, but it is extremely quick to calculate.
Rescale - this clipping mode checks the R, G and B components of each pixel and if any are > 1.0 it rescales the pixel so that no components are clipped. This method is prone to artefacts and is mainly included for feature equivalence with the GHSastro plugin. It is quick to compute.
Global Rescale - this clipping mode behaves similarly to Rescale except that the scaling is computed globally instead of per-pixel. This avoids the kind of artefacts that Rescale can produce, but has a bigger impact on overall image brightness. This is faster than RGB blending to compute but slower than Clip or Rescale.
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] [-clipmode=] }
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.
In order to control partially-clipped highlights, the GHS tool makes available the same range of clipping modes as the asinh stretch. Details can be found here.
Ligne de commande Siril
ght -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
invght -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
modasinh -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
invmodasinh -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]
Ligne de commande Siril
linstretch -BP= [-sat] [-clipmode=] [channels] [-clipmode=]
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=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqinvght sequence -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqinvmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]
Ligne de commande Siril
seqlinstretch sequence -BP= [channels] [-sat] [-prefix=]
Curves Transformation
Curves Transformation is a highly versatile tool used to adjust the contrast and brightness of an image by modifying the pixel values according to a custom-defined curve. This allows for precise control over the image's stretch.
The curve is defined by a series of points, each of which can be moved to adjust the curve. The curve is interpolated between these points, and the pixel values are transformed based on it. This allows for a wide range of transformations to be applied to the image, from simple linear stretches to complex non-linear adjustments.
There are two interpolation algorithms available in the Curves Transformation dialog: linear and cubic spline.
Théorie
Linear interpolation is a simple interpolation that connects the points with straight lines. For each pair of points, the slope of the line connecting the points is calculated:
(3)\[\begin{split}\text{slope} = \frac{y_2 - y_1}{x_2 - x_1}. \\\end{split}\]The pixel values are then transformed by evaluating the line at the original pixel value:
(4)\[\text{pixel} = \text{slope} \times (\text{original} - x_1) + y_1.\]
Cubic spline curves are more complex curves that are defined by a series of control points. For pixel value \(x\) between two control points \(x_i\) and \(x_{i+1}\), the curve is defined by the following equation:
(5)\[S_i(x) = a_i + b_i (x - x_i) + c_i (x - x_i)^2 + d_i (x - x_i)^3\]For \(x_i < x < x_{i+1}\), the coefficients \(a_i, b_i, c_i\), and \(d_i\) are calculated by solving a system of equations derived from the conditions of continuity and smoothness at each internal point. These conditions are:
The spline must be continuous at each internal point,
The first derivative of the spline must be continuous at each internal point,
The second derivative of the spline must be continuous at each internal point
Since Curves Transformation uses natural cubic splines, the second derivative at both endpoints is 0.
Avertissement
Curves Transformation is only available as a GUI tool and cannot be used from the command line.
Curves Transformationcan display the histogram of the image in two modes: linear and logarithmic. You can swap between these modes by clicking the Logarithmic scale checkbox at the top of the histogram. Logarithmic scale is useful for images with a wide dynamic range, as it allows you to see the histogram in the shadows and highlights more clearly.
Some common uses of the Curves Transformation tool include:
"S" curve: This curve is used to increase the contrast of an image. By increasing the slope of the curve in the middle of the histogram, the contrast is increased.
BP & WP adjustments: The black point (BP) and white point (WP) of an image can be adjusted by moving the first and last control points of the curve. This allows for the shadows and highlights of the image to be adjusted independently.
Targeted adjustments: By adding control points at specific locations in the histogram, targeted adjustments can be made to the image. For example, the shadows can be darkened without affecting other parts of the image.
Astuce
The Curves Transformation tool is best used on an image that has already been stretched to some extent. This allows for more precise control over the image's contrast and brightness.
This transformation can easily be applied to a sequence. All you have to do is
define the transformation on the loaded image while a sequence is loaded
and check the Apply to sequence button. Similarly to other stretching
tools, you can define the output prefix of the new sequence (curve_
by default).