Messages : 6,595
Sujets : 140
Inscription : Feb 2016
Réputation :
56
Système d'exploitation:
Plus je vous lis et plus j'ai l'impression que vous vous approchez des ondelettes dans RawTherapee : https://rawpedia.rawtherapee.com/Wavelets/fr
Je n'ai jamais réussi à m'en servir au niveau de débruitage mais un tuto m'a fait un peu comprendre comment aborder ce module.
Messages : 584
Sujets : 16
Inscription : Nov 2017
Réputation :
28
Système d'exploitation:
Distribution(s) Linux: Linux Mint
@aurelienpierre je suis d'accord pour l'histoire de toucher le threshold dans les itérations et pas l'opacité.
Merci @jpg54 pour ce lien instructif. Mes connaissances en ondelettes ne sont pas meilleures que celles d'Aurélien
Messages : 6,595
Sujets : 140
Inscription : Feb 2016
Réputation :
56
Système d'exploitation:
16-08-18, 10:25
(Modification du message : 16-08-18, 10:26 par jpg54.)
Regarde peut-être ce tuto : https://www.youtube.com/watch?v=1LMzOZGwnqE
Bon Michaël avoue ne pas avoir maîtriser mais montre ce qu'il arrive à faire. Ce qui m'a permis d’appréhender ce module RawTherapee.
Messages : 584
Sujets : 16
Inscription : Nov 2017
Réputation :
28
Système d'exploitation:
Distribution(s) Linux: Linux Mint
Merci jpg54, maintenant je pense que je vais surtout avoir besoin de regarder comment marche la transformation d'un point de vue mathématique, et peut être regarder un peu comment c'est implémenté dans dt
Messages : 1,190
Sujets : 47
Inscription : Mar 2016
Réputation :
71
Système d'exploitation:
Distribution(s) Linux: Fedora 29
(16-08-18, 10:58)rawfiner a écrit : Merci jpg54, maintenant je pense que je vais surtout avoir besoin de regarder comment marche la transformation d'un point de vue mathématique, et peut être regarder un peu comment c'est implémenté dans dt
L'implémentation C est presque plus claire que la théorie, concernant les ondelettes.
En gros, tu imagines que ton image est un empilement de calques semi-transparents. Chaque calque est un niveau de fréquence différent. Dans le module égaliseur, ce qu'on fait c'est qu'on augmente le contraste distinctement sur chaque calque virtuel, ce qui permet d'accentuer différents niveaux de détail séparément. Quand c'est fini, on aplatit la pile, et voilà. Dans un contexte de débruitage, on écrête les calques de hautes fréquences à partir d'un certain seuil (threshold), comme n'importe quel passe-bas.
Ce que je suppose qu'il doit se passer dans le débruitage par profil avec ondelettes, c'est que, au moment du profilage, dt enregistre la variance dans le calque de haute fréquence sur une image supposée floue (sans haute fréquence). La variance est une métrique du bruit de Gauss (le plus présent en photo dans le spectre visible). Ensuite, dans l'étape de débruitage, je le soupçonne de fixer le threshold de sorte que la variance dans le dernier calque virtuel soit égale à la variance mesurée au profilage. À vérifier… (moi c'est ça que je ferais si je devais le coder).
J'ai trouvé une bonne explication de la différence soft/hard-threshold : http://www.numerical-tours.com/matlab/de...avelet_1d/ En gros, on ne minimise pas la même norme. En conséquence, le hard-thresold coupe tout ce qui dépasse, le soft ne fait qu'attenuer/normaliser ce qui dépasse.
Messages : 584
Sujets : 16
Inscription : Nov 2017
Réputation :
28
Système d'exploitation:
Distribution(s) Linux: Linux Mint
(16-08-18, 12:13)aurelienpierre a écrit : (16-08-18, 10:58)rawfiner a écrit : Merci jpg54, maintenant je pense que je vais surtout avoir besoin de regarder comment marche la transformation d'un point de vue mathématique, et peut être regarder un peu comment c'est implémenté dans dt
L'implémentation C est presque plus claire que la théorie, concernant les ondelettes.
En gros, tu imagines que ton image est un empilement de calques semi-transparents. Chaque calque est un niveau de fréquence différent. Dans le module égaliseur, ce qu'on fait c'est qu'on augmente le contraste distinctement sur chaque calque virtuel, ce qui permet d'accentuer différents niveaux de détail séparément. Quand c'est fini, on aplatit la pile, et voilà. Dans un contexte de débruitage, on écrête les calques de hautes fréquences à partir d'un certain seuil (threshold), comme n'importe quel passe-bas.
Ce que je suppose qu'il doit se passer dans le débruitage par profil avec ondelettes, c'est que, au moment du profilage, dt enregistre la variance dans le calque de haute fréquence sur une image supposée floue (sans haute fréquence). La variance est une métrique du bruit de Gauss (le plus présent en photo dans le spectre visible). Ensuite, dans l'étape de débruitage, je le soupçonne de fixer le threshold de sorte que la variance dans le dernier calque virtuel soit égale à la variance mesurée au profilage. À vérifier… (moi c'est ça que je ferais si je devais le coder).
J'ai trouvé une bonne explication de la différence soft/hard-threshold : http://www.numerical-tours.com/matlab/de...avelet_1d/ En gros, on ne minimise pas la même norme. En conséquence, le hard-thresold coupe tout ce qui dépasse, le soft ne fait qu'attenuer/normaliser ce qui dépasse.
Merci pour toutes ces explications !
Concernant l'implementation du débruitage par profil, darktable établi un profil permettant de faire une transformation d'anscombe, qui permet d'avoir un bruit gaussien de variance 1 au lieu d'un bruit poissonien-gaussien. Une fois la transformation faite, il effectue le debruitage en ondelettes ou moyennes non locales, puis fait une transformation inverse (qques explications ici : https://www.darktable.org/2012/12/profil...ton-noise/ ).
D'ailleurs, dans ce module, le curseur de force agit sur cette transformation, et non pas sur les paramètres d'ondelettes/moyennes non locales. Je peux pas expliquer la manière dont il agit sur la transformation par contre, je n'ai pas regardé comment cette transformation marche.
Messages : 6,595
Sujets : 140
Inscription : Feb 2016
Réputation :
56
Système d'exploitation:
16-08-18, 12:50
(Modification du message : 16-08-18, 12:50 par jpg54.)
Messages : 584
Sujets : 16
Inscription : Nov 2017
Réputation :
28
Système d'exploitation:
Distribution(s) Linux: Linux Mint
J'ai mis à jour mon dossier d'images bruitées "test" avec plusieurs séries prise avec un fuji à ISOs variés (entre 3200 et 51200)
Tout ça est disponible ici : https://drive.google.com/drive/folders/1...sp=sharing
@aurelienpierre, ça devrait être mieux pour pouvoir comparer correctement avec tes Nikons qu'avant, vu qu'avant il y avait que du 51200
Messages : 584
Sujets : 16
Inscription : Nov 2017
Réputation :
28
Système d'exploitation:
Distribution(s) Linux: Linux Mint
Essai (pas parfait !) de modification du dernier style d'Aurélien : https://drive.google.com/open?id=1jLLoPS...L141Q05JdO
Modifications :
- pixels chauds : j'ai enlevé l'option "3 voisins", je trouve qu'elle en dégrade un peu les images parfois, et que le module reste très efficace sans
- j'ai changé les opacités des moyennes non locales. Je me suis basé sur l'opacité de la première instance, où Aurélien avait mis une opacité de 40%. J'ai mis cette même opacité sur le bleu, et j'ai mis la moitié (20%) sur le vert.
- j'ai changé la force et la taille (force 0.5, taille 2) sur les instances de moyennes non locales. Je trouve en fait qu'avoir une taille trop grande ne donne pas toujours de bénéfice, et que la taille 2 est un bon compromis (avec de grandes tailles, on se retrouve plus souvent avec des soucis de "patchs rares", c'est à dire que l'algo ne parvient pas à corriger certains pixels, ce qui peut donner un rendu peu uniforme). Une taille de 2 veut dire que lorsqu'on débruite un pixel, on considère un carré de taille 5x5 centré autour de ce pixel. L'algo compare cette zone avec d'autres zones (patchs) alentour, et fait une moyenne pondérée en avantageant les patchs qui sont les plus "proches" du patch de départ, c'est à dire ceux pour lesquelles la comparaison indique qu'ils sont très similaires. Un problème peut venir du fait que la comparaison des patchs se fait avec le MSE (mean square error), c'est à dire qu'on calcule la différence entre les 2 patchs pixel par pixel, qu'on met toutes ces différences de pixels au carré, et qu'on fait la moyenne de tout ça. Ça marche pas mal, mais une grosse erreur au centre compte autant qu'une grosse erreur dans un coin. C'est pour ça qu'en l'état j'aime pas trop utiliser des tailles de patchs très grosses (avec taille à 4 ça fait un patch de 9x9 pixels), car il y a un risque d'avoir un problème de faux positif lié à une bonne correspondance sur les bords et une mauvaise au centre, alors que c'est le centre qui nous intéresse. D'un autre côté avec une taille trop petite, le bruit n'est pas assez dilué et influence trop les comparaisons. (@jpg54, désolé pour ta tête ) Je trouve que la taille à 2 donne un compromis pas mal, on peut évidemment en discuter Pour la force à 0.5, j'avoue que c'est vraiment au feeling ça haha (et quand même pas trop faible pour éviter les phénomènes de patchs rares) !
Et les ondelettes j'ai gardé ça pareil, je trouve ça bien, j'ai juste déplacé l'instance en fusion couleur en dernier.
Messages : 1,190
Sujets : 47
Inscription : Mar 2016
Réputation :
71
Système d'exploitation:
Distribution(s) Linux: Fedora 29
je viens de tester rapidement à 1600 ISO, ça rend la peau cireuse.
Je suis d'accord pour les moyennes non-locales, plus gros n'est pas forcément mieux, d'où une opacité assez faible quand je l'utilise en largeur 4. Pour régler ce problème d'importance égale des pixels suivant leur position dans le patch, il suffirait d'utiliser une moyenne géométrique pondérée avec des coefficients de Gauss, avec la distribution gaussienne centrée sur le centre du patch (et j'opterais pour un écart-type égal au quart de la largeur du patch).
|