Redressement de fichiers et perte de netteté

Démarré par GLR30, Novembre 14, 2018, 22:24:04

« précédent - suivant »

chelmimage

Citation de: Verso92 le Novembre 18, 2018, 23:16:14
Il y aura toujours une dégradation, c'est mathématique.

Après, sera-t-elle vraiment visible/gênante... c'est une autre histoire.
C'est exactement mon avis.
C'est pour ça que j'ai utilisé un motif très répétitif qui fait que si on voit mal la perte de netteté on peut quand même la mesurer.
Et là c'est indiscutable.

seba

#51
Citation de: jenga le Novembre 18, 2018, 23:06:41
En pratique, non (sauf pour les quarts de tour).

Comme indiqué par Franciscus, la rotation dans un plan est effectuée au moyen d'une matrice 2x2 (pour un angle a et une distance R au centre de rotation, les coefficients sont R cos a, R sin a, -R sin a, R cos a) ; pour chaque pixel source, la multiplication de son vecteur coordonnées par cette matrice fournit la position du pixel résultat correspondant.

Mais, en général, les coordonnées de ce résultat ne sont pas des nombres entiers: par exemple on trouvera x=120,489785 et y=484,547892. Il faut donc un interpolateur pour trouver les valeurs de l'image (par exemple RGB) en ce point de coordonnées non entières, en connaissant les valeurs aux coordonnées entières.

Sans entrer dans le détail du traitement du signal, il découle du théorème d'échantillonnage que les valeurs aux coordonnées non entières peuvent être retrouvées exactement en convoluant les pixels connus (aux coordonnées entières) avec une fonction sinc(x) ("sinc " signifie "sinus cardinal", soit (sinus x) / x ), décalée de la distance adéquate (à un coefficient près, l'écart entre le point cible et la coordonnée entière la plus proche)

Cet interpolateur étant exact, tout autre est inexact.

Mais deux obstacles s'opposent à l'interpolation exacte par sinc:
-la théorie de l'échantillonnage considère des signaux périodiques (se répétant identiquement à eux-mêmes à l'infini), or nos images ne le sont pas: elles ont une certaine taille, par exemple 2000x1000, et rien autour; elles ne se répètent pas à l'infini.

-si on contourne l'obstacle ci-dessus, par exemple en décrétant que notre image se répète telle quelle à l'infini (en la collant par pensée juste à côté d'elle même, un nombre infini de fois), on ne peut toujours pas utiliser en pratique l'interpolateur sinc(x). En effet, ce dernier a des valeurs non nulles jusqu'à x infini; il faut donc, en toute rigueur, un nombre d'opérations infini pour calculer chaque pixel de l'image.

Donc, le seul interpolateur rigoureusement exact n'est pas utilisable sur une machine physique. Bien entendu, il existe toutes sortes d'interpolateurs performants, ce qui permet de choisir le meilleur compromis précision / temps de calcul, éventuellement en fonction du type d'image concerné.

J'ai déjà cité le "NoHalo" de Gimp, que je trouve vraiment excellent en pratique (mais je n'ai pas étudié son fonctionnement).

Pour aller plus loin, voir par exemple:
https://tel.archives-ouvertes.fr/tel-00206144/document

Mazette ! Ca c'est de l'argumentaire ! Tu es prof de maths ou quelque chose comme ça ?

seba

Et si on tourne l'image de 45° par exemple ? Le pas des pixels sera différent.

seba

Voici une mire (traits blancs et noirs de 1 pixel de large), rotation 0° , 5° et 45°.
A première vue, quelle que soit l'interpolation, il me semble impossible que la résolution soit conservée.
Pour qu'elle le soit, il faudrait d'abord redimensionner l'image avant de faire la rotation.

chelmimage

Citation de: jenga le Novembre 18, 2018, 23:06:41
En pratique, non (sauf pour les quarts de tour)...
.........................................;;;
Donc, le seul interpolateur rigoureusement exact n'est pas utilisable sur une machine physique. Bien entendu, il existe toutes sortes d'interpolateurs performants, ce qui permet de choisir le meilleur compromis précision / temps de calcul, éventuellement en fonction du type d'image concerné.

J'ai déjà cité le "NoHalo" de Gimp, que je trouve vraiment excellent en pratique (mais je n'ai pas étudié son fonctionnement).

