Codage Source PDF
Codage Source PDF
Codage Source PDF
Télécommunications
Codage de source
R R R R
R B R B
R B V B
R J J J
Une méthode plus efficace tiendra compte des probabilités de chaque couleur en
opérant l’affectation de mots de taille différente à chaque couleur
R = « 1 » B = « 01 » J = « 001 » V = « 000 »
ce qui conduit à coder l’image sur 28 bits.
11111 01 1 01 1 01 000 01 1 001 001 001
mais bien sur on ne peut pas revenir à l’image initiale avec ce codage.
Codage et quantification :
Le codage consiste souvent (cas des codages avec perte) en deux opérations
successives.
La première opération est une opération de quantification qui consiste à
discrétiser l’amplitude des données (prises isolément ou en bloc, après
transformation prédiction ou non) sur un ensemble fini de valeurs {yi} i=1...L.
La deuxième opération qui est le codage proprement dit (c’est-à-dire la traduction
sous forme binaire d’un message de données) consiste à traduire en suite binaire
l’indice i du représentant yi choisi. Lorsque L = 2b on peut transmettre le résultat de la
quantification sur b bits.
Les techniques de codage sans pertes s’utilisent sur des données pouvant
prendre un nombre fini de valeurs possibles , en particulier sur des données
préalablement quantifiées. Ainsi le codage entropique, présenté dans la première
partie de ce cours sera généralement appliqué en pratique en aval d’un codage avec
perte (et quantification).
1.1 Introduction
Dans certains systèmes de communication, un débit fixe n’est pas toujours le plus
approprié car la source d’information présente une activité très variable (silences
dans un signal de parole, blancs dans un fac-simile). Un codage à débit variable qui
peut ajuster son débit pour s’adapter à l’activité locale (ou momentanée) de la source
est alors idéal mais généralement non directement utilisable sur un support de
transmission classique. Pour utiliser un tel support à débit fixe ,le débit moyen à long
terme doit être constant et des buffers sont nécessaires pour adapter dans les deux
sens le débit variable à court terme et le débit fixe à long terme.
Ces buffers ajoutent de la complexité au système et doivent résoudre les
problèmes d’underflow et overflow (pas assez ou trop de données pour le lien à débit
fixe).
Les systèmes de stockage sont intrinsèquement à taux variable de même que
certains systèmes de communication (par paquets).
codeur décodeur
X B(X) X̂
Exemples :
- Suite d’échantillons de chrominance et luminance des pixels d’une image
- texte (lettres de l’alphabet (26) et signes de ponctuation)
La sortie du codeur est représentée par la séquence binaire B(X)=(b1,b2,…,bk)
dont la longueur k est variable (en fonction des éléments de X et pas seulement en
fonction de n)
Le but du codage est de garder un nombre de bits transmis aussi faible que
possible c’est à dire que l’on cherche à minimiser la longueur moyenne du code :
−
l = E (l ( X )) = ∑ p (a )l (a )
a∈ A
Par construction de l’arbre , aucun mot de code ne peut être le préfixe d’un autre
mot .
Un codage est l’opération d’assignation des différents mots de code aux différents
symboles de source ( éléments de A)
∑2
k =1
−l k
≤1
Démonstration ⇒ :
Étant donnée une séquence d’entrée de K symboles X=(x1,x2,…,xK) de longueur
totale L = l(X) = l(x1)+l(x2)+…+l(xK),
Si on note N(L) le nombre total de séquences X de taille K qui sont codées par
une séquence binaire de longueur L
Si lmax représente la longueur maximale des mots de code : lmax = max (lk ;
k=1…M)
On a L<= Klmax = Lmax
Si le code est décodable de façon unique alors les N(L) séquences d’entrée
doivent générer des séquences binaires distinctes de longueur L
Puisqu’il y a 2L séquences binaires distinctes de longueur L nous devons avoir :
N(L)<=2L
M
− lk − l(a)
( ∑ 2 ) K
= ( ∑ 2 ) K
k =1 a∈ A
K
− ∑ l(ai )
= ∑ ∑ ... ∑ 2 i =1
a1∈ A a∈ A2 a K ∈ A
L
− L
max
= ∑ N (L )2
L =1
≤ L max
donc
M
∑2
k =1
−l k
≤ L1max
/K
= K 1 / K l max
1/ K
et puisque la borne est valable quelque soit K, on peut prendre la limite quand K
tend vers l’∞
∑2
k =1
−l k
≤1
Démonstration ⇐ :
On peut supposer sans perte de généralité que les longueurs des mots de code
sont ordonnées :
l1 ≤ l2 ≤ …≤ lM
Un mot de code de longueur l correspond à un trajet de l branches dans l’arbre
binaire commençant au noeud racine et se terminant à un nœud de profondeur l
Étant donné un ensemble de longueur lk satisfaisant l’inégalité de Kraft :
Considérons comme premier mot de code c1 une séquence binaire correspondant
à un trajet de l1 branches
Comme aucun mot de code ne peut avoir ce mot de code comme préfixe , on
coupe la branche après le nœud terminal correspondant
Prenons ensuite un trajet disponible de profondeur l2 .(Il y a 2l2-2l2-l1 possibilités) et
coupons la branche après le nœud correspondant.
Il reste pour le troisième mot de code 2l3 - 2 l3-l2 – 2l3-l1 possibilités
Pour le m ième mot de code on choisit un trajet parmi les n(m) possibilités
m −1 m −1
n(m) = 2 lm − ∑ 2 lm −lk = 2 lm (1 − ∑ 2 −lk )
k =1 k =1
si m≤M
M M M
n(m) = 2 lm (1 − ∑ 2 −lk + ∑ 2 −lk ) ≥ 2 lm ∑ 2 −lk d’après l’inégalité de Kraft
k =1 k =m k =m
Cette inégalité fournit la base théorique pour calculer des bornes inférieure et
supérieure à la longueur moyenne d’un code uniquement décodable
Proposition :
Étant données deux distributions de probabilité p et q pour un alphabet commun
A (p(i) = proba (X = ai)) alors on définit la distance de Kullback - Leibler ou l’entropie
relative entre les distributions p et q par :
M
p (i )
D( p // q ) = ∑ p (i ) log 2
i =1 q (i )
On montre que cette quantité est positive ou nulle et s’interprète comme une
mesure de distance entre les deux distributions.
Démonstration :
Le code uniquement décodable vérifie l’inégalité de Kraft.
M
∑ k =1
2− ℓk < 1
ℓ < H ( X ) +1
Démonstration :
H ( X ) ≤ ℓ < H ( X ) +1
par ailleurs
M M
∑k =1
2− ℓ k ≤ ∑ 2log 2 pk = 1
k =1
(bornes pour la longueur moyenne des mots d’un code) qui sont à l’origine du
terme «codage entropique » pour le codage sans perte uniquement décodable.
On montre que cet algorithme est optimal. Pour aucun autre code uniquement
décodable la longueur moyenne des mots de code n’est inférieure à celle obtenue
pour cet algorithme .
Exemple :
Symboles a1 a2 a3 a4 a5 a6
Probabilités 0,35 0,25 0,2 0,11 0,05 0,04
H(X) = 2,25
ℓ = 2, 29 a1
a2
0.6
a3
0.4 a4
a5
0.2
0.09 a6
Cet algorithme est utilisé dans la norme MPEG de codage audio et vidéo (pour
coder les coefficients de la DCT (Discrete Cosinus Transform) ).
aN est une notation pour représenter un N-uplet de valeurs prises dans l’alphabet
A.
Il y a MN possibilités pour la valeur de aN.
Les probabilités sont généralement difficiles à établir sauf dans le cas où les X(i)
sont indépendantes (source i.i.d.), auquel cas :
a1
a2 et ℓ =1
a2a2
a2a1
a1a2
a1a1
ℓ 2 = 0, 49 + 0, 21.2 + 0,3.3
ℓ = 0, 905
1.5.1 Notations
Alphabet de la source : A = {a1a2 ...aM }
Séquence : S = {s1s2 ...sN } .
On suppose la source i.i.d de distribution de probabilité : pm = p ( sn = am ) pour
m=1 :M.
m −1
On définit la distribution cumulée : c m = ∑ p i pour m=1 :M+1 avec c1 = 0 et
i =1
cM +1 = 1 .
1.5.4 Exemple
La source émet les symboles B (blanc) et N (noir) avec les probabilités
respectives 3/4 et 1/4. On considère la séquence : BBNBN
La figure suivante représente la progression des intervalles φ k (S ) = α k , l k lors du
codage.
9/16
1 NN NNN
NNB
NBN BBNNN
N BBNN
NB NBB BBNNB 135/256
BNN
3/4 BN l5=27/1024
BNB BBNBN
B α5=513/1024
BBN l3=9/64 BBNB
BB BBNBB
BBB
0
α3=27/64
Figure : Progression de l’intervalle φk ( S ) = αk , lk pour coder une séquence de 5 symboles dans
l’alphabet A={N,B} de probabilité p1=3/4, p2=1/4
Considérons une entête de E bits. Remarquons que E peut être limité à ε < 1 si on
transmet plusieurs séquences de mêmes caractéristiques.
On obtient pour une séquence de N symboles : NB = log 2 (1/ p ( S )) + E
N
Le nombre de bits par symbole vaut donc : l = NB / N = −∑ log 2 ( p (s k )) + E / N .
k =1
Nous signalerons dans chaque cas les applications des différentes techniques
pour les signaux de parole ou audio.
Remarque :
Dans le cas d’un codage entropique utilisé après une quantification scalaire, on peut
associer des chaînes binaires (mot de code) de tailles différentes aux L valeurs yi en
fonction de leur probabilité. On obtiendra alors une longueur moyenne des mots
inférieure ou égale à b.
Une cellule qui n’est pas bornée est appelée cellule de saturation ou surcharge
(overload).
Une cellule bornée est une cellule de granulation.
Le quantificateur est dit régulier si lorsque deux valeurs d’entrée a et b sont
quantifiées par la même valeur y n’importe quelle valeur comprise entre a et b est
aussi quantifiée par y.
Chaque cellule Ri est de la forme (xi-1, xi) avec yi ∈ (xi-1, xi).
Le quantificateur peut être représenté suivant le schéma :
x1 x2 xL-1
yY1
1 y2 yL
Quand une valeur d’entrée est quantifiée Q(x) = y, on introduit une erreur, l’erreur de
quantification e = x - Q(x). Cette grandeur est bien sûr aléatoire puisque x l’est.
Pour mesurer la performance du quantificateur on évalue généralement la distorsion
moyenne comme l’erreur quadratique moyenne (EQM) (MSE en anglais) apportée
par le quantificateur.
(
D = E ( X − Q( X ))
2
)
L
= ∑ ∫ (x − y )
2
i f x ( x)dx
i =1 Ri
L xi
D=∑ ∫ (x − y )
2
i f x ( x)dx
i =1 xi −1
L’utilisation de ce critère est simple et motivée par son sens immédiat de puissance
moyenne d’un signal d’erreur.
Pourtant on sait par ailleurs que ce critère ne correspond pas à une mesure
subjective de qualité (dans le domaine audio en particulier). Un critère relatif de type
E( X 2 )
Rsb = 10 log sera plus adéquat (mais non idéal car la qualité perçue
D
auditivement dépend aussi du spectre).
Si en plus le signal peut être considéré comme ergodique, on peut évaluer D par
1 N
lim ∑ ( x n − Q( x n ) )
2
N →∞ N
n =1
On a xL - x0 = L ∆
∫ (x − y )
L xi x0
Les deux derniers termes représentent le bruit de saturation (le premier terme est le
bruit de granulation).
2.3.1 Facteur de charge
On définit le facteur de charge Γ du quantificateur par :
A x − x0
Γ= ou bien si l’intervalle [x0 xL] n’est pas symétrique : Γ = L ou
σX σX σX
L
∆ ∆
D gran = ∑ ∫ (x − y )
i =1
i
2
f X ( x)dx avec Ri = y i − , yi +
2 2
Ri
∫
Ri
q 2 f X ( x)dx = ∫
Ri
f X ( x)dx ∫ q 2 f X / R i ( x)dx
∞
= p( x ∈ Ri ) ∫ q 2 f X / R i ( x)dx
∞
∆ ∆
f X / Ri ( x)dx = proba x < X < x + dx / y i − < X < y i +
2 2
∆ ∆
= proba x − y i < Q < x − y i + dx / y i − < X < y i +
2 2
= f Q / Ri (q )dq
donc
∆
L 2
D gran = ∑ p( x ∈ Ri ) ∫ q 2 f Q / Ri (q)dq
i =1 ∆
−
2
1
On fait généralement la supposition que f Q / Ri (q ) = . C’est-à-dire que le bruit de
∆
∆ ∆
granulation suit une loi uniforme sur − , (quelque soit l’intervalle Ri). Ceci n’est
2 2
vraiment justifié que si X suit une loi uniforme ou si ∆ est très faible (hypothèse de
haute résolution).
1 2
∆2
D gran =
∆ ∫ ∆
q 2 dq =
12
−
2
Le rapport signal sur bruit décroît lorsque le facteur de charge croît (en négligeant la
distorsion de saturation) : (pour Γ = 4 20 log Γ = 12 dB)
A
Remarque 1 :Si le signal x suit une loi uniforme : σx = ⇒Γ= 3
3
RSB = 6,02 b
La quantification uniforme est alors parfaitement adaptée.
Remarque 2 :Si le facteur de charge n’est pas suffisamment grand, on ne peut plus
négliger le bruit de saturation.
1/Γ
On peut aussi voir cette courbe comme l’évolution du RSB avec la puissance
d’entrée du signal σx pour un quantificateur donné (avec yi fixés).
On voit alors que le quantificateur fonctionne de manière optimum pour une
puissance donnée du signal d’entrée et qu’il se comporte moins bien lorsqu’on
s’écarte de cette valeur. En d’autres termes, les performances d’un quantificateur
sont très sensibles au niveau du signal d’entrée.
Des signaux tels que la parole ou la musique sont non stationnaires et leur
puissance à court terme varie fortement dans le temps (la dynamique de σ est
d’environ 30 dB pour la parole et 60 dB ou plus pour la musique). Le nombre de bits
On suppose que l’on cherche à quantifier de façon optimale sur L niveaux une
réalisation d’un processus aléatoire stationnaire de loi fX (x) connue (ou estimable).
Intuitivement, la longueur des intervalles [xi-1, xi] sera d’autant plus petite que fX (x)
sera importante sur ces intervalles.
i =1 x∈Ri i =1 xi −1
Pour définir un quantificateur il faut trouver la partition {R1 ...RL} et les représentants
(y1...yL) qui minimisent D.
Ce problème n’admet pas de solution simple. Il n’existe que deux conditions
nécessaires d’optimalité. Si on connaît les représentants, on peut trouver la meilleure
partition et si on se donne la partition on peut déduire les représentants.
1) Etant donné le dictionnaire {y1...yL}, on cherche les xi (c’est à dire la partition {Ri })
tels que
∂D
=0
∂x i
∂ xi xi +1
⇔
x∫
( x − y ) 2
f ( x ) dx + ∫x ( x − y i +1 ) f ( x ) dx =0
∂x i
i X X
i −1 i
⇔ ( x i − y i ) f X ( x i ) − ( x i − y i + 1 ) f X ( xi ) = 0
2 2
⇔ x i − y i = −( x i − y i + 1 )
yi + y i + 1
⇔ xi = la frontière est en milieu des représentants.
2
⇔ ∫ (x − y ) f X ( x)dx = 0
2
∂y i
i
xi −1
xi
⇔ ∫
xi −1
2( x − yi ) f X ( x)dx = 0
xi
∫ xf X ( x)dx
yi =
xi −1
⇔ xi
∫
xi −1
f X ( x)dx
xi +∞
or ∫
xi −1
xf X ( x)dx = ∫
x∈ R i
f X ( x)dx ∫ xf X / R i ( x)dx
−∞
+∞
⇔ yi = ∫
−∞
xf X / R i ( x)dx
Ri = { xn / Q(xn) = yi }
Exemple :
Soit x un échantillon d’un signal dont la densité de probabilité est la somme
pondérée de deux densités gaussiennes d’écart type unité et de moyennes
respectives –3 et 4. La densité de probabilité de X est représentée sur la figure
suivante ainsi que le quantificateur (obtenu par l’algorithme de Lloyd Max).
D= ∑ ∫
i =1
( x − y i ) 2 f X ( x)dx peut être approximée en considérant
xi −1
Notons α i3 = f X ( y i )∆3i
L L +∞
∑ αi = ∑ ( f X ( yi )) ∆ i ≈ ∫ f X ( x)1 / 3 dx = cste
1/ 3
comme
i =1 i =1 −∞
On cherche à minimiser D = ∑
i
α i3 sous la contrainte ∑ i
α i = cste
∂
→ (∑ α 3
)
− λ ∑ α i = 0 ⇔ 3α i2 = λ ⇔ α i = α
αi
i
Ce qui implique
f X ( y1 )∆31 = ....... = f X ( y 2 )∆3L
Ce qui signifie que l’intervalle ∆ sera d’autant plus petit que la probabilité d’avoir
une donnée dans cet intervalle sera grande. (∆i = cste pour une loi uniforme) .
D’autre part tous les intervalles auront la même contribution à la distorsion qui s’écrit
Lα 3 +∞
D= avec α = ∫ ( f X (x) ) dx
1 1/ 3
12 L −∞
D= 1 2
12L
[∫ ( f (x)) dx]
X
1/ 3 3
démonstration non rigoureuse
1 / 2σ X2
f X ( x) = e−x
2
2πσ X2
3 3
( )
x2 x2
−
2Π σ X
1/ 2
− dx
( )
dx 2
1 1 6σ 1 3 1 3 σ
2
∫ ∫
D =
2
e = e 2
( )
X X
(2 Π σ ) 2Π σ 2π 3σ
2 1 2 2 1/6
12 L 2 12 L
X
6
X X
D=
1
12 L2
[ 3(2πσ ) ] 2 1/ 3
X
3
D = 3 Π σ X2 2
− 2b
2
2.5.1 Principe
Pour le quantificateur uniforme
∆2
On a vu que D gran = avec ∆ cst.
12
σ2
⇒ RSB =10log 12 dépend de σ
∆2
G Q unif G-1
G ( xi ) − G ( xi −1 ) ∆
G ' ( yi ) ≅ =
xi − xi −1 ∆i
∆ 1 α
→ G' ( yi ) = =
cste yi y i
⇒ G ( x) = α log x
Ax x 1
G ( x) = sgn( x) pour ≤
1 + ln A x max A
x
1 + ln A
x max 1 x
G ( x) = x max pour < ≤1
1 + ln A A x max
Cette transformation est approximée par une courbe à 8 segments et le signal est
préalablement quantifié sur 12 bits (-2048 2047) .
1 bit de signe
3 bits pour le segment
4bits pour la valeur dans le segment
Supposons que nous ayons un ensemble de k v.a. X1, X2, …, Xk de moyenne nulle
et de variance σ i2 = E ( X i2 ) i = 1,..., k
Si on considère la densité de probabilité des Xi connue, on peut concevoir un
quantificateur optimal pour chaque Xi pour n’importe quel nombre de niveaux de
quantification Li. Il est souvent souhaitable d’avoir Li = 2bi pour pouvoir coder Xi sur bi
= log2Li bits.
Il suffit en fait d’avoir :
ΠLi = 2b pour coder sur b bits les k v.a. conjointement.
Supposons que l’on note W i (bi) la distorsion (au sens de l’erreur de quantification
quadratique moyenne) obtenue en quantifiant de façon optimale Xi sur bi bits.
La distorsion totale s’écrit donc :
k
D = ∑ Wi (bi )
i =1
Le problème d’allocation peut se formuler ainsi :
Trouver les bi i = 1, 2, … k qui minimisent
k
D(b) = ∑ Wi (bi ) b = (b1 , b2 ,..., bk )
i =1
k
sous la contrainte : ∑
i =1
bi ≤ B (B : nombre de bits disponibles)
Dans ce cas Wi (bi ) = hiσ i2 2 −2bi avec hi une constante qui dépend de la densité de
Xi
probabilité fi(x) de la variable normalisée
σi
3
1 +∞
∫−∞ ( f i ( x) )3 dx
1
hi =
12
3Π
On rappelle que pour une loi gaussienne hg =
2
Remarque : La formule Wi (bi ) = hiσ i2 2 −2bi n’est à priori pas correcte pour bi faible
(1 bit ou 2 bits) mais se révèle satisfaisante pour des valeurs plus
élevées (4 bits 16 bits).
Développement :
hiσ i2 (− 2 log 2 )2 −2bi + λ = 0
σ i2
bi =
1
( )
log 2 2 2 B
1/ k hi
2 (Πhi )1/ k ρ2
1 h 1 σ2
L’équation bi = b + log 2 i + log 2 i2 montre qu’il faut allouer plus de bits aux
2 H 2 ρ
composantes de plus grande puissance (variance).
Cet algorithme n’est pas optimal mais il alloue les bits par incrément (1 bit à chaque
itération) d’une façon très satisfaisante (il est utilisé dans le codeur MPEG).
L’algorithme du Greedy est ainsi nommé car il agit à court terme, cherchant à obtenir
une satisfaction (la réduction de la distorsion) immédiate sans considérations pour
l’effet à long terme (distorsion finale globale) de ce choix.
On note :
bi(m) le nombre total de bits alloués au ième quantificateur après l’itération
m (quand m bits ont été partagés entre les Xi).
Wi(m) : la « demande » associée au ième quantificateur (la distorsion pour
ce quantificateur après l’itération m).
étape 0 : bi(0) = 0 ∀i
m= 0 Wi(0) = E(Xi2)
3.2.1 Principe.
Supposons que l’on ait un bloc d’échantillons successifs (vecteur) d’un processus
aléatoire stationnaire à coder avec un nombre fixé de bits.
Appelons X ce vecteur aléatoire X = (X1, X2, …, Xk)T
Ces échantillons qui d’après l’hypothèse de stationnarité ont la même variance
peuvent présenter une corrélation importante. Cette corrélation entraîne une certaine
redondance qui est conservée dans les échantillons quantifiés.
L’idée du codage par transformée est qu’en opérant une transformation linéaire sur X
on peut obtenir un nouveau vecteur Y dont les composantes sont moins corrélées
que celles de X et que l’information peut y être plus compacte, c’est-à-dire
concentrée sur quelques composantes, au lieu d’être uniformément répartie sur
toutes les composantes. On espère alors quantifier ces composantes de façon plus
efficace que pour X.
Y1 → [Q1 ] → Yˆ1 Xˆ 1
Y2 → [Q2 ]→
X1
X X2
⋮ → (T) → Y ⋮ Yˆ Yˆ2
⋮ → (T )
−1 → Xˆ Xˆ 2
⋮
Xk Yk → [ Qk ]→ Yˆk Xˆ k
Il y a aussi une raison « subjective » pour utiliser une transformée qui est de se
référer aux outils perceptifs humains qui interviennent pour la vue ou d’audition.
L’oreille en particulier, opère au niveau de la membrane basilaire (dans l’oreille
interne) une transformation du signal temporel acoustique en influx nerveux répartis
suivant une échelle fréquentielle sur les fibres nerveuses du nerf auditif. Ces fibres
se comportent, en première approximation et partiellement, comme un banc de filtres
dont les fréquences centrales sont disposées sur une échelle pseudo-logarithmique.
(
= E ( X − Xˆ ) T ( X − Xˆ ) )
Notons que X̂ est obtenu par T −1Yˆ et que l’erreur de reconstruction X − Xˆ dépend à
la fois de l’erreur de quantification Y − Yˆ et de T −1 qui risque d’accentuer les erreurs
(si le déterminant de T −1 est supérieur à 1).
On impose donc à la transformation T d’être orthogonale c’est-à-dire telle que
T T = T −1 pour que la norme d’un vecteur soit préservée par la transformation.
3.2.2.1 Propriétés pour les transformations orthogonales
a) E ( X T X ) = E (Y T TT T Y ) = E (Y T Y ) norme conservée
( ) (
b) E ( X − Xˆ ) T ( X − Xˆ ) = E (Y − Yˆ ) T (Y − Yˆ ) ) distorsion conservée
distorsion sur Yi
⇒ σ Yi2 = E (Yi 2 ) = ViT R X Vi
On trouve que les Vi (colonnes de T) doivent être les vecteurs propres de la matrice
de covariance RX.
On a alors :
Ry=TRXTT=diag( λi )
La transformée TKL optimale est donc formée de lignes qui sont les vecteurs propres
(transposés) de la matrice de covariance du signal X.
Pour trouver ensuite la meilleure allocation de bits dans le domaine transformé on est
k
ramené au problème de minimisation de : ∑
i =1
hi λi 2 − 2bi qui a comme solution :
B 1 h 1 λi
bi = + log 2 i + log 2
k 2 H 2 Π λi ( )
i
1/ k
2B
−
avec la distorsion : DTKL = kH (Π λi )1 / k 2 k
On pourra, pour avoir une solution entière et ne pas faire l’hypothèse haute
résolution, utiliser l’algorithme du Greedy en partant des conditions initiales W i = λi.
∑ λi
σ 2
k
G KL = X
=
( Π λi ) 1 / k ( Π λi ) 1 / k
Le gain est donc le rapport entre la moyenne arithmétique et la moyenne
géométrique des valeurs propres de la matrice de covariance.
Le gain est d’autant plus important que les valeurs propres sont dispersées
λ max
grand
λ min
ce qui est lié à des fortes corrélations dans le vecteur de départ X.
y0(m) ↑ 32 F0(z)
H0(z) ↓ 32 Allocation
optimale des
xn y1(m)
bits ↑ 32 F1(z)
H1(z) ↓ 32 +
C
y31(m) ↑ 32 F31(z)
H31(z) ↓ 32
codeur A décodeur D
Bloc B :
On effectue une TF du signal
On tient compte du seuil d’audition des différentes fréquences pour
éventuellement supprimer des composantes non audibles (50 Hz à 30 dB, 10
kHz à 15 dB…)
On calcule l’effet de masquage provoqué par les composantes de forte
amplitude. L’effet de masque est l’élévation du seuil d’audition en présence
d’un son (masquant) pour des fréquences voisines de celle de ce son.
On supprime les composantes masquées.
freq
freq
freq
Avant d’utiliser la prédiction nous allons établir un résultat trivial mais important.
Supposons que l’on retranche une séquence Un au processus d’entrée Xn, et que la
différence En soit quantifiée et que l’on construise X̂ n en rajoutant Un à Ê n .
xn en Q ên x̂ n
+ +
un
On a intérêt à effectuer cette opération si Un est bien choisi, en particulier si Un est tel
que En = Xn – Un correspond à un processus En = Xn – Un de variance inférieure à
celle de Xn (pour un même RSB on pourra diminuer la résolution b).
~
Un moyen de réaliser ceci est de choisir Un comme prédiction X n de X n .
On a alors :
P
en = xn − ~
xn = xn + ∑ ax
i =1
i n −i l’erreur de prédiction.
On cherche à déterminer les coefficients ai qui maximisent le rapport signal sur bruit
(en linéaire).
E ( X n2 ) E ( X n2 ) E ( X n2 ) E ( E n2 )
RSBlin = = =
(
E ( X n − Xˆ n ) 2 ) (
E ( E n − Eˆ n ) 2 ) (
E ( E n2 ) E ( E n − Eˆ n ) 2 )
E ( X n2 )
= .RSBquant ( En )
E ( E n2 )
σ X2
= RSBquant ( E
σ E2 n)
a1 X n −1
En utilisant les notations vectorielles a = ⋮ et X (n) = ⋮
ap X n− P
( ) (
On a : σ E 2 = E ( X (n)) 2 + a E X (n) X (n) a + 2a E ( X (n) X (n) )
T T
) T
E ( X n X n −i )
et ρi = coefficient d’autocorrélation normalisé
σX 2
∂σ E 2
d’où =0
∂a
⇔ Γ X ( P)a = − ρ X ( P) Cette équation matricielle est l’équation de Wiener Hopf.
1 σ 2 ( m)
σ X2 Γ X (m + 1) = E ➀
a ( m) Ο
Pour une matrice de cette forme, il est équivalent d’inverser les lignes (multiplication
0…1
à gauche par J = ⋰ ) et d’inverser les colonnes (multiplication à droite par J).
1 0
1ρ 1 ⋯ ρ m+1
ρ
Γ
X ( m + 1) ρ m +1
1
Si on observe que =
ρ1
⋮
⋮ Γ X (m + 1)
ρ ⋯ρ 1
m+1 1 ρ m +1
1 0
1 = a(m)+ km+1 J a(m)
a(m+1) 0 1
i =1
δ ( m +1)σ 2X
on a alors la condition :
σ X2 δ (m + 1) + k m +1σ E 2 (m) = 0
m
ρ m +1 + ∑ a i (m) ρ m+1−i σ X2
δ (m + 1)σ X2
= −
i =1
⇔ k m +1 = −
σ E ( m)
2 σ E 2 (m)
et le résultat :
σ E 2 (m + 1) = σ E 2 (m) + k m+1δ / σ X2
σ E (m + 1) = σ E (m)(1 − k m+1 2 )
2 2
a1 (1) = k1 = − ρ 1
σ E2 (1) = (1 − k12 )σ X2
puis pour m = 2 à P
m
δ m+1 = ρ m +1 + ∑ ai (m) ρ m+1−i
i =1
σ X2
k m +1 = −δ ( m+1)
σ E ( m) 2
• pour i = 1 … m
ai(m +1) =ai(m) +km+1am(m+)1−i
• a m( m++11) = k m+1
• σ E2 (m+1)=σ 2 E (m)(1−km2 +1)
m =1
1
GP ( P) = P
∏
m =1
(1 − k m2 )
Ce gain est d’autant plus imprtant que les coefficients de réflexion km sont de module
proche de l’unité.
Mise en œuvre :
on applique le critère des moindres carrés sur l’intervalle des N points connus
x0 … xN-1
La forme des équations est alors identique à celle obtenue précédemment en
remplaçant
N −1
∑xx n n −i
ρi par ρˆ i = n =i
N −1
∑x
n =0
2
n
~
xn
1-A(z) 1-A(z)
Q(z)
Xˆ(z)= X(z)+
A(z)
si rn= x̂ n - xn est l’erreur de reconstruction
P
Q(z)
R(z)= ⇔ rn = q n − ∑ a i rn −i
A(z) i =1
x̂ n
1-A(z) + 1-A(z)
C’est-à-dire que l’on fait agir le prédicteur 1-A(z) sur le signal reconstruit x̂ n
On a bien alors :
Eˆ (z)= E(z)+Q(z)= X(z)−(1− A(z))Xˆ(z)+Q(z)
= X(z)− Xˆ(z)+ A(z)Xˆ(z)+Q(z)
⇔ Xˆ(z)= X(z)+Q(z) il n’y a plus de cumul des erreurs.
• Soit on calcule A(z) à partir de x̂ n (prédiction backward) mais ceci ne peut se faire
que de façon adaptative (puisqu’on a besoin de A(z) pour construire x̂ n ).
− Il n’est alors pas nécessaire de transmettre A(z)
− Il n’y a pas de retard introduit
− Le calcul de A(z) est plus complexe à mettre en œuvre et le gain de
prédiction est plus faible que pour la prédiction forward.
4.5.1 Codeur ADPCM (32 kbps)
Ce schéma de quantification prédictive avec prédiction backward est au cœur du
codeur MICDA (ADPCM) à 32 kbps (norme G 721 de l’UIT-T).
Le filtre 1/A(z) est remplacé par un filtre ARMA B(z)/A(z) qui est calculé par un
algorithme du gradient simplifié
Le pas de quantification est adaptatif lui aussi, c’est-à-dire que pour conserver un
RSB constant on fait varier le pas de quantification ∆ comme l’écart type à court
terme du signal.
Définitions :
N
On choisit habituellement :
1
= x − Q( x)
2
N
(distance euclidienne)
ou bien plus généralement une distance pondérée :
d ( x, Q ( x ) ) = ( x − Q ( x ) ) W ( x − Q ( x ) )
1 T
• On choisit généralement
L = 2bN b représente la résolution ou nombre de bits par échantillon
b peut ne pas être entier, il suffit que bN le soit.
x2k 1
pour x avec xn = A cos 2Πnf 0 + Wn f0 =
x 2 k +1 20
et Wn un bruit blanc tel que le RSB soit égal à 20 dB
Il est évident qu’on obtiendra une distorsion moyenne plus faible dans ce dernier cas.
1. Etant donné un dictionnaire C = {y1, …, yL} la meilleure partition est celle qui
vérifie
Ri = {x / d ( x, y i ) ≤ d ( x, y j )∀}
C’est la règle du plus proche voisin.
La partition est appelée partition de Voronoï
On appelle Ri une cellule de Voronoï (ou région de Voronoï).
2. Etant donnée une partition, les meilleurs représentants sont les centroïdes des
cellules de Voronoï
∫R xf X ( x)dx = E ( X / X ∈ R )
yi = i i
∫ f X ( x)dx
Ri
(centroïde de Ri(m))
L’idée est de séparer dans deux dictionnaires distincts ce qui est caractéristique de la
forme, le contenu spectral du vecteur et ce qui est caractéristique du gain, l’énergie
du vecteur.
x1
Soit : x ⋮ le vecteur à quantifier
xN
on a alors :
d min ( x, Q( x)) = ( x − g i y j ) T x
= x T x − g i y Tj x
( y Tj x) 2
= x x−
T
2
yj
( y Tj x) 2
- la forme yj qui minimise dmin est celle qui maximise
y Tj y j
y Tj
c’est-à-dire celle qui maximise .x = x cos φ j
yj
(celle qui présente l’angle φj minimum avec x)
xT y j
- le gain est alors donné par : gi = 2
yj
Ces codeurs sont utilisés dans la transmission faible et moyen débit de la parole :
norme GSM demi débit, norme UMTS…
Règle du
x e Plus i,j Consultation des gjêi
A(z) dictionnaires 1/A(z) x̂
Proche
Voisin
ĝj
• Excitation ê1 • Excitation ê1 • ĝ1
• Excitation ê2 • Excitation ê2 • ĝ2
• … • … • …
• Excitation êL • Excitation êL • ĝJ
2. Quantification scalaire 17
2.1 Introduction - définition ..........................................................................17
2.2 Mesure des performances d’un quantificateur .....................................18
2.3 Quantification uniforme ..........................................................................19
2.4 Conception d’un quantificateur scalaire optimal..................................22
2.5 Quantification logarithmique..................................................................26
4. Quantification prédictive 39
4.1 Quantification d’une différence..............................................................39
4.2 Quantification prédictive.........................................................................40
4.3 Rappels concernant la prédiction linéaire.............................................41
4.4 Quantification scalaire prédictive en boucle ouverte...........................44
4.5 Quantification prédictive en boucle fermée ..........................................45
5. Quantification vectorielle 47
5.1 Performances d’un quantificateur vectoriel..........................................47
5.2 Quantificateur vectoriel « optimal ».......................................................49
5.3 Algorithme de Linde Buzo Gray (LBG) ..................................................49
5.4 Quantification vectorielle de type forme-gain.......................................50