Drizzle
La reconstruction linéaire à pixels variables, plus communément appelée Drizzle, a été développée pour le télescope spatial Hubble (HST) par Andy Fruchter et Richard Hook [FruchterHook1997], initialement dans le but de combiner des images avec dithering du Hubble Deep Field North (HDF-N). Cet algorithme peut être considéré comme un ensemble continu de fonctions linéaires qui varient doucement entre la technique de combinaison linéaire optimale (entrelacement) et la technique standard. Cela permet souvent d'améliorer la résolution et de réduire le bruit corrélé, par rapport aux images produites, en utilisant uniquement la technique standard.
Il existe une excellente page qui résume la technique et fournit une bonne représentation graphique de la manière dont les données des pixels "descendent" de la grille de pixels d'entrée grossière vers une grille de pixels de sortie plus fine ici.
La mesure dans laquelle l'algorithme s'écarte de l'entrelacement et se rapproche de l'empilement standard dépend de la qualité du sous-échantillonnage de la PSF par les décalages des images d'entrée. En pratique, le comportement de l'algorithme Drizzle est contrôlé par l'utilisation d'un paramètre appelé fraction de pixel, qui représente la quantité de pixels d'entrée qui sont réduits avant d'être mappés sur le plan de l'image de sortie. À une fraction de pixel de 0, l'algorithme Drizzle est équivalent à un entrelacement pur ; à une fraction de pixel de 1, il est équivalent à un empilement standard.
Pour comprendre la différence entre les méthodes d'alignement par drizzle et par interpolation, examinons tout d'abord le fonctionnement de la méthode d'interpolation standard. Les données d'alignement prennent la forme d'une matrice d'homographie 3x3, qui code une transformation linéaire à 8 degrés de liberté d'un ensemble de coordonnées à un autre (c'est-à-dire de chaque image à l'image de référence). Cette transformation est utilisée pour faire correspondre les valeurs de chaque pixel de chaque image d'entrée à l'endroit correct de l'image de sortie, en alignant cette dernière sur l'image de référence. L'alignement réel utilise une méthode d'interpolation, qui peut être sélectionnée dans les options d'alignement. L'interpolation entraîne un étalement de la fonction d'étalement du point, en particulier lors de la mise à l'échelle des images. Elle peut également donner lieu à des artefacts, bien que Siril mette en œuvre un mécanisme pour minimiser ce phénomène.
Le drizzle, en revanche, transforme chaque pixel de l'image d'entrée en une "gouttelette" et la projette à travers une grille sur l'image de référence de sortie. Chaque gouttelette a une taille, et en choisissant une grille de pixels de sortie plus grande mais une taille de gouttelettes plus petite, vous pouvez obtenir une meilleure résolution si votre jeu d'images est sous-échantillonné. (Si votre échantillonnage est correct pour le pouvoir de résolution de votre télescope, le drizzle ne peut pas produire de détails au-delà de la limite de diffraction). Cela se fait au prix d'une augmentation du bruit de l'image : comme chaque gouttelette "peint" une zone plus petite dans l'image de sortie, la couverture moyenne des gouttelettes par pixel de sortie dans la pile finale est réduite.
Notez que le drizzle ne remplace pas l'ensemble du processus d'alignement : vous pouvez toujours utiliser l'alignement global des étoiles, l'alignement 1-2-3 des étoiles, l'alignement des comètes ou toute autre méthode d'alignement de votre choix avant le drizzle : il s'agit uniquement d'une alternative à la méthode d'interpolation utilisée lors de l'application de l'alignement.
Avertissement
The Drizzle process involves taking multiple frames and drizzling them into an output frame. The input is the set of frames and their WCS solutions, and the output is the single drizzled image. In Siril the process is split into Drizzle registration and subsequent stacking, however the intermediate artefact (the set of images representing the individual images drizzled onto the common output grid but not yet stacked) is not something that has significance in its own right. Individual frames in the drizzled sequence can and will look weird: the reference frame often looks different to the others, especially when drizzling CFA data, as a result of its special property of having zero shift with respect to the output frame, and other frames may show Moiré patterns. Don't panic! This is simply an intermediate stage in the overall Drizzle process, and all these apparent oddities will be resolved in the stacking stage.
Utilisation du drizzle
Il y a trois raisons principales pour lesquelles vous pouvez préférer le drizzle à une méthode d'interpolation pour appliquer l'alignement.
Amélioration de la résolution Si votre image est significativement sous-échantillonnée, vous pouvez obtenir une amélioration de la résolution avec le drizzle que vous ne pourriez pas obtenir avec l'option d'alignement Interpolation, mise à l'échelle x2.
Imagerie couleur Si vos images présentent un motif CFA (c'est-à-dire si vous utilisez une caméra couleur ou un reflex numérique), le drizzle apporte une amélioration significative par rapport au dématriçage par interpolation. Ce procédé est parfois appelé Bayer Drizzle, mais il s'agit en fait exactement du même processus. Lors du drizzle d'une image CFA, la couleur CFA de la gouttelette détermine le canal de l'image de sortie sur lequel elle atterrit, alors que lors du drizzle d'une image mono, toutes les gouttelettes atterrissent dans le (seul) canal de sortie mono. Le drizzle d'images CFA évite les artefacts qui se produisent avec tous les algorithmes de dématriçage, ce qui améliore les caractéristiques du bruit lorsque les images sont fortement étirées. Cela permet d'améliorer la réduction du bruit et la déconvolution pour les séquences CFA drizzle par rapport aux images CFA dématricées et alignées, et améliore l'aspect du fond de ciel.
Éviter les artefacts Il est possible d'effectuer un drizzle sur une séquence en utilisant l'échelle = 1, la fraction de pixel = 1 et d'obtenir essentiellement le même résultat qu'en appliquant l'alignement avec l'une des méthodes interpolées. Vous pouvez envisager cette solution si vous constatez des artefacts d'interpolation avec la méthode d'interpolation standard (bien que ces artefacts soient généralement supprimés de manière efficace par la fonction de clamping). Notez que le drizzle peut produire des artefacts différents (voir le titre "Quelques problèmes communs" ci-dessous), mais ceux-ci peuvent être complètement évités en choisissant le noyau de drizzle ou en ayant un plus grand nombre d'images d'entrée, et sont habituellement parfaitement gérés par l'empilement.
Limitations du drizzle
Le drizzle est un peu plus lent que l'interpolation, en particulier en utilisant le noyau carré qui est le noyau par défaut. Si vous utilisez du matériel plus ancien ou plus lent, vous préférerez peut-être l'ancienne méthode.
Lorsqu'elle est utilisée pour le suréchantillonnage, la méthode Drizzle permet d'améliorer la résolution au prix d'une augmentation du bruit de l'image. Par conséquent, vous pouvez souhaiter collecter plus de temps d'intégration lorsque vous utilisez la technique du Drizzle que lorsque vous utilisez une méthode de suréchantillonnage basée sur l'interpolation.
Le problème ci-dessus est particulièrement vrai pour les images CFA. Considérons que seulement 1 pixel sur 2 est vert, et que seulement 1 pixel sur 4 est rouge ou bleu. Par conséquent, pour les canaux rouges ou bleus, le drizzle CFA implique déjà le même niveau de réduction de la couverture des gouttelettes qu'un drizzle à échelle 2 fois supérieure. Si vous augmentez l'échelle en plus, vous avez besoin d'autant de gouttelettes que pour un drizzle à x4 ! C'est pourquoi il est généralement recommandé de faire un drizzle des images CFA à l'échelle = 1.
Comparaison
L'image suivante montre une comparaison entre le drizzle et l'ancienne méthode de suréchantillonnage. L'image est une image Ha extraite d'une session dapteur couleur avec un filtre double bande. À gauche, vous pouvez voir le résultat du script OSC_Extract_HaOIII, qui extrait les données Ha capturées par les pixels rouges dans la matrice de Bayer du capteur couleur en tant qu'image de demi-taille et utilise la mise à l'échelle d'OpenCV avec l'interpolation lanczos4 pour produire une image qui correspond à la taille de l'image OIII.
Sur la droite, vous pouvez voir le résultat du script OSC_Extract_HaOIII_drizzle mis à jour (disponible dans le dépôt siril-scripts), qui extrait les données Ha capturées par les pixels rouges dans la matrice de Bayer de l'OSC sous forme d'une image de demi-taille et la version drizzle en utilisant l'échelle = 2.0, la fraction de pixel = 0.5, pour produire une image qui correspond à la taille de l'image de l'OIII.
En l'observant à l'échelle de 100 %, il est clair que le stack drizzle restaure une grande partie de la résolution du système optique qui est sous-échantillonnée par les pixels rouges espacés dans la matrice de Bayer : elle semble beaucoup plus nette, et les chiffres le confirment : la fwhm moyenne dans l'image de gauche est de 3,59, tandis que dans l'image de droite, elle est de 3,25.

Comparaison entre l'interpolation, le suréchantillonnage et le drizzle
Flux de travail et interface utilisateur
Flux de travail mono
Calibration
Pour les images mono, rien ne change dans l'onglet de calibration. Calibrez comme vous le feriez normalement.
Alignement

Onglet d'alignement montrant les paramètres du drizzle
Drizzle
Échelle
L'échelle définit l'échelle de l'image de sortie du drizzle par rapport à l'image d'entrée. Une échelle typique pour une image mono sous-échantillonnée est de 2,0. Cela signifie que l'image d'entrée sera appliquée sur une grille de pixels de sortie dont la résolution est deux fois plus élevée. (Si votre image de référence en entrée est de 1024 x 512 pixels, votre image de sortie sera de 2048 x 1024 pixels). Remarque : étant donné que l'image représente la même zone du ciel, bien qu'il y ait deux fois plus de pixels le long de chaque axe dans l'image de sortie, chaque pixel de sortie est en fait moitié moins large et moitié moins haut.
Astuce
Plus l'échelle est grande, plus l'image de sortie est clairsemée et moins il y a de pixels empilés dans chaque pixel de sortie. Il en résulte une image plus bruitée : le gain de résolution apporté par le drizzle se fait au détriment du bruit. Ce phénomène doit être atténué par l'utilisation d'un temps d'intégration global plus important que celui dont vous auriez besoin sans l'application de la méthode drizzle à une plus grande résolution.
Fraction de pixel
Pixel Fraction sets the size of the droplet taken from the input grid. Consider a drizzle scale of 2.0: since the output pixels are half as wide and half as tall, that means that in order for each input pixel "droplet" to be the same size as an output pixel it should be shrunk to half the linear dimensions. This is a pixel fraction of 0.5. A good rule of thumb is that the pixel fraction should be roughly the reciprocal of the drizzle scale (with some kernels it helps to set it a little bigger than this, in order to reduce pixels that receive zero input from any drizzled droplets).
Il est possible d'expérimenter avec la fraction de pixel : une fraction de pixel plus importante signifie que chaque gouttelette d'entrée influencera plus de pixels de sortie. À l'inverse, une fraction de pixels plus petite signifie que chaque gouttelette d'entrée influencera moins de pixels de sortie. Le noyau "point" est un cas particulier où la fraction de pixel est nulle (et avec ce noyau sélectionné, le réglage de la fraction de pixel n'a pas d'effet).
Modèle de la gouttelette
L'implémentation du drizzle de Siril fournit plusieurs modèles de gouttelettes :
Square. This models the droplet as a square droplet aligned exactly with the input pixel. It is accurately mapped to the output reference frame. This, the point and the Turbo method are the only flux preserving drizzle kernels, so these should be chosen if there is a desire to use the output for accurate photometry.
Astuce
Une photométrie précise est importante pour les processus d'étalonnage des couleurs PCC et SPCC. Par conséquent, si ces processus doivent être utilisés ultérieurement dans le flux de travail, il est fortement recommandé de choisir un noyau de drizzle qui préserve le flux.
Point. La gouttelette est modélisée comme un point au centre du pixel d'entrée. Elle est mappée dans l'image de référence en sortie et n'influence jamais que le pixel de sortie sur lequel elle atterrit.
Turbo. Il s'agit d'une simplification du noyau carré. Il suppose que la rotation entre la référence d'entrée et la référence de sortie est négligeable. Il en résulte un calcul beaucoup plus rapide, mais approximatif. Il s'agit d'un noyau "rapide et sale" destiné à l'origine à une utilisation dans le cadre du flux de travail du HST, où il a été utilisé pour générer une entrée pour une pile initiale qui a été utilisée pour le rejet des pixels et ensuite jetée, le noyau carré étant utilisé pour le drizzle final. Vous pouvez le trouver utilisable à certaines fins, en particulier lorsque échelle = fraction de pixel = 1.0, mais utilisez-le avec prudence.
Gaussien. Ceci modélise la gouttelette comme une gaussienne centrée sur le centre du pixel d'entrée. Cela peut améliorer la récupération de la résolution et limitera la fraction de pixel afin de garantir que tous les pixels de sortie reçoivent une certaine couverture de gouttelettes, mais cela ne préserve pas le flux.
Lanczos2 et Lanczos3. Ces noyaux modélisent la gouttelette comme une fonction de Lanczos centrée sur le centre du pixel d'entrée. Comme pour le noyau gaussien, ces noyaux peuvent améliorer la récupération de la résolution, mais ne préservent pas le flux. Vous pouvez expérimenter avec les noyaux de gouttelettes pour trouver celui qui donne les meilleurs résultats avec vos données.
Pondération initiale des pixels
Lorsqu'une gouttelette atterrit sur la grille des pixels de sortie, elle peut couvrir plus d'un pixel de sortie. En fait, un pixel de sortie peut être couvert par plusieurs gouttelettes, par une fraction seulement d'une gouttelette ou même par aucune gouttelette. La contribution de chaque pixel d'entrée peut être pondérée par le master flat, de sorte que les pixels provenant de zones ayant un Rapport Signal / Bruit plus élevé (moins de vignettage) soient plus fortement pondérés. À moins que vous ne disposiez de flats particuliers, cela ne fait qu'une très petite différence.
Pour activer le master flat, cochez la case Inclure le master flat dans la pondération initiale des pixels.
Avertissement
Le master flat doit être défini dans l'onglet Calibration !
C'est parti pour le drizzle !
Once all the options are set, click the Go register button.
Empilement
Vous pouvez maintenant empiler votre séquence en drizzle comme d'habitude. Notez que pour certaines combinaisons d'échelle de drizzle et de taille de gouttelettes, certains modèles de rejet fonctionneront mieux que d'autres. En particulier, si vous avez un nombre important de pixels "zéro" ou nuls, il y aura moins de valeurs à utiliser pour le rejet. MAD peut être une bonne solution à essayer si votre méthode de rejet habituelle ne fonctionne pas.
Le GIF ci-dessous montre une comparaison d'un stack de 37 images, dans un cas avec alignement appliqué par interpolation et dans l'autre cas avec alignement appliqué à l'aide de drizzle. Il est clair que le stack réalisé avec les données "drizzle" est nettement plus nette que celles utilisant les données alignées par interpolation.

Comparaison de l'alignement appliqué avec le drizzle et avec l'interpolation. Cliquez sur l'image pour l'agrandir.
Flux de travail CFA
Calibration CFA
Pour les images couleur, décochez la case Dématricer avant sauvegarde. Cela représente un changement par rapport aux flux de travail précédents, mais pour le drizzle, il est essentiel que le motif CFA soit préservé dans la séquence d'entrée.
CFA Registration with Drizzling
You can use drizzle directly after a Global Registration or by applying existing registration for all the other registration methods that do not export images directly.
Échelle CFA
L'échelle définit l'échelle de l'image de sortie du drizzle par rapport à l'image d'entrée. Dans les images des caméras couleur, chaque pixel n'enregistre qu'une seule couleur : rouge, vert ou bleu. Une matrice de filtres de couleur (CFA) est appliquée aux pixels et détermine quels pixels répondent aux longueurs d'onde rouges, vertes et bleues. Ainsi, tous les pixels sont répartis de manière éparse par rapport à un capteur mono, dans lequel tous les pixels sont sensibles à la lumière qui passe à travers le filtre. Dans les cas Bayer CFA et CFA X-Trans, les pixels rouges et bleus sont particulièrement peu nombreux dans les images d'entrée. Par conséquent, si l'on augmente l'échelle du drizzle au-delà de 1,0, il faudra encore plus d'images pour obtenir une couverture suffisante du drizzle et atteindre un niveau de bruit acceptable.
Pour une application typique de capteur couleur où le seeing correspond bien à l'échantillonnage nominal du capteur, il est recommandé d'appliquer le drizzle CFA avec échelle = 1.0 et fraction de pixel = 1.0. Cela rétablira la résolution dans chaque canal de couleur (qui est effectivement sous-échantillonné en raison de l'espacement des pixels colorés) et évitera les artefacts de dématriçage conventionnels. Si vous souhaitez également suréchantillonner l'image en utilisant l'échelle > 1.0, sachez que les pixels disponibles dans chaque canal deviendront encore plus rares et que vous aurez besoin d'encore plus de données pour assurer une couverture adéquate et contenir le bruit à un niveau acceptable.
Astuce
Pour le drizzle CFA, commencez par l'échelle = fraction de pixel = 1,0.
Fraction de pixel CFA
La fraction de pixel définit la taille de la gouttelette prélevée sur la grille d'entrée. Les mêmes commentaires s'appliquent ici que ceux décrits ci-dessus pour le flux de travail mono.
Modèle de gouttelettes CFA
Le choix des noyaux de drizzle est le même pour le drizzle CFA que pour le drizzle mono. Notez que les noyaux qui sont particulièrement enclins à générer des pixels nuls peuvent s'avérer délicats lorsqu'ils sont utilisés pour le drizzle CFA. Si vous avez des dizaines de milliers d'images comme dans une vidéo planétaire, turbo peut fonctionner correctement (et sera rapide !), mais pour des séquences de ciel profond avec un plus petit nombre d'images, il est recommandé de s'en tenir aux noyaux carré ou Gaussien (et gardez à l'esprit, comme mentionné ci-dessus, que Gaussian ne préserve pas le flux, donc si vous avez l'intention de faire quoi que ce soit impliquant des techniques photométriques, carré est préférable).
Pondération initiale des pixels CFA
Comme pour le drizzle mono, un master flat peut être spécifié. Pour activer le master flat, cochez la case Inclure le master flatdans la pondération initiale des pixels.
Avertissement
Le master flat doit être défini dans l'onglet Calibration !
C'est parti pour le Bayer Drizzle !
Once all the options are set, click the Go register button.
Empilez vos données CFA
Vous pouvez maintenant empiler votre séquence drizzle comme d'habitude, en notant les mêmes commentaires sur le rejet que pour le drizzle mono (ceux-ci peuvent être plus apparents avec le drizzle CFA si vous avez une couverture inadéquate pour soutenir certains des algorithmes de rejet des valeurs aberrantes, en raison de la plus grande rareté des pixels d'entrée dans chaque canal).
Astuce
Si vous utilisez le drizzle pour améliorer la résolution de vos données CFA, il est possible que vous soyez déçu lorsque vous comparez les résultats avec des images dématricées empilées. Il y a généralement un gain, mais il peut être marginal (par exemple, une amélioration de quelques pour cent de la fwhm) et ne sera généralement pas aussi impressionnant que le gain en résolution obtenu avec le drizzle des données mono sous-échantillonnées.
La raison en est que le dématriçage rétablit déjà une partie de la résolution perdue. Les divers algorithmes de dématriçage fonctionnent différemment, mais ils s'appuient généralement tous sur les principes de corrélation spatiale et spectrale pour déduire une partie de la résolution manquante dans un canal sur la base des informations obtenues dans les autres canaux. [Losson2010]
La véritable raison d'appliquer un Drizzle CFA est que le résultat a un bruit plus propre. Il semble moins "granuleux" (c'est-à-dire qu'il n'a pas la structure que l'on peut voir dans l'arrière-plan d'un empilement CFA dématricé typique) et est donc plus facile à réduire à l'aide de techniques de réduction du bruit et donne des données plus cohérentes pour les applications photométriques telles que l'étalonnage des couleurs. Lorsqu'on l'étire fortement pour faire ressortir des éléments peu visibles juste au-dessus du niveau du fond de ciel, le fond de ciel obtenu parait plus naturel.
Comparaison du Bayer Drizzle
L'animation ci-dessous montre une comparaison entre le drizzle CFA avec deux fractions de pixels différentes et deux des algorithmes classiques de dématriçage.

Comparaison de l'algorithme CFA drizzle (appelé ici Bayer Drizzle) avec les algorithmes classiques de dématriçage
VNG est fourni comme référence de base : notez l'artefact de couleur autour des étoiles les plus brillantes.
RCD est très efficace pour les objets ronds tels que les étoiles.
Bayer Drizzle 1.0 donne des résultats très proches de RCD mais avec un meilleur bruit et un meilleur fond de ciel
Bayer Drizzle 0.5 offre une meilleure résolution au prix d'un bruit plus important. Le compromis que la fraction de pixel permet d'obtenir entre la résolution et le bruit est évident. Avec une fraction de pixels plus petite, le drizzle CFA a besoin de plus de données pour obtenir la même performance en matière de bruit.
Quelques problèmes courants
Astuce
NE PANIQUEZ PAS — les résultats suivants peuvent sembler un peu bizarres lorsque vous regardez une image drizzle individuelle, mais ce n'est pas un bug — l'algorithme fonctionne comme prévu. Dans la plupart des cas, cela se résout naturellement lors de l'empilement. Dans les autres cas, ils peuvent être résolus en modifiant les paramètres du drizzle ou en incluant plus d'images.
Motifs moirés
En raison de la nature de l'algorithme de drizzle, lors de la mise à l'échelle, certains pixels de sortie peuvent ne pas recevoir de valeur. Ces pixels sont appelés "pixels nuls" et ont une valeur nulle. Certains noyaux compensent ce phénomène en limitant la fraction de pixel, de sorte que tous les pixels de sortie reçoivent une entrée, mais d'autres ne le font pas.
Les pixels de sortie qui ne reçoivent pas de valeurs sont noirs : comme ils se produisent généralement dans des motifs basés sur la géométrie de la transformation de l'image d'entrée, ils ressemblent typiquement à des motifs moirés, comme illustré ci-dessous :

Représentation des motifs résultant de pixels nuls dans une image drizzle
Ne vous inquiétez pas pour cela ! Siril ignore les pixels qui sont exactement à 0 dans l'empilement, donc tant que vous avez suffisamment d'images en entrée et que les positions des pixels sont convenablement dispersées, tous les pixels recevront une couverture de suffisamment de pixels et la pile de sortie sera correcte. Cependant, si vous empilez avec un nombre inférieur d'images en entrée et que cela pose des problèmes, essayez un autre noyau de drizzle. Voici précisément la même image drizzle avec exactement la même échelle et la même fraction de pixel, mais avec le noyau carré au lieu du noyau turbo. Le résultat est différent et les motifs ne sont plus évidents.

L'utilisation d'un noyau de drizzle différent permet d'éliminer les motifs de pixels nuls
Stacks de patchs
Lors de l'empilement de données "drizzle", si le nombre de pixels nuls est trop élevé, le résultat final peut présenter un aspect irrégulier :

Aspect disparate typique d'un empilement déformé avec trop de pixels nuls / pas assez d'images
Cela se produit généralement avec les noyaux ponctuels, turbo ou Lanczos. Vous pouvez y remédier en utilisant les noyaux carrés ou gaussiens ou en ayant plus d'images d'entrée.
Commandes
Ligne de commande Siril
seqapplyreg sequencename [-prefix=] [-scale=] [-layer=] [-framing=]
seqapplyreg sequencename ... [-interp=] [-noclamp]
seqapplyreg sequencename ... [-drizzle [-pixfrac=] [-kernel=] [-flat=]]
seqapplyreg sequencename ... [-filter-fwhm=value[%|k]] [-filter-wfwhm=value[%|k]] [-filter-round=value[%|k]] [-filter-bkg=value[%|k]] [-filter-nbstars=value[%|k]] [-filter-quality=value[%|k]] [-filter-incl[uded]]
Note that the introduction of true drizzle has necessitated some changes to existing command arguments for clarity.
register and seqapplyreg have a new argument -drizzle which, together with some related arguments, activates true drizzle.
Références
Olivier Losson, Ludovic Macaire, Yanqin Yang. Comparison of color demosaicing methods. Advances in Imaging and Electron Physics, 2010, 162, pp.173-265, section 2.2.2. https://hal.science/hal-00683233/document
A. S. Fruchter and R. N. Hook. (1997) A novel image reconstruction method applied to deep Hubble Space Telescope images. Proc. S.P.I.E. vol. 3164. https://arxiv.org/abs/astro-ph/9708242