RAW: compression sans perte sans pertes?!

Démarré par eengel, Avril 05, 2013, 22:41:39

« précédent - suivant »

eengel

Bonjour,
J'ai suivi avec intérêt la discussion sur l'encodage 12 ou 14 bits et la digression sur la compression sans perte. J'étais à priori d'accord avec le fait que le compression sans perte est sans pertes. C'est d'ailleurs une expression consacrée en informatique (lossless/lossy) qui exprime clairement le fait que l'opération de compression est exactement réversible ou pas (http://en.wikipedia.org/wiki/Lossless_compression) .  Comme d'autres je me suis dit que si Nikon utilisait une expression aussi connotée, c'était à dessein.

Je tombe alors sur cet article du support Nikon https://nikoneurope-fr.custhelp.com/app/answers/detail/a_id/2272/~/qu'est-ce-qu'un-fichier-nef-%3F
L'article bien qu'ancien à été mis à jour récemment et dit:

3. Compression sans perte :  certains reflex numériques disposent d'une option permettant d'enregistrer dans l'appareil photo le fichier NEF sous forme de fichier compressé sans perte. Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé. Néanmoins, le format compressé sans perte offre une grande souplesse d'édition de l'image et donne la possibilité de réenregistrer le fichier sans compression.

S'il y a très peut de différences, c'est qu'il y en a. Je consulte alors le mode d'emploi du D800 et, page 86 je vois que le RAW compressé sans perte est définit par:

Les images NEF sont compressées à l'aide d'un algorithme réversible qui réduit la taille du fichier d'environ 20-40% sans incidence sur la qualité d'image.

Pour le coup je trouve la formulation ambiguë. Avez vous une opinion sur le fait que le compression sans perte est réellement sans pertes? Y-a-t-il enfumage? Encore un coup du marketing?

coval95

Je ne comprends pas le problème, pourquoi trouves-tu la formulation ambiguë ?
Il est dit que les images NEF sont compressées à l'aide d'un algorithme réversible, donc c'est bien une compression sans perte.

sylvatica

#2
La compression sans perte ne fera rien perdre à la qualité de l'image. Ce n'est pas une opinion mais une affirmation qui vient de tests faits avec un D800 et une version de DCRAW que j'ai modifiée pour en extraire les données de compression.

Le site de Nikon n'est pas clair du tout. Ils disent :

Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé.

C'est juste. Mais il faut bien comprendre qu'en plus, il n'existe aucune différence entre un fichier non compressé et un fichier compressé sans perte. En terme de qualité, du plus qualitatif, au moins qualitatif

-1- Fichier non compressé 14 bits = Fichier compressé sans perte 14 bits
-2- Fichier compressé avec perte 14 bits
-3- Fichier non compressé 12 bits = Fichier compressé sans perte 12 bits
-4- Fichier compressé avec perte 12 bits

L'ordre entre -2- et -3- est sujet à débat. Disons que -3- sera meilleur dans les hautes lumières et que -2- sera meilleur dans les basses lumières. J'aurai tendance à dire qu'en général -2- est mieux que -3-.

Verso92

Par principe, la compression "sans perte" est sans perte (pas le moindre bit de changé).
Pareil que lorsqu'on compresse un fichier exécutable avec WinZip (par exemple) : le fichier décompressé sera identique (heureusement !) à l'original, au bit près.

eengel

Citation de: coval95 le Avril 05, 2013, 22:54:48
Je ne comprends pas le problème, pourquoi trouves-tu la formulation ambiguë ?
Il est dit que les images NEF sont compressées à l'aide d'un algorithme réversible, donc c'est bien une compression sans perte.
Citation de: Verso92 le Avril 05, 2013, 23:07:23
Par principe, la compression "sans perte" est sans perte.
Je suis d'accord avec cela.  Mon trouble vient de l'article du support Nikon qui au paragraphe compression sans perte décrit une compression ou "il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé". Ils ont inventé la compression sans pertes mais avec différences! S'ils sont aussi approximatif dans le support technique pourquoi seraient-t-ils précis dans le mode d'emploi? De plus le "sans incidence" dit juste qu'il n'y à pas de différence notable. Pas qu'il n'y en pas.

Aria

Puisque la compression "sans perte" ne semble pas nuire au fichier, autant virer l'autre possibilité...J'ai 2 fichiers dont un qui pèse 1 tonne pour le même résultat et je laisse la possibilité de choisir, bizarre Mr Nikon !!

sylvatica

#6
Citation de: eengel le Avril 05, 2013, 23:13:40
Je suis d'accord avec cela.  Mon trouble vient de l'article du support Nikon qui au paragraphe compression sans perte décrit une compression ou "il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé". Ils ont inventé la compression sans pertes mais avec différences! S'ils sont aussi approximatif dans le support technique pourquoi seraient-t-ils précis dans le mode d'emploi? De plus le "sans incidence" dit juste qu'il n'y à pas de différence notable. Pas qu'il n'y en pas.

Il est évident que même Nikon n'a pas les idées claires la dessus. Il faut bien comprendre que dans ce que tu cites, Nikon dit :
"Compression sans perte" > "Compression avec perte"
ce qui n'est pas du tout incompatible avec le fait que "Sans compression" = "Compression sans perte".

Citation de: photo63 le Avril 05, 2013, 23:18:08
Pffff.... C est de la parano ou quoi ? Mdrr

En meme temps, si Nikon simplifiait ses menus et supprimaient les options et les informations totalement inutiles, l'utilisateur s'y retrouverait mieux.

B@R

Citation de: eengel le Avril 05, 2013, 22:41:39
Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé.

Nikon aurait évité toute ambiguïté en écrivant :

Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé avec pertes.

B@R

Citation de: eengel le Avril 05, 2013, 22:41:39
Néanmoins, le format compressé sans perte offre une grande souplesse d'édition de l'image et donne la possibilité de réenregistrer le fichier sans compression.

Ici aussi Nikon aurait pu lever toute ambiguïté en écrivant :

Néanmoins, le format compressé sans perte offre une grande souplesse d'édition de l'image et donne la possibilité de réenregistrer le fichier tel qu'il aurait été enregistré sans compression.

eengel

#9
Citation de: sylvatica le Avril 05, 2013, 22:59:25
Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé.
S'il existe une différence en terme de qualité, c'est que le donnée récupérées sont différentes. Si non, comment expliquer la différence de qualité?

Si je veux me lancer dans des théories fumantes, je pourrais rappeler que, pour la compression, il arrive que, préalablement à la compression proprement dite, on arrange les données pour qu'elles soient plus compressibles. Après on compresse de façon réversible ou pas. Qu'est-ce qui empêche d'envisager que Nikon, dans le cas compressé, arrange d'abord un peut la RAW (en introduisant "très peut de différence en termes de qualité") pour favoriser le compression puis, compresse à l'aide d'un algorithme réversible?

Dans ce schéma, les expériences faites avec DCRAW ne montrent rien, la perte à été introduite avant la compression.

coval95

#10
Citation de: B [at] R le Avril 05, 2013, 23:18:42
Nikon aurait évité toute ambiguïté en écrivant :

Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé avec pertes.
Oui, c'est exactement ça.

Citation de: B [at] R le Avril 05, 2013, 23:23:07
Ici aussi Nikon aurait pu lever toute ambiguïté en écrivant :

Néanmoins, le format compressé sans perte offre une grande souplesse d'édition de l'image et donne la possibilité de réenregistrer le fichier tel qu'il aurait été enregistré sans compression.
Là je ne suis pas tout à fait d'accord. La formulation de Nikon est valable. On peut réenregistrer le fichier sans compression, ça veut dire qu'on a bien toutes les données initiales et que le logiciel est capable de réenregistrer le fichier intact.
De la même manière qu'un fichier qui a été zippé puis dézippé peut être réenregistré sans compression (non zippé).

coval95

Citation de: eengel le Avril 05, 2013, 23:25:38
S'il existe une différence en terme de qualité, c'est que le donnée récupérées sont différentes. Si non, comment expliquer la différence de qualité?
Relis bien ce qu'a écrit B [at] R :
Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé avec pertes.

Il y a peu de différences si la compression avec pertes a été faite avec peu de pertes (c'est une lapalissade hein...  :D).

Tu prends le format jpeg par exemple : plus le taux de compression est élevé et plus il y a de pertes, donc plus on s'éloigne des données d'origine et plus on dégrade l'image.

eengel

Citation de: coval95 le Avril 05, 2013, 23:33:58
Relis bien ce qu'a écrit B [at] R :
Dans des conditions normales de visionnage, il existe très peu de différences en termes de qualité entre un fichier NEF compressé sans perte et un fichier NEF compressé avec pertes.
OK j'ai été un peut vite. C'est plus clair. Merci

sylvatica

#13
Citation de: eengel le Avril 05, 2013, 23:25:38
Si je veux me lancer dans des théories fumantes, je pourrais rappeler que, pour la compression, il arrive que, préalablement à la compression proprement dite, on arrange les données pour qu'elles soient plus compressibles. Après on compresse de façon réversible ou pas. Qu'est-ce qui empêche d'envisager que Nikon, dans le cas compressé, arrange d'abord un peut la RAW (en introduisant "très peut de différence en termes de qualité") pour favoriser le compression puis, compresse à l'aide d'un algorithme réversible?

Dans ce schéma, les expériences faites avec DCRAW ne montrent rien, la perte à été introduite avant la compression.

Je vais essayer d'expliquer les différentes compressions sur un fichier 14 bits. Excepté les informations non directement liées à l'image, un NEF de D800 contient des informations sur a peu près 36 000 000 pixels. Pour chaque pixel, le capteur donne une valeur entre 0 et 2^14-1=16383. Le 0 correspond au noir total, et 16383 correspond au pixel saturé.

- NEF non compressé: Les 36 000 000 valeurs sont stockées de manière conventionnelle.
- NEF compressé sans perte: Nikon utilise un codage de Huffman. En gros, imagine que ton image est un Roman, et que chaque pixel correspond à un mot. Un algorithme va regarder les mots les plus utilisés et va réécrire le roman dans une langue imaginée pour l'occasion où les mots les plus utilisés sont ceux qui ont le moins de lettres. Il faut bien sur stocker le dictionnaire français/langue imaginaire pour pouvoir décoder tout cela. Au final, le Roman va être plus court, mais il est possible de le décoder sans aucun problème.
- NEF compressé avec perte: Au lieu de prendre toutes les valeurs entre 0 et 16383, seules 3000 valeurs sont autorisées : 0, 1, 2, 5, 10, ... , 16383. Si le capteur mesure 4, la valeur va être arrondie à 5. Il y a ainsi une perte d'informations. Attention, les trous ne sont pas répartis uniformément, et il y en a plus vers les hautes lumières que les basses lumières. Si on reprend notre analogie du Roman, cela revient à réécrire le Roman en utilisant un vocabulaire moins précis. Un peu comme si Ribéry réecrivait tout Kant.

En lisant le code source de DCRAW, j'ai remarqué que c'était bien un codage de Huffmann qui était utilisé pour la compression sans perte, ce qui est bien certifié sans pertes. J'ai aussi regardé les valeurs qui étaient autorisées dans la compression avec perte. Je pense vraiment que ce que j'ai fait est loin d'être une théorie fumante.

B@R

Citation de: coval95 le Avril 05, 2013, 23:27:25
Là je ne suis pas tout à fait d'accord. La formulation de Nikon est valable. On peut réenregistrer le fichier sans compression, ça veut dire qu'on a bien toutes les données initiales et que le logiciel est capable de réenregistrer le fichier intact.
De la même manière qu'un fichier qui a été zippé puis dézippé peut être réenregistré sans compression (non zippé).

Ma formulation est donc imparfaite ou pas assez claire, car je voulais exprimer EXACTEMENT la même chose que toi : la réversibilité !

bitere

Citation de: sylvatica le Avril 05, 2013, 23:44:42
Un peu comme si Ribéry réecrivait tout Kant.
Pas d'accord, dans ce cas ce serait une compression NEF vers JPG le plus dégradé possible... et encore  ;D

sylvatica

Citation de: bitere le Avril 06, 2013, 00:03:46
Pas d'accord, dans ce cas ce serait une compression NEF vers JPG le plus dégradé possible... et encore  ;D

Et à la décompression, c'est Kant qui doit récrire tout Ribéry. C'est là le plus drôle.

eengel

Citation de: sylvatica le Avril 05, 2013, 23:44:42
En lisant le code source de DCRAW, j'ai remarqué que c'était bien un codage de Huffmann qui était utilisé pour la compression sans perte, ce qui est bien certifié sans pertes. J'ai aussi regardé les valeurs qui étaient autorisées dans la compression avec perte. Je pense vraiment que ce que j'ai fait est loin d'être une théorie fumante.
Je suis d'accord, j'ai été un peut vite et la lecture du code de DCRAW est explicite. Désolé.

Note que je ne contestait pas ce point, mais le fait qu'une transformation préalable à la compression, afin de favoriser celle-ci aurait put altérer le contenu (cf https://fr.wikipedia.org/wiki/Transform%C3%A9e_de_Burrows-Wheeler, même si cette transformation est réversible mais ce n'est probablement pas la seule possible). Mais ce n'est pas le cas.