Pour aller plus loin, voir par exemple:
https://tel.archives-ouvertes.fr/tel-00206144/document
Voila qui élève considérablement le niveau de la discussion! ::).... ::)

seba

Citation de: seba le Novembre 19, 2018, 08:00:40
Pour qu'elle le soit, il faudrait d'abord redimensionner l'image avant de faire la rotation.

Et y rester (ne pas revenir à la définition d'origine) car sinon le résultat sera tout aussi mauvais.

jenga

Citation de: seba le Novembre 19, 2018, 07:30:12
Mazette ! Ca c'est de l'argumentaire ! Tu es prof de maths ou quelque chose comme ça ?
Non, bien que j'aie donné quelques cours en fac. Mais à un moment de ma carrière j'ai développé des machines d'inspection automatique de circuits intégrés, et cela impliquait entre autres de traiter des images dont les composantes spectrales étaient proches de la limite de Shannon, ce qui implique de faire très attention ux interpolations.

jenga

Citation de: chelmimage le Novembre 19, 2018, 08:32:35
Voila qui élève considérablement le niveau de la discussion! ::).... ::)
Je suis désolé si mon post manquait de clarté. Sur le fond, ce fil traite d'un sujet qu'il est impossible de comprendre vraiment sans entrer dans des notions un peu techniques. Seba vient de présenter un exemple qui illustre parfaitement ce problème, je vais essayer de le commenter clairement.

jenga

Citation de: seba le Novembre 19, 2018, 08:00:40
Voici une mire (traits blancs et noirs de 1 pixel de large), rotation 0° , 5° et 45°.
A première vue, quelle que soit l'interpolation, il me semble impossible que la résolution soit conservée.
Pour qu'elle le soit, il faudrait d'abord redimensionner l'image avant de faire la rotation.




Les calculs des rotations me semblent corrects à première vue, mais ne correspondent probablement pas à ce que tu attendais. La clé du problème, c'est que la mire de gauche (N/B au pas de 2 pixels) ne peut pas être la photo d'une mire N/B "parfaite" (avec des transitions noir-blanc abruptes) au pas de 2 pixels.

En effet, si l'on dispose d'un capteur dont les pixels sont au pas de 1 (en unités normalisées), la fréquence spatiale la plus élevée que l'on puisse acquérir est 0,5, c'est-à-dire une sinusoïde au pas de 2. Un signal rectangulaire au pas de 2 contient des fréquences (harmoniques) beaucoup plus élevées, qui seraient même infinies si les transitions étaient verticales.

J'ai représenté ci-après en 1 le profil d'une colonne de ton image numérique, par exemple la colonne du milieu. C'est une suite de noirs et de blancs purs, au pas de 2.
Si cette colonne sortait d'un capteur (en laissant de côté la différence entre photosite et pixel), l'image physique projetée sur ce capteur aurait eu le profil présenté en 2 : c'est une sinusoïde de pas 2, soit fréquence 0.5.

Il est impossible d'avoir des transitions plus raides sans introduire de fréquence plus élevée, qui sont hors critère d'échantillonnage. Cette image (courbe 2) est donc bien l'image physique, au niveau capteur, que le capteur numérise pour produire le profil 1.

Dans l'image tournée de 45°, cette colonne du milieu est maintenant orientée le long de la diagonale bas gauche / haut droit. Le long de cette diagonale les pixels sont espacés de 1,414 environ et non de 1.
Par conséquent, l'interpolateur doit simuler l'acquisition de la colonne représentée en 2, avec un pas de pixels multiplié par 1,414. C'est ce qui est représenté sur mon schéma 3, où la graduation du bas représente la position des pixels le long de la diagonale.

Les valeurs successives des pixels le long de cette diagonale sont donc les valeurs des points en rouge du schéma 3. Cela correspond en gros à ton image de droite.

Pourquoi cela ne correspond-il pas à ce qu'on attendait intuitivement?
L'image de départ était à la limite du critère de Shannon dans la direction verticale (fréquence spatiale 1/2); après rotation, comme on l'a vu plus haut, l'échantillonnage dans cette direction s'effectue avec des pixels plus espacés que 1.

Par conséquent, les fréquences spatiales le long de cette direction dépassent le critère de Shannon et cela introduit du moiré; celui-ci est particulièrement visible sur l'image tournée de 5 degrés.

