Question

Je suis confus sur le point de codage arithmétique adaptatif.

Je comprends que le codage arithmétique statique implique d'utiliser des probabilités prédéfinies de symboles qui restent statiques pendant tout le processus.Je comprends également que le codage arithmétique adaptatif implique de modifier toutes les probabilités après chaque symbole rencontrée.

Cependant, quel est le point de changer la probabilité après chaque symbole?Pourquoi ne vouliez-vous pas simplement passer à tout un fichier entier et déterminer les probabilités, puis faire le codage arithmétique comme deuxième pass?

En outre, je ne comprends pas comment changer la probabilité de symboles a une incidence sur la compression?Si nous connaissons les probabilités vraies des symboles dans le fichier, nous compressons, alors rendra le fichier plus petit?

Était-ce utile?

La solution

Tout d'abord, envisagez "de passer par un fichier entier". Il y a quelques hypothèses qui valent la peine d'être réfléchie ici.

Les fichiers peuvent être très gros et les traverser deux fois peut être coûteux. C'est une raison pour laquelle la plupart des normes de compression du monde réel sont basées sur des blocs ou des fenêtres.

Il existe des situations où vous n'avez pas "le fichier entier" pour commencer, comme un canal de communication. TLS (avant 1,3, au moins) prend en charge la compression, par exemple.

Les fichiers ne sont pas toujours homogènes. Archives (par exemple goudron ) est un cas en points. Un modèle statistique approprié pour une partie d'un fichier peut ne pas être approprié pour une autre partie. Le codage adaptatif s'adapte également à cela.

sur votre question finale, si l'encodeur et le décodeur connaissaient les probabilités réelles des symboles dans le fichier que nous compressons, cela n'aurait pas besoin d'être transmis. Et, en effet, nous faisons parfois cela dans le monde réel. La norme JPEG, par exemple, spécifie les tables de codage par défaut pour ces moments où ils sont appropriés et permettent à un codeur d'alimenter leur propre quand ils ne le sont pas.

transmettre une table de codage statique efficacement (c'est-à-dire la compression) est un problème non-trivial, en particulier pour un grand alphabet de code. Pour un schéma bien conçu, le coût de la transmission de la table devrait être égal au "coût d'apprentissage" d'utiliser un code adaptatif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top