cours du 18/03 455
This commit is contained in:
parent
62445da079
commit
9c05bc46f6
1 changed files with 74 additions and 63 deletions
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue