Je ne sais pas si quelqu'un a encore expliqué pourquoi le nombre magique semble être exactement 1: 2 et non, par exemple, 1: 1.1 ou 1:20.
L'une des raisons est que dans de nombreux cas typiques, près de la moitié des données numérisées sont du bruit , et le bruit (par définition) ne peut pas être compressé.
J'ai fait une expérience très simple:
J'ai pris une carte grise . À l'œil humain, cela ressemble à un morceau de carton gris neutre et uni. En particulier, il n'y a aucune information .
Et puis j'ai pris un scanner normal - exactement le type d'appareil que les gens pourraient utiliser pour numériser leurs photos.
J'ai scanné la carte grise. (En fait, j'ai numérisé la carte grise avec une carte postale. La carte postale était là pour vérifier la santé mentale afin que je puisse m'assurer que le logiciel du scanner ne fait rien d'étrange, comme ajouter automatiquement du contraste lorsqu'il voit la carte grise sans caractéristiques.)
J'ai recadré une partie de 1000x1000 pixels de la carte grise et l'ai convertie en niveaux de gris (8 bits par pixel).
Ce que nous avons maintenant devrait être un assez bon exemple de ce qui se passe lorsque vous étudiez une partie sans particularité d'une photo numérisée en noir et blanc , par exemple, un ciel clair. En principe, il ne devrait y avoir exactement rien à voir.
Cependant, avec un grossissement plus important, cela ressemble en fait à ceci:
Il n'y a pas de motif clairement visible, mais il n'a pas une couleur grise uniforme. Une partie est probablement due aux imperfections de la carte grise, mais je suppose que la majeure partie est simplement du bruit produit par le scanner (bruit thermique dans la cellule du capteur, amplificateur, convertisseur A / N, etc.). Ressemble à peu près au bruit gaussien; voici l'histogramme (en échelle logarithmique ):
Maintenant, si nous supposons que chaque pixel a sa teinte choisie dans cette distribution, combien d'entropie avons-nous? Mon script Python m'a dit que nous avons jusqu'à 3,3 bits d'entropie par pixel . Et ça fait beaucoup de bruit.
Si c'était vraiment le cas, cela impliquerait que peu importe l'algorithme de compression que nous utilisons, le bitmap 1000x1000 pixels serait compressé, dans le meilleur des cas, dans un fichier de 412500 octets. Et ce qui se passe dans la pratique: j'ai un fichier PNG de 432018 octets, assez proche.
Si nous généralisons un peu trop, il semble que peu importe les photos noir et blanc que je numérise avec ce scanner, j'obtiendrai la somme des éléments suivants:
- informations "utiles" (le cas échéant),
- bruit, env. 3 bits par pixel.
Maintenant, même si votre algorithme de compression comprime les informations utiles en << 1 bits par pixel, vous aurez toujours jusqu'à 3 bits par pixel de bruit incompressible. Et la version non compressée est de 8 bits par pixel. Le taux de compression sera donc de l'ordre de 1: 2, quoi que vous fassiez.
Un autre exemple, avec une tentative de trouver des conditions trop idéalisées:
- Un appareil photo reflex numérique moderne, utilisant le réglage de sensibilité le plus bas (le moins de bruit).
- Une photo floue d'une carte grise (même s'il y avait des informations visibles sur la carte grise, elle serait floue).
- Conversion du fichier RAW en une image en niveaux de gris 8 bits, sans ajouter de contraste. J'ai utilisé des paramètres typiques dans un convertisseur RAW commercial. Le convertisseur essaie de réduire le bruit par défaut. De plus, nous enregistrons le résultat final sous forme de fichier 8 bits - nous jetons, en substance, les bits de poids faible des lectures brutes du capteur!
Et quel a été le résultat final? Il semble beaucoup mieux que ce que j'ai obtenu du scanner; le bruit est moins prononcé et il n'y a exactement rien à voir. Néanmoins, le bruit gaussien est là:
Et l'entropie? 2,7 bits par pixel . La taille du fichier en pratique? 344923 octets pour 1M pixels. Dans le meilleur des cas, avec de la triche, nous avons poussé le taux de compression à 1: 3.
Bien sûr, tout cela n'a rien à voir avec la recherche TCS, mais je pense qu'il est bon de garder à l'esprit ce qui limite vraiment la compression des données numérisées du monde réel. Les progrès dans la conception d'algorithmes de compression plus sophistiqués et de la puissance brute du processeur ne vont pas aider; si vous voulez enregistrer tout le bruit sans perte, vous ne pouvez pas faire mieux que 1: 2.