Codage arithmétique

Le codage arithmétique est un codage entropique utilisé en compression de données sans perte. Il permet une meilleure compression que le codage de Huffman, sauf lorsque tous les poids pour les feuilles/nœuds/racines de l'arbre de Huffman sont des puissances de 2, auquel cas les deux méthodes sont équivalentes.[réf. nécessaire]

Malgré cet avantage, il ne fut que peu utilisé car son implémentation était trop complexe[1]; des méthodes d'implémentation furent finalement trouvées alors que la compression par dictionnaire (bien meilleure que le codage de Huffman ou arithmétique[réf. nécessaire]) commençait à devenir populaire.

On notera cependant son utilisation dans la compression des images aux normes JPEG 2000 et JBIG2.

Principe

Le codage arithmétique (au même titre que le Codage de Huffman) est un code à longueur variable, c'est-à-dire qu'un symbole de taille fixe (en bits) sera codé par un nombre variable de bits, de préférence inférieur ou égal à sa taille originale. On ne modifie donc pas la densité de symboles mais leur codage afin de réduire l'espace qu'ils occupent.

Ce qui différencie le codage arithmétique des autres codages sources est qu'il code le message par morceaux (théoriquement il peut coder un message entier de taille quelconque mais dans la pratique on ne peut coder que des morceaux d'une quinzaine de symboles en moyenne[2]) et représente chacun de ces morceaux par un nombre (flottant) là où Huffman code chaque symbole par un code précis. Le problème qui en résulte pour le codage Huffman est qu'un caractère ayant une probabilité très forte d'apparition sera codé sur au moins un bit. Par exemple, si on cherche à coder un caractère représenté à 90 %, la taille optimale du code du caractère sera de 0,15 bit alors que Huffman codera ce symbole sur au moins 1 bit, soit 6 fois trop[3]. C'est cette lacune que le codage arithmétique comble grâce à un algorithme proche du codage par intervalle.

Propriétés

Compression

La compression demande un tableau statistique (se rapprochant au maximum des statistiques observables sur le fichier contenant symboles à compresser) qui comprend :

  • la totalité des symboles que l'on rencontre dans le message à compresser ;
  • les probabilités de rencontrer le symbole dans le message ;
  • l'intervalle découpé en intervalles proportionnel à la probabilité que le symbole apparaisse dans le message (ex: si a 50 % de chance d'apparaître, son intervalle sera de longueur 0,5).

Le but va maintenant être d'appliquer une suite d'opérations à un intervalle donné (couramment c'est l'intervalle qui est choisi) afin de modifier ses bornes à chaque ajout d'un symbole et de restreindre au maximum le nombre de possibilités du nombre de sortie.

Voici les opérations à effectuer lors de l'ajout d'un symbole :

  • on enregistre la différence entre la borne supérieure (BS) et la borne inférieure (BI). On notera cette valeur BB ;
  • la BS prend la valeur suivante : BI + BB * (BS_du_symbole_s) ;
  • la BI prend la valeur suivante : BI + BB * (BI_du_symbole_s).

Après l'ajout du premier symbole, l'intervalle aura les mêmes limites que l'intervalle du symbole ajouté, puis chaque ajout fera converger ses limites. Lorsqu'un nombre suffisant de symboles auront été stockés, l’algorithme renverra un nombre flottant se trouvant dans cet intervalle. Ce nombre représente la totalité du fichier d'entrée.

On remarque qu'une suite de symboles ayant une forte probabilité d'apparaitre fera converger l'intervalle bien plus lentement que si on a affaire à une suite de symbole apparaissant peu. Un nombre dans un intervalle ayant convergé lentement sera donc codé avec moins de chiffres significatifs qu'un nombre dans un intervalle extrêmement précis, d'où le gain.

Il faut aussi penser à ajouter un symbole qui servira uniquement à indiquer la fin du fichier, sans quoi l’algorithme de décompression risque de tourner indéfiniment, produisant le fichier suivi d'une suite pseudo-aléatoire de bits.

Décompression

Pour décompresser un fichier (représenté par un nombre ), il faut utiliser la même table qui a été utilisée pour la compression puis effectuer les étapes suivantes jusqu'à la fin du fichier :

  • observer dans l'intervalle de quel symbole se trouve le nombre, ajouter au fichier décompressé et garder en mémoire la probabilité de ainsi que sa BI ;
  • prend la valeur .

Une fois le marqueur de fin atteint, l'algorithme s'arrête et le fichier est considéré comme décompressé.

Exemple

Compression

