AIDGE IN SPACE
Banc d'essai de compression d'image apprise pour l'embarqué
Chargement...
Recherche...
Aucune correspondance
Référence de l'espace de nommage aidge_in_space.entropy

Codage entropique : codeur arithmétique 32 bits (repris du notebook) et tables de fréquences. Plus de détails...

Classes

class  BitWriter
 Écriture bit à bit dans un tampon d'octets (bit de poids fort en premier). Plus de détails...
class  BitReader
 Lecture bit à bit d'un tampon d'octets ; renvoie des zéros au-delà de la fin. Plus de détails...
class  ArithmeticEncoder
 Codeur arithmétique entier sur STATE_BITS bits (méthode des bits en attente). Plus de détails...
class  ArithmeticDecoder
 Décodeur symétrique de ArithmeticEncoder. Plus de détails...
class  CdfTables
 Ensemble de tables de fréquences cumulées, prêtes pour le codeur arithmétique. Plus de détails...

Fonctions

 make_tables (pmfs, los, precision=PRECISION, tail_mass=1e-9)
 Convertit des lois discrètes en tables de fréquences entières.
 encode_symbols (values, table_idx, tables)
 Code une suite d'entiers, chacun avec sa table.
 decode_symbols (data, table_idx, tables)
 Décode un flux de encode_symbols().

Variables

int PRECISION = 16
 Précision des fréquences, en bits : chaque table somme à 2^PRECISION.
int BYPASS_BITS = 20
 Nombre de bits bruts écrits après un symbole d'échappement.
int STATE_BITS = 32
 Taille des registres du codeur arithmétique, en bits.
 FULL
 Bornes de l'intervalle du codeur : 2^STATE_BITS, sa moitié et son quart.
 HALF
 Bornes de l'intervalle du codeur : 2^STATE_BITS, sa moitié et son quart.
 QUARTER
 Bornes de l'intervalle du codeur : 2^STATE_BITS, sa moitié et son quart.
int MASK = FULL - 1
 Masque des STATE_BITS bits de poids faible.

Description détaillée

Codage entropique : codeur arithmétique 32 bits (repris du notebook) et tables de fréquences.

Chaque symbole est codé avec sa propre table (un canal pour un prior factorisé, un niveau d'échelle pour un prior gaussien). Les valeurs hors du support d'une table passent par un symbole d'échappement suivi de BYPASS_BITS bits bruts (codage zigzag), si bien que toute valeur entière de moins de 2^19 en valeur absolue reste codable.

Documentation des fonctions

◆ decode_symbols()

aidge_in_space.entropy.decode_symbols ( data,
table_idx,
tables )

Décode un flux de encode_symbols().

Paramètres
dataFlux binaire.
table_idxLes mêmes indices de table qu'à l'encodage.
tablesLes mêmes CdfTables qu'à l'encodage.
Renvoie
Tableau int64 aplati des valeurs décodées.

◆ encode_symbols()

aidge_in_space.entropy.encode_symbols ( values,
table_idx,
tables )

Code une suite d'entiers, chacun avec sa table.

Paramètres
valuesTableau d'entiers (aplati dans l'ordre de numpy).
table_idxIndice de table de chaque valeur, même nombre d'éléments.
tablesCdfTables.
Renvoie
Couple (flux binaire, nombre de valeurs échappées).
Exceptions
ValueErrorsi une valeur échappée dépasse BYPASS_BITS bits après codage zigzag.

◆ make_tables()

aidge_in_space.entropy.make_tables ( pmfs,
los,
precision = PRECISION,
tail_mass = 1e-9 )

Convertit des lois discrètes en tables de fréquences entières.

Les queues de probabilité inférieure à tail_mass sont coupées et renvoyées vers le symbole d'échappement ; chaque symbole conservé reçoit une fréquence d'au moins 1.

Paramètres
pmfsListe de lois : pmfs[i][j] = P(valeur = los[i] + j).
losPremière valeur du support de chaque loi.
precisionLes fréquences de chaque table somment à 2^precision.
tail_massMasse en dessous de laquelle une queue est coupée.
Renvoie
CdfTables.
Exceptions
ValueErrorsi une table a trop de symboles pour la précision demandée.