seba

OK merci.
Cela dit je n'ai pas tout compris.
Même image qu'avant mais définition doublée (avec toujours un signal carré - blanc et noir mais sur 2 pixels de large).
Là ça va déjà beaucoup mieux.

Jean-Claude

il y a le théoricien déconnecté de la vraie vie pour qui plus rien ne va plus quand la quatrième décimale n'est plus exacte

et il y a le photographe qui ne voit pas de différence sur ses grands formats à moins de 10% d'écart  :D

chelmimage

Citation de: jenga le Novembre 19, 2018, 10:24:10
Je suis désolé si mon post manquait de clarté. Sur le fond, ce fil traite d'un sujet qu'il est impossible de comprendre vraiment sans entrer dans des notions un peu techniques. Seba vient de présenter un exemple qui illustre parfaitement ce problème, je vais essayer de le commenter clairement.
Non, il ne manquait pas de clarté. J'ai mis des smileys pour marquer qu'un sujet peu abordé dans le traitement d'image courant pouvait donner lieu à des développements mathématiques complexes.
J'ai parcouru le document. Et j'ai au moins compris les images exemples.. Dans lesquelles on voit que les mathématiques peuvent donner des résultats plus ou moins intéressants et proches de la réalité.

Seb Cst

Pour une fois qu'un spécialiste de la théorie du signal donne une réponse à une question d'ordre technique, Jean Claude nous en livre une autre à la hauteur de son immense talent...

Sinon, j'ai justement une question au spécialiste  Jenga: dans la mesure où nous partions d'un protocole expérimental basé sur l'analyse d'un histogramme, y a-t-il un moyen expérimental plus fiable que l'écart-type, tout en restant facile à mettre en œuvre pour le quidam photographe, pour analyser (mesurer) la perte de netteté ?
Disons à partir de motifs conçus dans l'esprit de ceux proposés par Chelmimage ?
Car justement les publications de Chelmimage avec sa trame illustrent illustrent un écart-type resté stable avec une forme d'histogramme prouvant le "lissage" du contraste. (Un Dirac qui aurait pris un coup de marteau). Comment obtenir la fonction de densité nécessaire à la bonne lecture ?

Le jugement oculaire à la louche étant bien sûr un pis-aller...

PS: le document en lien, c'est ta propre thèse ?

Jean-Claude

Une image de la vraie vie n'a rien à voir avec une réseau de lignes blaches et noires de 1 pixel, ou alors rarement que sur des des zones faibles ou l'on a de toute façon du moiré si l'objectif suit  :)

titisteph

Dans la vraie vie, j'ai souvent constaté, par exemple, qu'une correction de la distorsion d'une optique en utilisant Photoshop faisait perdre de la netteté. En revanche, quand on fait la même chose dans C1, la perte était en pratique, invisible.

De même quand on utilise l'outil de déformation de PS : perte de piqué.

jenga

Citation de: Jean-Claude le Novembre 19, 2018, 13:53:08
il y a le théoricien déconnecté de la vraie vie pour qui plus rien ne va plus quand la quatrième décimale n'est plus exacte

et il y a le photographe qui ne voit pas de différence sur ses grands formats à moins de 10% d'écart  :D
Dans le cadre de la photo, il ne s'agit bien entendu pas de garantir la 4ème décimale, mais de comprendre pourquoi certains phénomènes visibles et gênants peuvent apparaître.

Cela étant, il me semble que tu nous as dit, sur un autre fil, avoir besoin d'images 16 bits pour ne pas dégrader ton processus.
16 bits, c'est bien 5 chiffres significatifs, non? ;)


jenga

#66
Citation de: chelmimage le Novembre 19, 2018, 14:05:13
Non, il ne manquait pas de clarté. J'ai mis des smileys pour marquer qu'un sujet peu abordé dans le traitement d'image courant pouvait donner lieu à des développements mathématiques complexes.
J'ai parcouru le document. Et j'ai au moins compris les images exemples.. Dans lesquelles on voit que les mathématiques peuvent donner des résultats plus ou moins intéressants et proches de la réalité.
Merci.
Tes exemples illustrent très bien la difficulté du problème, et la dispersion de l'histogramme représente bien ce que tu cherches à analyser. La difficulté principale est d'identifier ce qu'on attend du traitement: je vais essayer de m'expliquer sur la base de l'exemple de seba.

