Extraction de gradient

Le fond du ciel présente souvent un gradient indésirable causé par la pollution lumineuse, la lune ou simplement l'orientation de la caméra par rapport au sol. Cette fonction échantillonne le fond en de nombreux endroits de l'image et recherche une tendance dans les variations. Elle le supprime en suivant une fonction lissée pour éviter de supprimer des nébuleuses.

dialogue

Boite de dialogue extraction du gradient. Sur la gauche la version polynomiale, sur la droite la version RBF.

Les échantillons peuvent être placés automatiquement en fournissant une densité (Echantillons par ligne) et en cliquant sur Générer. Si des zones de l'image sont plus lumineuses que la médiane d'un facteur Tolérance de la grille multiplié par sigma, alors aucun échantillon ne sera placé à cet endroit.

Astuce

Si vous avez des gradients très forts, par exemple lorsque vous photographiez dans un ciel urbain à fort Bortle, même la tolérance maximale de la grille peut s'avérer insuffisante. Dans ce cas, vous pouvez cocher la case Gardez tous les échantillons et la grille d'échantillons complète sera remplie. Vous devrez alors retirer manuellement les échantillons posés sur des objets astronomiques réels.

Après la génération, les échantillons peuvent également être ajoutés manuellement (clic gauche) ou retirés manuellement (clic droit).

Il y a deux algorithmes pour supprimer le gradient :

RBF

Il s'agit de la méthode la plus moderne. Elle utilise la fonction de base radiale pour synthétiser un fond de ciel afin de supprimer le gradient avec une grande flexibilité. Elle nécessite un seul paramètre qui est présent sous la forme d'un curseur : Lissage. Cette valeur permet de déterminer la douceur ou la dureté de la transition entre les points d'échantillonnage. Un facteur de lissage élevé a du sens pour les gradients larges et uniformes, et une valeur correspondante plus faible pour de petits gradients locaux.

Astuce

Commencez par le réglage de base (50 %) et ajustez progressivement pour obtenir des résultats optimaux.

Théorie

Les fonctions de base radiales sont des fonctions de la forme \(\phi(\mathbf{x}) = \phi(\| \mathbf{x} \|)\), sachant que dans notre cas, nous utilisons la norme euclidienne \(\| \mathbf{x} \| = \sqrt{x_1^2 + x_2^2}\). La fonction \(f\), qui décrit le modèle d'arrière-plan, peut maintenant être exprimée comme une combinaison linéaire

\[f(\mathbf{x}) = \sum_i w_i \, \phi(\|\mathbf{x} - \mathbf{x_i}\|) + o\]

où \(w_i\) correspond aux poids des différents points d'échantillonnage et \(o\) correspond à un décalage constant.

L'exigence selon laquelle la fonction \(f\) doit passer par les points d'échantillonnage se traduit par la condition suivante

\[\begin{split}\begin{pmatrix} \phi(\mathbf{x}_1 - \mathbf{x}_1) & \phi(\mathbf{x}_1 - \mathbf{x}_2) & \dots & \phi(\mathbf{x}_1 - \mathbf{x}_N) & 1 \\ \phi(\mathbf{x}_2 - \mathbf{x}_1) & \phi(\mathbf{x}_2 - \mathbf{x}_2) & \dots & \phi(\mathbf{x}_2 - \mathbf{x}_N) & 1 \\ \vdots & \vdots & \ddots & \vdots \\ \phi(\mathbf{x}_N - \mathbf{x}_1) & \phi(\mathbf{x}_N - \mathbf{x}_2) & \dots & \phi(\mathbf{x}_N - \mathbf{x}_N) & 1 \\ 1 & 1 & \dots & 1 & 0 \end{pmatrix} \begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_N \\ o \end{pmatrix} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_N \\ 0 \end{pmatrix} \, ,\end{split}\]

qui ne peut être satisfaite que si la matrice du côté gauche est inversible. Avec le bon choix de la fonction \(\phi\), cela peut toujours être garanti [Wright2003].

En outre, la somme \(s \, I\) est ajoutée à la matrice du côté gauche, où \(s\) est un paramètre de lissage et \(I\) est la matrice unitaire. La somme entraîne une régularisation, qui donne un résultat d'autant plus lisse que le paramètre \(s\) est grand. Ce paramètre peut être modifié avec le paramètre Lissage de la boîte de dialogue.

Pour la fonction de base radiale, nous utilisons la spline mince \(\phi(|\mathbf{x}|) = |\mathbf{x}|^2 \log(|\mathbf{x}|)\).

Polynomiale

Il s'agit de l'algorithme original et le plus simple développé dans Siril. Un seul paramètre est utilisé dans le calcul polynomial : le  bouton Ordre. Plus le degré de l'ordre est élevé, plus la correction est souple, mais un degré trop élevé peut donner des résultats étranges comme une surcorrection.

Astuce