On appliquera ici l’algorithme de compression arithmétique sur le texte « WIKI ». On obtient dès lors le tableau suivant :

Lettre Probabilité Intervalle
W 1/4 [0;0,25[
I 2/4 [0,25;0,75[
K 1/4 [0,75;1[

Par convention on initialise l'algorithme avec une borne inférieure valant 0 et une borne supérieure valant 1. Il ne reste plus qu'à appliquer la suite d'opérations vue précédemment à chaque ajout d'un caractère.

Caractère ajouté Borne inférieure Borne supérieure
0 1
W 0 0,25
I 0,0625 0,1875
K 0,15625 0,1875
I 0,1640625 0,1796875

Donc, tout nombre compris dans intervalle sera une version compressée de la chaîne de caractères « WIKI ». Le nombre 0,17 étant compris dans cet intervalle, il peut convenir pour représenter « WIKI » compressé. À l'inverse, 0,16 ou 0,1796875 n'étant pas dans l'intervalle, ils ne conviendront pas et entraineront des erreurs lors du décodage.

Décompression

Supposons que l'on reçoive le message compressé 0,17, voici comment il serait décodé :

(On utilise évidemment le même tableau que précédemment pour connaitre les intervalles de chaque lettre et leurs probabilités d'apparition).

Code compressé Intervalle Lettre correspondante Texte récupéré
0,17 [0;0,25[ W W
0,68 [0,25;0,75[ I WI
0,86 [0,75;1[ K WIK
0,44 [0,25;0,75[ I WIKI

On retrouve donc la bonne chaine de caractères auparavant compressée.

Faiblesses

Cette méthode de compression rencontre deux principaux défauts qui sont maintenant connus et corrigés :

  • le premier est le fait d'utiliser un tableau de statistiques fixe, entrainant les mêmes problèmes que pour le codage Huffman, c'est-à-dire que la compression d'un fichier avec des statistiques atypiques (des symboles devant être peu présents se retrouvent avec une forte probabilité d'apparition) sera plus volumineux après compression qu'avant. La solution la plus efficace est donc, là aussi, d'utiliser un tableau adaptatif dont toutes les fréquences débutent égales puis, à chaque rencontre d'un symbole, dont les statistiques sont mises à jour et les intervalles adaptés ;
  • le second problème majeur est qu'en terme informatique les nombres à virgule sont plus complexes à manipuler, et peuvent produire des erreurs d’arrondi (dû au nombre fini de chiffres après la virgule que peut supporter un ordinateur) qui pourront s'avérer fatales lors de la décompression. Des techniques existent pour pallier ce problème[4].

Articles connexes

Bibliographie

Références

  1. Mark Nelson (trad. Hervé Soulard), La Compression de données : textes, images et sons, Dunod, , 421 p. (ISBN 2-10-001681-4)
  2. « COMPRESSION - compression arithmétique » (consulté le )
  3. « La compression de données - Le codage Arithmétique » (consulté le )
  4. « Chapitre 1 : Le codage arithmétique » (consulté le )

Read other articles:

The Walking DeadMusim 3Poster promosiDibintangioleh Andrew Lincoln Sarah Wayne Callies Laurie Holden Norman Reedus Steven Yeun Lauren Cohan Chandler Riggs Danai Gurira Michael Rooker David Morrissey Melissa McBride Scott Wilson Negara asalAmerika SerikatJumlah episode16RilisSaluran asliAMCTanggal tayang14 Oktober 2012 (2012-10-14) –31 Maret 2013 (2013-3-31)Kronologi Musim← SebelumnyaMusim 2 Selanjutnya →Musim 4 Daftar episode The Walking Dead Musim ketiga dari T...

 

Generic top-level domain.appIntroducedJune 2015 (registered)May 2018 (public availability)TLD typeGeneric top-level domain (gTLD)StatusActiveRegistryGoogleIntended useApplication branding, etcRegistered domains641,273 (3 January 2023)[1]DocumentsICANN registry agreementDNSSECYesRegistry websitehttps://get.app/.app is a gTLD (generic top-level domain) in ICANN's New gTLD Program.[2] Google purchased the gTLD in an ICANN Auction of Last Resort in February 2015.[3][4&...

 

Not to be confused with Gachetá. Municipality and town in Cundinamarca, ColombiaGuachetáMunicipality and townCentral square Guachetá FlagSealLocation of the municipality and town inside Cundinamarca Department of ColombiaGuachetáLocation in ColombiaCoordinates: 5°23′8″N 73°41′8″W / 5.38556°N 73.68556°W / 5.38556; -73.68556Country ColombiaDepartment CundinamarcaProvinceUbaté ProvinceFounded12 March 1537Founded byGonzalo Jiménez de QuesadaGovernmen...

Restaurant in New York City The Musket RoomThe Musket Room in December 2023Restaurant informationRating (Michelin Guide)Street address265 Elizabeth StreetCityNew YorkStateNew YorkPostal/ZIP Code10012Coordinates40°43′26.1″N 73°59′37.8″W / 40.723917°N 73.993833°W / 40.723917; -73.993833 The Musket Room is a restaurant in New York City.[1] The restaurant originally served food inspired by the cuisine of New Zealand, but has since expanded its menu. His...

 

Voce principale: Football Club Igea Virtus Barcellona. Associazione Sportiva Nuova IgeaStagione 1978-1979Sport calcio Squadra Nuova Igea Allenatore Antonio Colomban poi Salvatore Parisi Presidente Leopoldo Moleti Serie C215º posto nel girone D. Maggiori presenzeCampionato: Cavalieri, Pelati (34) Miglior marcatoreCampionato: Molinari (14) 1977-1978 1979-1980 Si invita a seguire il modello di voce Questa pagina raccoglie le informazioni riguardanti l'Associazione Sportiva Nuova Igea nell...

 

ČakovecKotaGrad Čakovec Kota Čakovec BenderaJulukan: Grad ZrinskihKota ZrinskiKoordinat: 46°23′10.58″N 16°26′08.57″E / 46.3862722°N 16.4357139°E / 46.3862722; 16.4357139Negara KroasiaKabupaten MeđimurjePemerintahan • Wali KotaStjepan Kovač (SDP)Luas • Total72,8 km2 (28,1 sq mi)Ketinggian164 m (538 ft)Populasi (2011)[1] • Total27,104 • Kepadatan370/km2 (960/s...

1992 House elections in Texas 1990 United States House of Representatives elections in Texas ← 1988 November 6, 1990 1992 → All 27 Texas seats to the United States House of Representatives   Majority party Minority party   Party Democratic Republican Last election 19 8 Seats won 19 8 Seat change Popular vote 1,763,432 1,498,096 Percentage 53.8% 45.7% Swing 4.8% 6.4% Democratic   50–60%   60–70%   70–80% &#...

 

Kádár János人名顺序为先姓后名。本条目中的译名遵从此顺序。 卡达尔·亚诺什Kádár János匈牙利社会主义工人党第一书记任期1956年10月25日—1988年5月22日(31年210天)前任格罗·埃诺继任格罗斯·卡罗伊匈牙利人民共和国部长会议主席任期1956年11月4日—1958年1月28日(1年85天)前任纳吉·伊姆雷继任明尼赫·费伦茨任期1961年9月13日—1965年6月3日(3年263天)前任明尼赫·费伦茨继...

 

Halaman ini berisi artikel tentang kabinet pemerintahan di Indonesia. Untuk kegunaan lain, lihat Indonesia Maju. Kabinet Indonesia MajuKabinet Pemerintahan Indonesia ke-41Dibentuk23 Oktober 2019Struktur pemerintahanPresidenJoko WidodoWakil PresidenMa'ruf AminPejabat setingkat menteri11Jumlah menteri34Jumlah wakil menteri15Total jumlah menteri46Partai anggotaKoalisi:  PDI Perjuangan  Golkar  Gerindra  NasDem  PKB  PPP  PSI  PAN (sejak 2022)  PBB (se...

A Universal Atomic 4, installed in a C&C 29 Mark 1 sailboat. The Universal Atomic 4 is a four-cylinder, gasoline engine produced by the Universal Motor Company between 1949[1] and 1984 for use as auxiliary power on sailboats.[2] Both 18 horsepower (13 kW) and 30 horsepower (22 kW) versions of the engine were produced.[3] Over 40,000 of the engines were produced during that time, with an estimated 20,000 still in use today. The Universal Atomic 4 was very ...

 

Badlands in Caledon, Ontario, Canada The badlands, from a road cut highlighting the different soil colours and terrain. The Cheltenham Badlands are in Caledon, Ontario, on the southeast side of Olde Base Line Road, between Creditview and Chinguacousy Roads. The site occupies an area of approximately 0.4 square kilometers and features exposed and highly eroded Queenston shale.[1] The Cheltenham Badlands are a significant educational site due to the readily visible geologic processes an...

 

Historic public high school in Grosse Pointe, Michigan Grosse Pointe South High SchoolGrosse Pointe South High School in September 2019Address11 Grosse Pointe BoulevardGrosse Pointe Farms, Michigan 48236-3711United StatesCoordinates42°23′27″N 82°54′10″W / 42.390754°N 82.902652°W / 42.390754; -82.902652InformationOther namesSouth, Grosse Pointe South, GPS, GPSHSFormer nameGrosse Pointe High School (1928-1968)TypeComprehensive public high schoolOpened1928;...

Одесский троллейбус Описание Страна  Украина Расположение Одесса Дата открытия 7 ноября 1945 Оператор КП «ОГЭТ» Стоимость проезда 8 гривен - наличный расчёт 7 гривен - безналичный расчёт С 1 ноября 2021 года Сайт oget.od.ua Маршрутная сеть Число маршрутов 6 Длина сети 150.1 км[1]...

 

Maritime patrol and anti-submarine aircraft family P-3 Orion A P-3C of the Japan Maritime Self-Defense Force Role Maritime patrol aircraftType of aircraft National origin United States Manufacturer Lockheed Lockheed Martin Kawasaki Aerospace Company First flight November 1959[1] Introduction August 1962[1] Status Active Primary users United States NavyRepublic of China Navy Japan Maritime Self-Defense Force Republic of Korea Navy Produced 1961–1990[2] Number bui...

 

Concattedrale di San Nicola[1]Stato Italia RegioneCalabria LocalitàPalmi[1] IndirizzoVia Nicola Pizi 36-44[2] Coordinate38°21′33.48″N 15°50′56.33″E38°21′33.48″N, 15°50′56.33″E Religionecattolica di rito romano TitolareSan Nicola di Bari[1]Maria Santissima della Sacra Lettera[3] Diocesi Oppido Mamertina-Palmi ArchitettoMario Pandelli[1] Stile architettonicoNeoromanico Inizio costruzioneXIV secolo (prima chiesa di cui si ...

RoumainRomână, Românește Pays Roumanie, Moldavie, Serbie, Ukraine, Bulgarie, Hongrie Région Europe du Sud-Est Nombre de locuteurs 24 millions (langue maternelle), 4 millions (langue seconde)[1] Nom des locuteurs roumanophones Typologie SVO + OSV, flexionnelle, accusative, syllabique, à accent d'intensité Classification par famille - langues indo-européennes - langues italiques - langues latino-falisques - langues romanes - langues romanes orientales - roumain Statut officie...

 

XXXI屆夏季奧林匹克運動會自由車比賽 Venues 小輪車 奧林匹克小輪車中心 登山車 奧林匹克越野車中心 公路賽 科帕卡瓦納砲台 場地賽 里約奧林匹克自行車館 日期 8月6日至20日 « 2012 2020 » 2016年夏季奧林匹克運動會自行车比赛 公路自行车 公路賽   男子   女子 個人計時賽 男子 女子 场地自行车 個人爭先賽 男子 女子 團體爭先賽 男子 女子 競輪賽 男子 女子 團體...

 

1999 Bath and North East Somerset Council election ← 1995 6 May 1999 (1999-05-06) 2003 → All 65 seats to Bath and North East Somerset Council33 seats needed for a majority   First party Second party   LD Lab Party Liberal Democrats Labour Last election 27 seats, 36.2% 22 seats, 33.2% Seats won 30 17 Seat change 3 5 Popular vote 34,564 23,394 Percentage 40.3% 27.3% Swing 4.1% 5.9%   Third party Fourth party   Con InL...

Rotorua Te Rotorua-nui-a-Kahumatamomoe (Maori)Negara Selandia BaruRegionBay of PlentyOtoritas teritoriDistrik RotoruaDihunipra-EropaDidirikan1883Status borough1922Status kota1962Status kota dicabut1989ElektoratRotoruaPemerintahan • MPTodd McClay (Nasional) • wali kotaKevin WintersLuas • Teritori2.614,9 km2 (10,096 sq mi)Ketinggian280 m (920 ft)Populasi (June 2018)[1] • Teritori72,500 • Kepad...

 

2020年夏季奥林匹克运动会罗马尼亚代表團罗马尼亚国旗IOC編碼ROUNOC羅馬尼亞奧林匹克及體育委員會網站www.cosr.ro(罗马尼亚文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員104參賽項目17个大项旗手开幕式:罗伯特·格林特(游泳)和西蒙娜·拉迪什(赛艇)[1]闭幕式:Cătălin Chirilă(皮划艇)[2...