coval95

Citation de: B [at] R le Avril 05, 2013, 23:58:29
Ma formulation est donc imparfaite ou pas assez claire, car je voulais exprimer EXACTEMENT la même chose que toi : la réversibilité !
OK  ;)

sylvatica

Citation de: eengel le Avril 06, 2013, 00:11:24
Je suis d'accord, j'ai été un peut vite et la lecture du code de DCRAW est explicite. Désolé.

Note que je ne contestait pas ce point, mais le fait qu'une transformation préalable à la compression, afin de favoriser celle-ci aurait put altérer le contenu (cf https://fr.wikipedia.org/wiki/Transform%C3%A9e_de_Burrows-Wheeler). Mais ce n'est pas le cas.

La transformation de Burrows-Wheeler est utilisée pour compresser du texte (L'utilitaire bzip2 l'utilise). L'idée est assez géniale et repose sur le fait qu'après une lettre donnée, il y a plus de chance qu'apparaisse une lettre qu'une autre. Par contre, c'est aussi un algorithme de compression sans perte.

coval95

Citation de: sylvatica le Avril 05, 2013, 23:44:42
...
- NEF compressé avec perte: Au lieu de prendre toutes les valeurs entre 0 et 16383, seules 3000 valeurs sont autorisées : 0, 1, 2, 5, 10, ... , 16383. Si le capteur mesure 4, la valeur va être arrondie à 5. Il y a ainsi une perte d'informations. Attention, les trous ne sont pas répartis uniformément, et il y en a plus vers les hautes lumières que les basses lumières. Si on reprend notre analogie du Roman, cela revient à réécrire le Roman en utilisant un vocabulaire moins précis. Un peu comme si Ribéry réecrivait tout Kant.
...
Je ne suis pas sûre que ton explication soit complète, je veux dire qu'elle ne dit pas pourquoi on gagne de la place en diminuant le nombre de valeurs possibles : en effet tu as toujours 36 000 000 pixels à décrire.

coval95

Citation de: sylvatica le Avril 06, 2013, 00:15:32
La transformation de Burrows-Wheeler est utilisée pour compresser du texte (L'utilitaire bzip2 l'utilise). L'idée est assez géniale et repose sur le fait qu'après une lettre donnée, il y a plus de chance qu'apparaisse une lettre qu'une autre. Par contre, c'est aussi un algorithme de compression sans perte.
Cette transformation doit être très dépendante de la langue du texte à compresser, non ?

sylvatica

Citation de: coval95 le Avril 06, 2013, 00:17:51
Je ne suis pas sûre que ton explication soit complète, je veux dire qu'elle ne dit pas pourquoi on gagne de la place en diminuant le nombre de valeurs possibles : en effet tu as toujours 36 000 000 pixels à décrire.

Pour restituer les choses, on parle ici de la compression avec perte. Supposons pour faire simple que le capteur soit un capteur 2 bits. Il délivre donc pour chaque pixel un nombre entre 0 et 2^2-1=3. Il code cela en binaire :

00 : 0
01 : 1
10 : 2
11 : 3

chaque pixels va utiliser 2 bits. Si on décide de compresser avec la table de compression {0,3} (au lieu de {0,1,2,3}), on utilisera le code binaire :

0 : 0
1 : 3

chaque pixels va utiliser 1 bit. Dans ce cas, la taille du fichier va être divisé par 2.

coval95

OK mais ce n'était pas dit dans ton explication, cette précision (moins de valeurs autorisées => codage sur moins de bits => gain de place) me semblait utile à la compréhension (de la compression).  ;)

sylvatica

Citation de: coval95 le Avril 06, 2013, 00:19:16
Cette transformation doit être très dépendante de la langue du texte à compresser, non ?

Non, et c'est cela qui est génial. Il suffit juste que dans la langue que l'on compresse, les successions de lettres ne soient pas aléatoires. C'est le cas de toutes les langues. Par exemple, en français, après un "b", on a plus de chance d'avoir un "a" qu'un "q". Mais si on se trouve dans une langue ou après le "b" on a plus d'avoir un "q" qu'un "a", cela marchera aussi.