Une correction de degré 1 peut s'avérer très utile lorsque vous souhaitez supprimer le gradient sur les images individuelles.

Avertissement

Background removal can be carried out on CFA images, but only if they have Bayer patterns. (It is not supported for X-TRANS patterns.) For Bayer patterned images, the image is treated as four spatially interleaved images, each corresponding to a CFA subchannel. Each subchannel is independently processed to remove its gradient and then the subchannels are recombined into the original interleaved pattern.

The intended use for this is to remove linear gradients from sequence frames prior to using Drizzle on a Bayer patterned sequence, and in that case it is strongly recommended to use linear (polynomial order 1) gradient removal as with other pre-stacking gradient removal.

Théorie

Les fonctions polynomiales sont des fonctions de la forme

\[\begin{equation} f(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_2x^2+a_1x+a_0 \end{equation}.\]

Dans Siril, le degré maximum autorisé est \(n=4\) et peut être modifié en utilisant le menu déroulant Ordre. Au-delà, le modèle est généralement instable et donne de mauvais résultats.

Paramètres généraux

  • Ajoute de diffusion d'erreur (dither) : Activez cette option lorsque des bandes de couleur apparaissent après l'extraction du gradient. Le dither est une forme de bruit appliquée intentionnellement et utilisée pour randomiser l'erreur de quantification, empêchant ainsi l'apparition de motifs à grande échelle tels que les bandes de couleur dans les images.

  • Correction :

    • Soustraction : ceci est principalement utilisé pour corriger les effets additifs, tels que les gradients causés par la pollution lumineuse ou par la lune.

    • Division : principalement utilisé pour corriger les phénomènes multiplicatifs tels que le vignettage ou l'absorption atmosphérique différentielle par exemple. Cependant, ce genre d'opération devrait être effectué à l'aide du master-flat.

  • Calcul du fond de ciel : Cela va calculer le fond synthétique et appliquer la correction sélectionnée. Le modèle est toujours calculé à partir de l'image d'origine conservée en mémoire, ce qui permet à l'utilisateur de travailler de manière itérative.

  • Afficher l'image originale : Appuyez sur ce bouton pour voir l'image originale.

Le gradient du fond de l'image pré-traitée peut être complexe car le gradient peut avoir tourné avec la session d'acquisition. Il peut être difficile de le supprimer complètement car il est difficile de le représenter par une fonction polynomiale. Si c'est le cas, vous pouvez envisager de supprimer le gradient dans les images individuelles : dans une seule image, le gradient de fond est beaucoup plus simple et suit généralement une fonction linéaire simple (degré 1).

Astuce

Il arrive que des bandes de couleur disgracieuses apparaissent après l'extraction du gradient. Dans ce cas, il y a deux choses à vérifier. Tout d'abord, si l'image est en 16 bits, nous vous conseillons vivement de toujours utiliser le format 32 bits. Si, malgré tout, vous observez de tels artefacts, l'option Ajoute de diffusion d'erreur (dither), expliquée ci-dessus, est la solution à votre problème.

dialogue

Lorsqu'un tel effet de bande se produit après l'extraction du gradient, il peut être résolu par l'option Ajoute de diffusion d'erreur (dither) (avec l'aimable autorisation de Nathan B.).

Astuce

Pour obtenir de bons résultats avec l'algorithme RBF, il suffit généralement de moins d'échantillons qu'avec l'algorithme polynomial.

Voir aussi

Pour plus d'explications, voir le tutoriel correspondant ici.

Ligne de commande Siril

subsky { -rbf | degree } [-dither] [-samples=20] [-tolerance=1.0] [-smooth=0.5]
Calcule un fond de ciel synthétique en utilisant soit le modèle de fonction polynomiale de degree degrés, soit le modèle RBF (si -rbf est fourni à la place) et le soustrait de l'image.
Le nombre d'échantillons par ligne horizontale et la tolérance pour exclure les zones plus claires peuvent être ajustés avec les arguments optionnels. La tolérance est exprimée en unités MAD : médiane + tolérance * mad.
La diffusion d'erreur, nécessaire pour les gradients peu dynamiques, peut être activé avec -dither.
Pour le RBF, un paramètre de lissage supplémentaire est disponible

Ligne de commande Siril

seqsubsky sequencename { -rbf | degree } [-nodither] [-samples=20] [-tolerance=1.0] [-smooth=0.5] [-prefix=]
Même commande que SUBSKY mais pour la séquence sequencename.
La diffusion d'erreur, nécessaire pour les gradients peu dynamiques, peut être désactivé avec -nodither.

Le nom de la séquence de sortie commence par le préfixe "bkg_" sauf indication contraire avec l'option -prefix=. Seules les images sélectionnées dans la séquence sont traitées

Liens : subsky
[Wright2003]

Wright, Grady Barrett. Radial basis function interpolation : numerical and analytical developments. University of Colorado at Boulder, 2003.