Je souhaite compresser un flux binaire. Je sais qu'après chaque '1' il y a une plus grande probabilité de trouver un '0', et après chaque '0' il y a une plus grande probabilité de trouver un '1'. Comment dois-je l'encoder? Je pensais aux codes de Rice, mais je n'étais pas si loin ... Merci d'avance pour toute réponse.Codage entropique d'un flux binaire
Répondre
Avez-vous essayé un simple codage de huffman? Peut-être que cela n'économisera pas beaucoup, mais si l'un des codes '10' et '01' a des probabilités beaucoup plus élevées que '00' ou '11', vous pouvez le remapper à '0' et les autres à '10' , '110' et '111'.
Bien sûr, ce ne sera pas le meilleur choix car il divise votre flux en morceaux de 2 bits et optimise seulement un cas. Cependant, il peut être affiné en calculant/mesurant des probabilités pour un ensemble d'entrée plus grand, comme 4 ou 8 bits, f.e. Dans le cas 8 bits 10101010 et 01010101 seront utilisés plus souvent que 00000000 et 11111111.
Vous pourriez obtenir des résultats encore meilleurs avec le codage arithmétique ou une compression qui utilise vraiment un modèle basé sur les probabilités de bits.
Une autre approche simple consisterait à inverser tous les deux bits. Comme la probabilité que vous mentionnez aura tendance à beaucoup de parties de flux en alternance comme 0101010, cela vous donnera beaucoup de parties de flux comme 111111 qui peut généralement être mieux compressé par les algorithmes de compression habituels. Mais le succès de cette méthode dépend de la taille de l'écart de probabilité.
- 1. Codage binaire convivial pour l'homme
- 2. Objet (Sortie | Entrée) Protocole binaire de flux
- 3. Codage de paires valeur/clé dans l'URL d'un flux RSS
- 4. Je dois signer un flux binaire avec un certificat
- 5. Comment lire un flux MP3 binaire avec jQuery/Javascript?
- 6. Binaire stdin et stdout
- 7. Le code HTML permet-il le codage intégré des images par flux?
- 8. binaire octal binaire à virgule flottante
- 9. Java - Codage d'image en XML
- 10. getpos() codage
- 11. comment récupérer le flux binaire (forme originale) à partir de l'encodage de la base 64
- 12. Stockage d'images avec LINQ to SQL: Conversion d'un tableau d'octets ou d'un flux en binaire
- 13. Quelle est la manière la plus efficace d'implémenter ReadLine() sur un flux binaire?
- 14. iPhone. Etablissement d'un flux de données binaire avec un serveur HTTP
- 15. Pratique de codage: comment éviter le codage dur?
- 16. Créer son propre codage
- 17. Codage d'e-mail fiable
- 18. Codage de caractères confusion!
- 19. Description codage multiple
- 20. Utilisation d'un codage QString
- 21. Codage de table Hsqldb
- 22. Codage/Décodage question étrange
- 23. Codage de caractères SOAP
- 24. struts2 demande de codage
- 25. Directives de codage XAML
- 26. Codage pour téléphone portable
- 27. Aide au codage efficace
- 28. quel est le codage?
- 29. MySQL binaire contre non-binaire pour les ID de hachage
- 30. Sérialiser Struct en format binaire, condensé
Salut! J'ai essayé Huffmann mais, comme vous le remarquez, il ne donnera pas de résultats optimaux ... Cependant, merci pour le codage arithmétique de suggestion. On dirait que le bon choix, je vais essayer. Merci! – zakk
Le codage arithmétique est breveté, utilisez le codage de plage. –