En gros, je crois qu'on attend non pas la vraie image, mais une image accentuée, avec des fronts artificiellement raidis.

jenga

Citation de: Seb Cst le Novembre 19, 2018, 14:25:18
Jenga: dans la mesure où nous partions d'un protocole expérimental basé sur l'analyse d'un histogramme, y a-t-il un moyen expérimental plus fiable que l'écart-type, tout en restant facile à mettre en œuvre pour le quidam photographe, pour analyser (mesurer) la perte de netteté ?
Disons à partir de motifs conçus dans l'esprit de ceux proposés par Chelmimage ?
Car justement les publications de Chelmimage avec sa trame illustrent illustrent un écart-type resté stable avec une forme d'histogramme prouvant le "lissage" du contraste. (Un Dirac qui aurait pris un coup de marteau). Comment obtenir la fonction de densité nécessaire à la bonne lecture ?

Le jugement oculaire à la louche étant bien sûr un pis-aller...

PS: le document en lien, c'est ta propre thèse ?
Je ne suis pas spécialiste en traitement du signal, j'en ai juste utilisé à un certain moment. Le document n'est pas ma thèse, je ne me serais pas permis de m'autociter sans prévenir.

La question que tu poses est difficile. Comme je l'ai répondu à chelmimage, la difficulté principale est d'identifier ce qu'on attend du traitement; il me semble qu'on attend non pas la vraie image au sens mathématique, mais une image accentuée, avec des fronts artificiellement raidis.

Il me semble qu'en pratique, il faudrait caractériser les différents interpolateurs dont on dispose, au moyen de mires de test et surtout de photographies de mires, en se mettant dans les conditions de netteté maximale de son matériel, mais surtout sans accentuer l'image.

(en effet, l'accentuation est une cuisine infâme qui introduit localement des hautes fréquences, au-delà de la fréquence de Nyquist: effectuer des traitements géométriques sur une telle image introduit de l'aliasing et donc des résultats imprévisibles, peu reproductibes, comme expliqué dans ma première réponse à seba.)

Puis on effectue une rotation de n'importe quel angle autre que des quarts de tour, ou une augmentation de la résolution d'un facteur autre qu'une puissance de 2 (par exemple résolution x1.7).

Ensuite on décide qualitativement si le résultat est acceptable sur ces images: visuellement, et en comparant les histogrammes. Comme on cherche en général quelque chose de plaisant plutôt que mathématiquement exact (ce qui est normal, on fait de la photo et pas des maths), chacun aura ses propres critères.

Idéalement, une fois qu'on a choisi l'interpolateur qui nous convient, on paramètre son logiciel pour qu'il l'utilise dans toutes les transformations géométriques: rotations, mises à l'échelle, corrections de distorsion, cisaillements, translations, fluidité, etc. Je dis "idéalement", parce que je ne sais pas si c'est possible avec tous les outils (j'utilise Gimp pour ma part).

Et dans le processus de PT, il faut bien veiller à appliquer l'accentuation après les traitements géométriques plutôt qu'avant.

jenga

#68
Citation de: seba le Novembre 19, 2018, 13:08:16
Même image qu'avant mais définition doublée (avec toujours un signal carré - blanc et noir mais sur 2 pixels de large).
Là ça va déjà beaucoup mieux.

Dans ce nouvel exemple les fréquences spatiales sont divisées par 2.  J'ai tracé ci-dessous:

en 1: la valeur des pixels le long de la colonne centrale

en 2: l'image projetée sur le capteur qui aurait donné ces valeurs (en supposant que le capteur a des pixels et non des photosites); comme dans l'exemple précédent, cette image réelle ne peut pas avoir de fronts raides, qui seraient des fréquences au-delà du critère de Shannon.
Cette "image réelle" est une sinusoïde de pas 4, donc de fréquence 0.25.
(Cette sinusoïde sort de l'échelle 0-100%. Je néglige ce détail à ce stade, les interpolateurs savent gérer cela).

en 3: les valeurs selon la même direction de la mire, après rotation de 45°. Cette direction étant maintenant alignée le long de la diagonale, les pixels sont espacés de 1.414.
Le pas de la sinusoïde est donc, après rotation, environ 2.8 pixels (fréquence 0.35), ce qui est compatible avec le critère de Shannon: il n'y a pas d'aliasing, pas de moiré.
Les valeurs le long de cette diagonale, après rotation, sont repérées par les points rouges.

Observation
Les valeurs en rouge ne correspondent pas bien à ce que tu obtiens: dans les deux cas on note l'apparition de niveaux de gris intermédiaires entre le noir et le blanc. Par contre, tu obtiens des noirs et des blancs identiques à chaque période, alors que le profil 3 ci-dessous montre des valeurs max et min différentes à chaque pas de la sinusoïde, parce que le pas de celle-ci n'est pas un multiple du pas des pixels.
Deux causes peuvent expliquer cette différence:

-j'ai raisonné sur des pixels ponctuels pour simplifier; prendre en compte la largeur réelle des pixels réduit l'effet de la désynchronisation entre le pas des pixels et celui du motif

-l'interpolateur que tu utilises ajoute un peu d'accentuation (ça peut être inclus dans les coefficients du filtre qu'il utilise), pour obtenir des résultats plus plaisants, ce qui remonte les bosses (et baisse les creux), dans ce cas jusqu'aux valeurs maxi / mini.
Comme ce sont des traitements non linéaires et non spatialement invariants, les résultats ne sont pas toujours prévisibles; on note du moiré sur l'image tournée de 5°, je ne sais pas si c'est dû à l'interpolateur ou à la compression jpg de ton image.

Conclusion
D'un point de vue mathématique, les valeurs en rouge (avec des gris intermédiaires et des creux et pics différents à chaque pas) sont correctes, car elles correspondent bien à un échantillonnage du motif représenté en 2 par la trame de pixels tournée de 45°.

Les valeurs que tu obtiens ne sont pas tout-à-fait exactes d'un point de vue mathématique, mais elles seront jugées plus "plaisantes" d'un point de vue photographique (et c'est bien ce qui compte, on fait de la photo), à l'exception peut-être de l'éventuel problème de moiré sur l'image tournée de 5°.

Nous sommes habitués à des images artificiellement accentuées, c'est-à-dire avec des ajouts de hautes fréquences, supérieures au critère de Shannon. Cela complique considérablement la tâche des interpolateurs qui, idéalement, devraient supprimer l'accentuation artificielle (mais c'est impossible, bien sûr), interpoler, puis ré-accentuer.

seba


GLR30

Oui, merci beaucoup à jenga pour avoir pris le temps de ces explications théoriques très approfondies, ainsi qu'aux autres contributeurs.
Et en pratique, j'abandonne définitivement l'outil redressement de ViewNX2.

Seb Cst

Citation de: jenga le Novembre 20, 2018, 10:27:53
Dans ce nouvel exemple les fréquences spatiales sont divisées par 2.  J'ai tracé ci-dessous:

en 1: la valeur des pixels le long de la colonne centrale

en 2: l'image projetée sur le capteur qui aurait donné ces valeurs (en supposant que le capteur a des pixels et non des photosites); comme dans l'exemple précédent, cette image réelle ne peut pas avoir de fronts raides, qui seraient des fréquences au-delà du critère de Shannon.
Cette "image réelle" est une sinusoïde de pas 4, donc de fréquence 0.25.
(Cette sinusoïde sort de l'échelle 0-100%. Je néglige ce détail à ce stade, les interpolateurs savent gérer cela).

en 3: les valeurs selon la même direction de la mire, après rotation de 45°. Cette direction étant maintenant alignée le long de la diagonale, les pixels sont espacés de 1.414.
Le pas de la sinusoïde est donc, après rotation, environ 2.8 pixels (fréquence 0.35), ce qui est compatible avec le critère de Shannon: il n'y a pas d'aliasing, pas de moiré.
Les valeurs le long de cette diagonale, après rotation, sont repérées par les points rouges.

Observation
Les valeurs en rouge ne correspondent pas bien à ce que tu obtiens: dans les deux cas on note l'apparition de niveaux de gris intermédiaires entre le noir et le blanc. Par contre, tu obtiens des noirs et des blancs identiques à chaque période, alors que le profil 3 ci-dessous montre des valeurs max et min différentes à chaque pas de la sinusoïde, parce que le pas de celle-ci n'est pas un multiple du pas des pixels.
Deux causes peuvent expliquer cette différence:

-j'ai raisonné sur des pixels ponctuels pour simplifier; prendre en compte la largeur réelle des pixels réduit l'effet de la désynchronisation entre le pas des pixels et celui du motif

-l'interpolateur que tu utilises ajoute un peu d'accentuation (ça peut être inclus dans les coefficients du filtre qu'il utilise), pour obtenir des résultats plus plaisants, ce qui remonte les bosses (et baisse les creux), dans ce cas jusqu'aux valeurs maxi / mini.
Comme ce sont des traitements non linéaires et non spatialement invariants, les résultats ne sont pas toujours prévisibles; on note du moiré sur l'image tournée de 5°, je ne sais pas si c'est dû à l'interpolateur ou à la compression jpg de ton image.

Conclusion
D'un point de vue mathématique, les valeurs en rouge (avec des gris intermédiaires et des creux et pics différents à chaque pas) sont correctes, car elles correspondent bien à un échantillonnage du motif représenté en 2 par la trame de pixels tournée de 45°.

Les valeurs que tu obtiens ne sont pas tout-à-fait exactes d'un point de vue mathématique, mais elles seront jugées plus "plaisantes" d'un point de vue photographique (et c'est bien ce qui compte, on fait de la photo), à l'exception peut-être de l'éventuel problème de moiré sur l'image tournée de 5°.

Nous sommes habitués à des images artificiellement accentuées, c'est-à-dire avec des ajouts de hautes fréquences, supérieures au critère de Shannon. Cela complique considérablement la tâche des interpolateurs qui, idéalement, devraient supprimer l'accentuation artificielle (mais c'est impossible, bien sûr), interpoler, puis ré-accentuer.

Salut.
Je m'associe avec 24h de décalage aux remerciements précédents destinés à Jenga. Cette réponse m'a permis,  au passage, de réfléchir au fait que j'avais commencé par fabriquer un fichier avec contraste aggravé à la lisière de la fréquence de coupure (à partir des mires de Chelm'), avant de tenter une estimation de la perte de netteté. Cette démarche peut introduire un sacré biais lors de l'interprétation.

Il n'y a plus qu'à se lancer dans la lecture de la thèse (!), dont la structure m'a semblé très intéressante. Mais c'est pas aussi fluide qu'un roman... (euphémisme)  ;)

rsp

Très intéressant !
Merci jenga.
Je pense que dans le cas de réalisation de ces opérations sur un RAW, l'accentuation n'est faite qu'en fin de processus, au moment de la conversion.

Tonton-Bruno

Citation de: rsp le Novembre 22, 2018, 21:51:27
Je pense que dans le cas de réalisation de ces opérations sur un RAW, l'accentuation n'est faite qu'en fin de processus, au moment de la conversion.
Je le pense aussi, et c'est sans doute pour cela que je ne constate aucune perte au redressement d'un raw sous Photoshop Adobe Camera Raw, même quand je photographie une mire au D850.
Je me suis abstenu de participer à cette discussion depuis le début, car à mon avis elle démontre juste que si on utilise le mauvais outil sur le mauvais fichier, on obtient forcément le mauvais résultat.

Jean-Claude

Citation de: jenga le Novembre 20, 2018, 10:21:14
Dans le cadre de la photo, il ne s'agit bien entendu pas de garantir la 4ème décimale, mais de comprendre pourquoi certains phénomènes visibles et gênants peuvent apparaître.

Cela étant, il me semble que tu nous as dit, sur un autre fil, avoir besoin d'images 16 bits pour ne pas dégrader ton processus.
16 bits, c'est bien 5 chiffres significatifs, non? ;)
[/quote
L'histoire des fichiers 16bit est une autre histoire et ne se voit qu'en cas de fort post traitement, l'avantage d'un fichier 16bit par rapport à du 14 ou du 12 réside dans la réserve de post traitement.
La réserve de post traitement entre une sortie imprimante en 8bit et le fichier de départ 12 bit est de x16, en 14bit de x64, avec du 16bit elle est de x256 et là tout est d'un coups permis. on en est doc pas à la 4 ème décimale, mais juste à une réserve de post traitement sans dégradation 4x plus importante.