cours du 18/03 455

This commit is contained in:
Pierre-antoine Comby 2019-03-18 14:50:23 +01:00
parent 62445da079
commit 9c05bc46f6

View file

@ -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,34 +171,30 @@ 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 :
On découpe le signal en blocs de $M$ échantillons 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 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}$.
\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.
\item On découpe le signal en blocs et on recalcule le prédicteur sur chaque bloc.
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
@ -199,9 +205,19 @@ Inconvénient :
\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$.
\subsubsection{Fenêtres glissantes}
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$.
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}
@ -213,11 +229,6 @@ Inconvénient :
\begin{itemize}
\item et bien... c'est pas simple.
\end{itemize}
\end{enumerate}
\end{document}
%%% Local Variables: