From eea9cf16c2e0197932073f0fd5cbd25101889144 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 18 Mar 2019 16:45:12 +0100 Subject: [PATCH] fin du cours 455 18/03 --- 455-Codage_Sources/Cours/chap3.tex | 36 ++++++++++ 455-Codage_Sources/Cours/chap4.tex | 105 +++++++++++++++++++++++++++++ 455-Codage_Sources/Cours/chapA.tex | 8 ++- 3 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 455-Codage_Sources/Cours/chap4.tex diff --git a/455-Codage_Sources/Cours/chap3.tex b/455-Codage_Sources/Cours/chap3.tex index f7387dc..1baf531 100644 --- a/455-Codage_Sources/Cours/chap3.tex +++ b/455-Codage_Sources/Cours/chap3.tex @@ -229,6 +229,42 @@ Avantages : \begin{itemize} \item et bien... c'est pas simple. \end{itemize} + +\section{Schéma de prédiction en boucle fermée} + +Dans les schémas de codage avec pertes le récepteur dispose de $\tilde{x}_{n-M} ... \tilde{x}_{n-1}$ qui sont différents de $x_{n-M} ... x_{n-1}$. + +Les fonctions de corrélations estimées ainsi que les prédicteurs seront différents. L'erreur entre le signal initial et le signal reconstitué aura tendance à augmenter. + +Pour résoudre ce problème le codeur va comprendre un décodeur ``local'' qui va permettre d'estimer $\tilde{x}_{n-M} ... \tilde{x}_{n-1}$. Ensuite $\gamma_x$ et le prédicteurs seront estimée à partir de $\tilde{x}$ et non de $x$. + +\begin{figure}[H] + \centering + \begin{tikzpicture}[thick,scale=0.9, every node/.style={scale=0.9}] + \end{tikzpicture} + \caption{Utilisation d'un décodeur local} +\end{figure} + +\begin{figure}[H] + \centering + \begin{tikzpicture} + \end{tikzpicture} + \caption{Décodeur distant} +\end{figure} + +On montre qu'avec ce schéma les erreurs de quantification ne s'accumule pas. + +\[ + x_n-\tilde{x}_n= x_n -\hat{x}_n+\hat{x}_n+\tilde{x}_n = e_n - \tilde{e}_n +\] + +Sur le $n$-ième échantillion on a seulement l'erreur de quantification associé a cet échantillon. + +\begin{rem} + La qualité du prédicteur va influencer le débit et dans une moindre mesure la distorsion +\end{rem} + + \end{document} %%% Local Variables: diff --git a/455-Codage_Sources/Cours/chap4.tex b/455-Codage_Sources/Cours/chap4.tex new file mode 100644 index 0000000..397cce2 --- /dev/null +++ b/455-Codage_Sources/Cours/chap4.tex @@ -0,0 +1,105 @@ +\documentclass[main.tex]{subfiles} +\begin{document} +\section{Principe du codage par transformée} + +On considère une source $\vec{\mathcal{X}}\in \R^n$ ou $\in \R^{n\times m}$ (images). +Et une réalisation de cette source $\vec{x} \in \R^n$ ou $\vec{X}\in\R^{n\times m}$. + +La représentation naturelle de $\vec{x}$ est la base canonique +de $\R^n$ . +Si $\vec{x}$ représente par exemple une suite de $N$ échantillons d'un signal audio, les composantes de $\vec{x}$ auront plus ou moins la meme variance, mais ils ne seronts (en général) pas indépendant entre eux. POur exploiter cette propriété, on peux: +\begin{itemize} +\item réaliser un codage prédictif (voir chapitre 4) +\item réaliser un codage par transformée +\end{itemize} + +Dans le second cas on essaie d'exprimer $\vec{x}$sur une ``meilleure'' base que la base canonique. + +\section{Transformations} +\begin{defin} + Une base de $\R^n$ est ensemble de $n$ vecteurs $\{\vec{u_1} ...\vec{u_n}\}$ linéairement indépendants. + Si on pose + \[ + \vec{U} = [ \vec{u_1} ... \vec{u_n}] + \] + Alors $\vec{U}$ est inversible. +\end{defin} + +\paragraph{Transformation inverse} + +\begin{defin} + On dispose de $\vec{t}$ vecteur dont les composantes sont exprimées dans la base $\{\vec{u_1} ... \vec{u_n}\}$ dans la base canonique + On a : + \[ + \vec{x}= \sum_{i=1}^{n}t_i\vec{u_i} = \vec{U}\vec{t} + \] +\end{defin} +\paragraph{Transformation directe} +\begin{defin} + On dispose de $\vec{x}$ dont les composantes sont données dans la base canonique. + On veux obtenir son vecteur de composante $\vec{t}$ dans la base $\{\vec{u_1} ... \vec{u_n}\}$: + \[ + \vec{t} = \vec{U}^{-1}\vec{x} + \] +\end{defin} + +\paragraph{Base unitaires} +\begin{defin} + Une base est dite \emph{unitaire} ssi + \[ + \begin{cases} + <\vec{u}_i ,\vec{u}_j> = 0 &\quad\forall i \neq j\\ + <\vec{u}_i ,\vec{u}_i> = 1 &\quad\forall i \in [1 ... n] + \end{cases} + \] +\end{defin} +\begin{prop} + Pour une base unitaire on a: + \begin{itemize} + \item transformée inverse: $\vec{x}=\vec{Ut}$ + \item transformée directe: $\vec{t} = \vec{U}^T\vec{x}$ + \item $\vec{U}^T\vec{U}= \vec{U}\vec{U}^T = \vec{I_n}$ + \end{itemize} + + une transformée dans une base unitaire préserve la norme quadratique. +\end{prop} +\begin{proof} + \[ + \|\vec{t}\|^2 = \vec{t}^T\vec{t} = \vec{x}^T \vec{U}^T\vec{U}\vec{x} = \vec{x}^T\vec{x} =\|\vec{x}\|^2 + \] +\end{proof} + +\begin{rem} + Une transformée est unitaire lorsqu'elle implique une base unitaire. +\end{rem} + +Si on veux transformée une image $\vec{X}\in \R^{n\times n}$ il faut considéré un ensemble de matrice $\vec{U_1 ... U_{n\times n}}\}$ base de $\R^{n\times n}$. + Pour réaliser la transformation : + \begin{itemize} + \item On construit un vecteur $\vec{x} \in R^{n^2}$ à partir des lignes ou des + colonnes de $\vec{X}$. + \item Construire la matrice de transformation $\vec{U}\in \R^{n^2\times n^2}$ + \item Calculer $\vec{t} = \vec{U}^{-1}\vec{x}$ + \item Reformer $\vec{T} \in \R^{n\times m}$ à partir de $t$. + \end{itemize} + +\begin{defin} +Une transformée pour une image $\vec{x}\in \R^{n\times m}$ est dites \emph{séparable} s'il existe une matrice $\vec{U_s}$ telle que la matrice $\vec{T}$ transformée définie précédement puisse s'écrire +\[ + \vec{T} = \vec{U_s}^{-1}\vec{x}(\vec{U_s}^{-1})^T +\] +et si $U_s$ est unitaire: +\[ + \vec{T} = \vec{U_s}^T x \vec{U_s} +\] +\end{defin} + +\begin{rem} + Pour une transformée non séparable on a une complexité en $O(n^4)$. + Pour une transformée séparable on a une complexité en $O(2n^3)$ +\end{rem} +\end{document} +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "main" +%%% End: diff --git a/455-Codage_Sources/Cours/chapA.tex b/455-Codage_Sources/Cours/chapA.tex index 3031747..749348a 100644 --- a/455-Codage_Sources/Cours/chapA.tex +++ b/455-Codage_Sources/Cours/chapA.tex @@ -10,9 +10,13 @@ \section{Codage arithétique} \section{Codage LZW} \inputminted{python}{../algo_code/LZW.py} - -\section{Algorithme LBG} +\section{Quantification} +\subsection{Quantification uniforme} +\subsection{Algorithme de Llyod-max} +\subsection{Algorithme LBG} en 2D , ne pas essayer de tracer les cellule de voronoi +\section{Codeur prédictif} +Construire un schéma de prédiction en boucle fermée à fenêtre glissante dasn lequel $M$et $p$ sont paramétrisable. On utilisera un quantificateur à zone morte de pas $\Delta$ paramétrisable. \end{document}