J’ai édité le post avec des liens pour expliquer les abréviations
Tu es déjà debout Aurélien et tu as fini tes examens ? C’est pas urgent ! Je suis entrain de me battre avec LensFun.
Pour le parallélisme, je crois (mais je peux me tromper) que les opérations NumPy se font en parallèle, mais que tu te resynchronises sur le « global interpreter lock » dès que tu repasses côté Python. Si c’est le cas effectivement il ne faut pas attendre de miracle (sauf en manipulant des images vraiment gigantesques).
Les opérations élémentaires sont parallélisées, en effet. Mais les assemblages que tu fais de ces fonctions (gradients custom, FFT) ne sont pas parallélisables de façon simple en faisant sauter le GIL. Il faudrait pour ce faire recoder ces fonctions en Cython avec OpenMP, mais par expérience, c’est aussi long et plus propre de les recoder directement en C++, ce qui sera fait à terme si le module voit le jour, mais dépasse le cadre de ma preuve de concept. Parce que même en parallélisant, ça ne règle pas tous mes problèmes, dont la gestion de mémoire (une image de 24 Mpx fait crasher le programme avec 16 Go de RAM…).
Sinon j’ai fini mes examens Jean-Paul ![]()
Nouveaux résultats sur une photo de JP Gauche, avec un flou de bougé et de lentille non simulé. Idéalement, vu que le flou est assez large, il aurait fallu plus d’itérations, mais l’idée ici est de montrer qu’au moins, on n’ajoute pas d’effet louche.
Et faire la map correctement à la pdv? Non???
Ok je s… ???
WOW impressionnant quand même le résultat avec la photo de JPG.
Des baffes ![]()
Oui c’est plus que prometteur… J’le veuuuuux ???
Ca calme ![]()
Et je me demande qu’est-ce que ce module de déconvolution peut apporter sur une image non flou?
En voilà une bonne question !!! @aurelien?
Très bien le rendu Aurélien, je ne pense pas que l’on peut faire beaucoup mieux. C’est une photo que j’ai juste gardé pour me rappeler que je fais aussi des erreurs.
Moi aussi je le veux ce module. Une chance qu"il arrive dans Darktable? Pas pour la version 2.3 je suppose?
Non, pas la version 2.4 (2.3 est la beta en construction en 2017). Éventuellement donc fin 2018 avec la prochaine version 2.6.
Peut-être une branche parallèle sera mise en place avec la version 2.5 et qu’il faudra compilé séparément comme la branche HaldCult pour la simulation de film (à une autre époque). Seul Aurélien aura la réponse.
Tout ce que je peux dire pour l’instant, c’est qu’il y a encore beaucoup de travail avant que ça n’arrive dans DT, mais je serai le premier utilisateur. Donc on trouvera un moyen.
Merci pour ces explications Pierre, super travail pédagogique. Il mériterait une diffusion plus large en transposant quelques exemples sur lesréglages de Rawtherapee à destination de nos amis photographes travaillant sur Windows…
François
Oui merci aussi pour les explications avec la vidéo, très intéressant !
Juste par curiosité, quand tu dis dans la vidéo (@~20:22) parlant de la déconvolution de Richardson-Lucy qu’elle réalise une estimation de la distribution de gradiant en se basant sur des lois et des observations statistiques, est-ce que ça veut dire que ce n’est pas figé et que ces statistiques peuvent évoluer, vers une amélioration, un affinement ?
Merci encore pour ce travail et cette restitution.
alors, pas exactement… Je n’ai pas été complet sur ce sujet dans la vidéo car la théorie dépasse le niveau lycée que j’essaie de suivre.
L’algorithme classique de Richardson-Lucy se contente de retirer du flou d’une image, d’une façon très imparfaite, et suppose de connaître précisement le flou appliqué. Le problème principal de cette méthode est qu’elle amplifie le bruit (qui est inconnu à l’avance), car le bruit et les détails nets sont tous dans les hautes fréquences, et l’algo de R-L ne fait pas la différence entre les deux.
La version de Perrone/Favaro que j’ai codée réalise une régularisation basée sur des observations statistiques, qui permet de supprimer le bruit sans (trop) supprimer les vrais détails fins. Ici, les stats sont utilisées pour essayer de différencier le bruit des détails nets à priori (car on ne peut pas faire autrement). Pour ce faire, ils attribuent une pénalité aux pixels qui ont un comportement qui dérive de la loi statistique (ils les effacent partiellement de la solution).
La loi statistique qu’ils utilisent montre que le logarithme de la variation totale suit une distribution de Cauchy (la variation totale, c’est la norme vectorielle du gradient sur les lignes et sur les collonnes de pixels). D’autres versions existent (sans le logarithme, ou utilisant des ondelettes au lieu de la variation totale) et peuvent donner de meilleurs résultats dans des cas très précis. L’idée c’est toujours de trouver une description mathématique (on appelle ça un modèle) qui permette de faire la différence entre du bruit et du détail, pour venir nettoyer l’image déconvoluée des anomalies que créée la méthode de Richardson-Lucy. J’ai choisi cette méthode parce qu’elle retombe sur l’image nette dans plus de 50 % des cas et que c’est une des meilleures disponibles (et aussi parce que les chercheurs ont publié leur code source Matlab). Je l’ai juste un peu adaptée pour la rendre plus rapide et compatible avec une utilisation en photo par des gens sans doctorat ![]()
Donc évidemment, il n’est pas exclu que quelqu’un arrive un jour avec un modèle plus précis. C’est la beauté des sciences.
[hr]
De rien. Mais mon nom c’est Aurélien.
On me demande souvent une version RawTherapee, mais je n’utilise pas ce logiciel (je ne l’aime pas) et je ne connais pas ses développeurs. Ceci dit, une fois codé en C, le plus gros sera fait et l’intégration ne devrait pas être très compliquée.