diff --git a/455-Codage_Sources/Cours/chap2.tex b/455-Codage_Sources/Cours/chap2.tex index 39a3532..e6380d4 100644 --- a/455-Codage_Sources/Cours/chap2.tex +++ b/455-Codage_Sources/Cours/chap2.tex @@ -260,7 +260,7 @@ Les conditions nécessaires pour avoir $D$ minimale sont : \subsection{Quantification non uniforme} -\subsection*{Algorithme de Lloyd -Max} +\subsection{Algorithme de Lloyd -Max} \begin{enumerate} \item Initialisation : $b_0^{(0)} < b_1^{(0)} < \dots < b_n^{(0)}$ choisis arbitrairement, $k=1$. \item $y_i^{(k)}$ obtenus à partir des $b_i^{(k-1)}, i=0 \dots M$ en utilisant la 1ère condition d'optimalité @@ -336,19 +336,98 @@ Pour une source quelconque, le comportement débit / distorsion sera : \[ \boxed{ D(R) = \epsilon_X \sigma_X^2 2^{-2R} \text{ avec } \epsilon_X = \frac{1}{12\sigma_X^2}(\int_{-\infty}^{+\infty} (f_X(x))^{1/3}dx)^3 } \] \end{rem} -\section{Quantification vectorielle - Algorithme de Linde-Buzo-Gray} +\section{Quantification vectorielle} +\begin{defin} + Un quantificateur vectoriel pour une source $\vec{X}\in\R^n$ est défini: -Avec une quantification vectorielle on considère des vecteurs de $N$ échantillons de la source que l'on va représenter à l'aide d'un index de quantification. + \begin{itemize} + \item par une fonction de quantification : +\[ + q : \R^n \to \{0, .... ,n-1\} +\] +\item par une fonction de reconstruction: + \[ + q^{-1} : \{0, .... ,n-1\} \to \R^n + \] + On note $\vec{y_m} = q^{-1}(m)$ les valeurs de reconstruction du quantificateur. +\end{itemize} +\end{defin} +On étend la notion de distorsion et de mesure de distorsion au cas vectoriel: + +\begin{prop}[Mesure de distortion vectorielle] + + Mesure de distortion quadratique:\\ + \[ + d_2(\vec{x},\vec{y}) = \frac{1}{n}\sum_{i=1}^{n}|x_i-y_i|^2 + \] + Mesure de distortion en valeur absolue: + \[ + d_1(\vec{x},\vec{y}) = \frac{1}{n}\sum_{i=1}^{n}|x_i-y_i| + \] + La distorsion introduite par le quantificateur Q est alors l'espérance de la mesure de distorsion: + \[ + D = E[d(\vec{x},Q(\vec{x}))] + \] +\end{prop} %\img{0.5}{2/2/2} +\subsection{Condition d'optimalité} + +On considère une quantification vectorielle d'une source $\vec{X}\in\R^n$ sur $M$ niveau de quantification. On alors la distorsion: +\[ + D = \int_\R^n \|\vec{x}-Q(\vec{x})\|^2_2 f_{\vec{x}}(\vec{x})\d \vec{x} +\] + +On partitionne $\R^n$ en cellule de quantification $\mathcal{C}^k, k\in[0...M-1]$ au seins desquelles la valeur de reconstructio vaut $\vec{y_k}$. + +\emph{Comment choisir $\mathcal{C}^k$ et $y_k$ pour minimiser $\vec{y_k}$? +} + +\[ + D = \sum_{k=0}^{M-1}\int_{\mathcal{C}^k} \|\vec{x}-\vec{y_k}\|^2 f_\vec{X}(\vec{x})\d \vec{x} +\] +\begin{prop} + + Si on fixe les $\mathcal{C}^k$: + +\[ + \vec{y_k} = \frac{\int_{\mathcal{C}^k}\vec{x}f_{\vec{X}}(\vec{x})\d\vec{x}}{\int_{\mathcal{C}^k}f_{\vec{X}}(\vec{x})\d\vec{x}} +\] + + +$ \vec{y_k}$ est le barycentre de $\mathcal{C}^k$ en utilisant la densité$f_{\vec{X}}(\vec{x})$. + +Si on fixe les $\vec{y_k}$ alors pour minimiser $D$ il faut prendre: + +\[ + \mathcal{C}^k =\{ \vec{x}\in\R^n ,\quad\|\vec{x}-\vec{y_k}\| \le \|\vec{x}-\vec{y_l}\| , \forall l \neq k\} +\] +\end{prop} +\begin{proof} + +Si on suppose $\mathcal{C}^k$fixé alors pour fixer $y_k$ on calcule: +\[ + \derivp[D]{\vec{y_k}} = -2 \int_{\mathcal{C}^k} (\vec{x}-\vec{y_k})f_{\vec{X}}(x)\d\vec{x} +\] +On en déduit: + +\[ + \vec{y_k} = \frac{\int_{\mathcal{C}^k}\vec{x}f_{\vec{X}}(\vec{x})\d\vec{x}}{\int_{\mathcal{C}^k}f_{\vec{X}}(\vec{x})\d\vec{x}} +\] +\end{proof} + + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pour un couple (poids, taille), on peut : \begin{itemize} \item quantifier indépendamment le poids et la taille avec deux quantificateurs scalaires \item les quantifier simultanément avec une quantification vectorielle \end{itemize} -\subsection*{Algorithme de Linde-Buzo-Gray} +\subsection{Algorithme de Linde-Buzo-Gray} +\emph{Similaire à l'algorithme $K$-means} \newcommand{\x}{\underline{x}} Cet algorithme permet de fabriquer une quantification vectorielle optimale (optimum local) pour un ensemble de $K$ points de $\R^N$ : $\x_1 \dots \x_K$ et quantifiés sur $M$ niveaux. @@ -401,28 +480,28 @@ En pratique : \newpage \section{Quantification scalable} +% \emph{non traité en 2018-2019} +% L'objectif est de permettre une flexibilité en terme de compression débit-distorsion. Une possibilité est d'avoir recours à un quantificateur scalable.\\ -L'objectif est de permettre une flexibilité en terme de compression débit-distorsion. Une possibilité est d'avoir recours à un quantificateur scalable.\\ +% On considère une source uniforme sur $[-X_{max};X_{max}]$ quantifiée sur 8 niveaux. -On considère une source uniforme sur $[-X_{max};X_{max}]$ quantifiée sur 8 niveaux. +% %\img{0.5}{2/3/2} -%\img{0.5}{2/3/2} +% Si on a $K$ échantillons à quantifier, on obtient $3K$ bits.\\ -Si on a $K$ échantillons à quantifier, on obtient $3K$ bits.\\ +% Les $K$ bits de poids fort sont placés dans un premier paquet. -Les $K$ bits de poids fort sont placés dans un premier paquet. +% Les $K$ bits de poids intermédiaire sont placés dans un second paquet. -Les $K$ bits de poids intermédiaire sont placés dans un second paquet. +% Les $K$ bits de poids faible sont placés dans un troisième paquet.\\ -Les $K$ bits de poids faible sont placés dans un troisième paquet.\\ +% Des utilisateurs disposant d'un mauvais canal recevront le premier paquet : la distorsion sera élevée. -Des utilisateurs disposant d'un mauvais canal recevront le premier paquet : la distorsion sera élevée. +% Des utilisateurs disposant d'un excellent canal recevront les 3 paquets et auront une distorsion faible.\\ -Des utilisateurs disposant d'un excellent canal recevront les 3 paquets et auront une distorsion faible.\\ - -\begin{rem} -Cette méthode permet de réaliser une quantification sans avoir à connaître l'état du canal. -\end{rem} +% \begin{rem} +% Cette méthode permet de réaliser une quantification sans avoir à connaître l'état du canal. +% \end{rem} \end{document} diff --git a/455-Codage_Sources/Cours/chap3.tex b/455-Codage_Sources/Cours/chap3.tex index df0a3b5..d66dfce 100644 --- a/455-Codage_Sources/Cours/chap3.tex +++ b/455-Codage_Sources/Cours/chap3.tex @@ -30,9 +30,53 @@ Avec Matlab, on l'obtient avec : % \end{lstlisting} $\gamma_x(k)$ est maximale en 0 et est égale à l'énergie $\sigma^2$ du signal. +\section{Codage prédictif en boucle ouverte} +Schéma en boucle ouverte: -\newpage -\section{Prédicteur optimal à 1 pas} +\begin{figure}[H] + \centering + \begin{tikzpicture} + \sbEntree{E} + \node[above] at (E) {$x_n$}; + \sbDecaleNoeudy[5]{E}{mem} + \sbBloc{mem2}{Mémoire}{mem} + \sbBlocL{pred}{Prédiction}{mem2} + \sbRelieryx{E}{mem2} + \sbDecaleNoeudy[-5]{pred}{comp2} + \sbComp{comp}{comp2} + \sbRelierxy{pred}{comp} + \sbRelier{E}{comp} + \sbBlocL{Q}{Quantif}{comp} + \sbBlocL{C}{Codage entropique}{Q} + \sbSortie[5]{S}{C} + \sbRelier[0100..1]{C}{S} + \end{tikzpicture} + \caption{Emetteur en boucle ouverte} +\end{figure} +\begin{figure}[H] + \centering + \begin{tikzpicture} + \sbEntree{E} + \sbBlocL{Dc}{Décodeur entropique}{E} + \sbBlocL{Di}{Desindexation}{Dc} + \sbSumb[7]{comp}{Di} + \sbRelier{Di}{comp} + \sbDecaleNoeudy[5]{comp}{comp2} + \sbBloc{pred}{Prédicteur}{comp2} + \sbBlocL{mem}{Mémoire}{pred} + \sbDecaleNoeudy[-5]{mem}{S} + \sbSortie[5]{X}{S} + \sbRelierxy{pred}{comp} + \sbRelieryx{X}{mem} + \sbRelier{comp}{X} + \end{tikzpicture} + \caption{Recepteur en boucle ouverte} +\end{figure} + +Ca marche mais la quantification introduit des erreurs qui peuvent s'accumuler. On s'en sort en réinitialisant le codeur régulièrement. + + +\subsection{Prédicteur linéaire optimal à 1 pas} On souhaite prédire la valeur de $X_n$ à partir de la valeur de $X_{n-1}$. @@ -62,19 +106,22 @@ Pour la valeur de $\hat{a_1}$ obtenue, on a $\hat{e}$ est l'énergie de la partie qui n'a pas pu être prédite de $x_1,\dots,x_N$.\\ +Lorsque le signal est fortement corrélé, $\gamma_x(1)\simeq \gamma_x(0)$ et $\hat{a_1}\simeq 1$. + Le résidu de prédiction a une variance plus faible. Si on le quantifie, il permettra de reconstituer le signal initial avec une distorsion plus faible. \newpage \section{Prédiction à $p$ pas} -On cherche à prédire $X_n$ à partir des échantillons précédents $X_{n-1},\dots,X_{n-p}$. -\newcommand{\ap}{\underline{a}} -\newcommand{\Xn}{\underline{X_n}} -\newcommand{\cp}{\underline{c}} -\newcommand{\Rp}{\underline{\underline{R}}} +On cherche à prédire $\vec{X_n}$ à partir des échantillons précédents $X_{n-1},\dots,X_{n-p}$. -\[ \hat{X_n} = a_1 X_{n-1} + \dots + a_pX_{n-p} = \ap^T \Xn \quad \text{ avec} \ap^T=(a_1\dots a_p) \text{ et } \Xn^T = (X_{n-1} \dots X_{n-p})\] +\newcommand{\ap}{\vec{a}} +\newcommand{\Xn}{\vec{X_n}} +\newcommand{\cp}{\vec{c}} +\newcommand{\Rp}{\vec{R}} + +\[ \hat{X_n} = a_1 X_{n-1} + \dots + a_pX_{n-p} = \ap^T \Xn \quad\text{avec}\quad \ap^T=(a_1\dots a_p) \text{ et } \Xn^T = (X_{n-1} \dots X_{n-p})\] On cherche $\ap$ minimisant \begin{align*}