diff --git a/455-Codage_Sources/Cours/chap3.tex b/455-Codage_Sources/Cours/chap3.tex index 79babf3..f7387dc 100644 --- a/455-Codage_Sources/Cours/chap3.tex +++ b/455-Codage_Sources/Cours/chap3.tex @@ -4,7 +4,7 @@ L'idée du codage prédictif est d'utiliser les corrélations (ressemblances) temporelles ou spatiales du signal à compresser. -\section{Rappels sur la corrélation} +\paragraph{Rappels sur la corrélation} On considère une source $X$ qui émet un signal constitué de $x_1,\dots,x_N$ considérés comme une réalisation d'une suite de variables aléatoires $X_1,\dots,X_N$ de moyenne nulle. @@ -17,17 +17,28 @@ Pour un signal stationnaire (dont les caractéristiques statistiques n'évoluent \[ \gamma_x(n,k) = \gamma_x(k) = E(X_nX_{n+k}), \forall n\] En pratique, on estime la corrélation à partir des échantillons du signal à compresser. +\begin{itemize} +\item Estimateur biaisé : +\[ \hat{\gamma_x^{B}}(k) = + \begin{cases} +\displaystyle\frac{1}{N}\sum_{i=1}^{N-k} x_i x_{i+k}, \forall k \geq 0 \\[2em] +\displaystyle\frac{1}{N} \sum_{i=-k}^N x_i x_{i+k}, \forall k \leq 0 +\end{cases} +\] +\item Estimateur non biaisé +\[ + \hat{\gamma_x^{NB}}(k) =\frac{1}{N-|k|} \sum_{i=1}^{N-k} x_i x_{i+k} \forall k \geq 0 +\] -Estimateur biaisé : -\[ \hat{\gamma_x}(k) = \frac{1}{N}\sum_{i=1}^{N-k} x_i x_{i+k}, \forall k \geq 0 \] - -\[ \gamma_x(k) = \frac{1}{N} \sum_{i=-k}^N x_i x_{i+k}, \forall k \leq 0 \] - +\end{itemize} +\begin{rem} + On préfère l'estimateur biaisé car il est plus stable numériquement. +\end{rem} Avec Matlab, on l'obtient avec : -% \begin{lstlisting} -% [c,k] = xcorr(x,'biased'); -% plot(k,c); grid; -% \end{lstlisting} +\begin{minted}{matlab} +[c,k] = xcorr(x,'biased'); +plot(k,c); grid; +\end{minted} $\gamma_x(k)$ est maximale en 0 et est égale à l'énergie $\sigma^2$ du signal. \section{Codage prédictif en boucle ouverte} @@ -37,7 +48,8 @@ Schéma en boucle ouverte: \centering \begin{tikzpicture} \sbEntree{E} - \node[above] at (E) {$x_n$}; + \node[above left] (X) at (E) {$x_n$}; + \draw (E.east) -- ++(-2em,0) (E.south) -- ++(0,4pt) ; \sbDecaleNoeudy[5]{E}{mem} \sbBloc{mem2}{Mémoire}{mem} \sbBlocL{pred}{Prédiction}{mem2} @@ -109,9 +121,7 @@ $\hat{e}$ est l'énergie de la partie qui n'a pas pu être prédite de $x_1,\dot 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} +\subsection{Prédiction à $p$ pas} On cherche à prédire $\vec{X_n}$ à partir des échantillons précédents $X_{n-1},\dots,X_{n-p}$. @@ -161,63 +171,64 @@ Pour cette valeur de $\hat{\ap}$, on a Ce prédicteur à $p$ pas est en général plus efficace que le prédicteur à 1 pas mais il est plus complexe. -\newpage -\section{Mise en oeuvre du prédicteur} - -On considère le codeur prédictif de structure suivante à l'émetteur : -%\img{0.4}{3/2/1} - -et de structure suivante au décodeur de récepteur: -%\img{0.4}{3/2/2} - -On met en œuvre un dispositif de prédiction exploitant les échantillons disponibles au récepteur, de manière à éviter l'accumulation des erreurs de quantification. Il n'y a pas d'accumulation d'erreur de prédiction car le prédicteur est le même à l'émetteur et au récepteur.\\ +\subsection{Mise en oeuvre du prédicteur} +Il faut que le récepteur disposent également des coefficients de prédiction optimal. Il peuvent : +\begin{itemize} +\item être transmis mais cela coute du débit +\item Etre réestimés au récepteur mais cela rend le récepteur plus complexe. +\end{itemize} Pour le réglage du prédicteur, on distingue plusieurs méthodes : -\begin{enumerate}\setlength{\itemsep}{5mm} -\item On calcule $\hat{\gamma_x}$ sur tout le signal et on transmet $\vec{\hat{a}}_{opt}$. +\subsubsection{Fenêtres fixes} -Avantage : -\begin{itemize} -\item sa simplicité de mise ne œuvre -\end{itemize} -Inconvénients : -\begin{itemize} -\item il ne permet pas de tenir compte des non stationnarités -\item on règle le prédicteur à partir de $x_n$ et non de $\hat{x_n}$. -\end{itemize} + On découpe le signal en blocs de $M$ échantillons et on recalcule le prédicteur sur chaque bloc. -\item On découpe le signal en blocs et on recalcule le prédicteur sur chaque bloc. + Les échantillons de la $m$-ième fenêtres (pour$(m-1)M+1$ à $mM$): + \begin{itemize} + \item servent à extimer $\hat{\gamma}_x(k)$ et les coefficients de prédiction utilisé pour la $m+1$-ème fenêtre. + \item sont comprimés en utilisant le prédicteur optimal calculé das la fenêtre $m-1$. + \item Le recepteur fait les mêmes opérations. + \end{itemize} + \begin{rem} + Pour la première fenêtre on utilise le prédicteur à 1 pas. + + Cette méthode ne fonctionne que pour des compressions sans pertes ou a débit élevé. + \end{rem} + Avantages : + \begin{itemize} + \item sa simplicité de mise ne œuvre + \item permet de s'adapter aux non-stationnarités + \end{itemize} + Inconvénient : + \begin{itemize} + \item débit nécessaire à la transmission des $\vec{\hat{a}}_{opt}$. + \end{itemize} + +\subsubsection{Fenêtres glissantes} + +On travaille sur une fenêtre glissante contenant les N échantillons décalés : $\vec{\hat{X}}_n = (\hat{x}_{n-1}, ..., \hat{x}_{n-N})^T$. +\begin{itemize} +\item On estime $\gamma_x(k)$ à partir des échantillons. +\item On en déduit le prédicteur à $p$ pas. +\item On prédi $x_n$ et on compresse le résidu. +\item Au récepteur dans le cas c'un codage sans pertes on dispose également de $x_{n-N} ... x_{n-1}$. et on va pouvoir faire les mêmes opérations pour obtenir $\hat{x_n}$ auquel il rajoutera le résidu du codeur. + +\end{itemize} + \begin{rem} + Pour les $N$ premiers échantillons on peux utiliser un prédicteur à 1 pas avec $a=0$ ou $a=0$ + \end{rem} Avantages : -\begin{itemize} -\item sa simplicité de mise ne œuvre -\item permet de s'adapter aux non-stationnarités -\end{itemize} -Inconvénient : -\begin{itemize} -\item débit nécessaire à la transmission des $\vec{\hat{a}}_{opt}$. -\end{itemize} - -\item Mettre en place un prédicteur adaptatif. On travaille sur une fenêtre glissante contenant les N échantillons décalés : $\vec{\hat{X}}_n = (\hat{x}_{n-1}, ..., \hat{x}_{n-N})^T$. - -On calcule $\vec{\hat{a}}_{opt}$ à partir de $\vec{\hat{X}}_n$ (au codeur et au décodeur). On applique $\vec{\hat{a}}_{opt}$ pour coder et décoder $x_n$ en $\hat{x}_n$. À l'itération suivante, on calcule $\vec{\hat{a}}_{opt}$ à partir de $\vec{\hat{X}}_{n+1} = (\hat{x}_{n}, ..., \hat{x}_{n-N+1})^T$. - -Avantages : -\begin{itemize} -\item Il est très adaptatif. -\item On ne transmet plus $\vec{\hat{a}}_{opt}$ -\end{itemize} - -Inconvénient : -\begin{itemize} -\item et bien... c'est pas simple. -\end{itemize} - - -\end{enumerate} - + \begin{itemize} + \item Il est très adaptatif. + \item On ne transmet plus $\vec{\hat{a}}_{opt}$ + \end{itemize} + Inconvénient : + \begin{itemize} + \item et bien... c'est pas simple. + \end{itemize} \end{document} %%% Local Variables: