...
 
Commits (8)
\documentclass[main.tex]{subfiles}
\begin{document}
\subsection{Introduction}
\emph{Beaucoup de blabla. Beaucoup.}
À part la radio, toute les transmissions sont numériques.
\paragraph{Objectif}
Transmettre le max de donnée avec un fiabilité maximale
\begin{itemize}
\item Malgré les limites théoriques
\item Les contraintes physiques
\item contraintes numériques
\end{itemize}
\subsection{Historique}
\emph{encore du blabla. encore. }
\subsection{Principe d'une chaine de transmission numérique}
\begin{figure}[H]
\centering
\begin{tikzpicture}
[every node/.style={draw,rectangle,minimum height=4em,node distance=0.5cm,scale=0.8}]
\node (S) at (0,0){Source};
\node (CS) [right= of S]{\begin{tabular}{c}Codage \\ source\end{tabular}};
\node (CC) [right= of CS]{\begin{tabular}{c}Codage \\ canal\end{tabular}};
\node (CBB) [right= of CC]{\begin{tabular}{c}Codage B de B \\ modulation\end{tabular}};
\node (C) [right= of CBB]{Canal};
\node (A) [right= of C][adder]{};
\node (Demod)[right= of A]{Demod};
\node (E) [right= of Demod]{Egaliseur};
\node (Decod)[right= of E]{Decodeur};
\tikzset{every node/.style={}}
\draw (S) -- (CS) -- (CC) -- (CBB)-- (C) -- (A.1) (A.3) -- (Demod) -- (E) -- (Decod);
\draw[latex-] (A.4) -- ++(0,1) node[above]{Bruit};
\draw [thick,decoration={
brace,
mirror,
raise=0.5cm,amplitude=0.5cm},decorate] (S.south west) -- (CBB.south east)node[midway,below=1cm]{Emetteur};
\draw [thick,decoration={
brace,
mirror,
raise=0.5cm,amplitude=0.5cm},decorate] (C.south west) -- ++(2.5,0) node[midway,below=1cm]{Canal de transmission};
\draw [thick,decoration={
brace,
mirror,
raise=0.5cm,amplitude=0.5cm},decorate] (Demod.south west) -- (Decod.south east) node[midway,below=1cm]{Recepteur};
\end{tikzpicture}
\caption{Principe d'une chaine de transmission numérique}
\end{figure}
\paragraph{Source}
Une source d'information est un signal aléatoire. Les communications numériques sont alors des signaux discrets.
\paragraph{Codage de source}
Dans cette étape on associe un code de facon bijective une suite de k élement binaire (cf UE 455) $\{c_k\}$
\paragraph{Codage Canal}
L'objectif est de lutté contre les effets du canal:
\begin{itemize}
\item introduction de redondance
\item Ajoute des bits de redondances à $\{c_k\}$ pour former $\{d_n\}$
\item permet l'évaluation d'erreur
\end{itemize}
Il faut trouver un compromis entre débit et robustesse aux erreurs.
\paragraph{Codage de bande de base}
\begin{itemize}
\item Donne une réalité physique au message (tension, énergie...)
\item Utilise des formes d'impulsions
\item Donne au spectre des des propriété utiles (bandes occupée, présence de la fréquence d'horloge ...)
\end{itemize}
\begin{figure}[H]
\centering
\begin{subfigure}{.5\textwidth}
\subcaption{Impulsion rectangulaire}
\end{subfigure}%
\begin{subfigure}{.5\textwidth}
\subcaption{Impulsion de Nyquist}
\end{subfigure}
\caption{Formes d'impulsions classiques}
\end{figure}
\paragraph{Modulation}
Comme pour une modulation numérique
\[
e(t) = A(t)\cos(\Phi(t))
\]
$A(t)$ et $\Phi(t)$ sont les amplitudes et phases instantanée.
\begin{exemple}[Modulation QPSK]
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{scope}
\draw[-latex] (0,-3) -- (0,3);
\draw[-latex] (-3,0) -- (3,0);
\draw (0,0) circle (2);
\node[above right] at (2,0) {00};
\node[above left] at (0,2) {01};
\node[below left] at (-2,0) {11};
\node[below right] at (0,-2) {10};
\end{scope}
\begin{scope}[shift={(4,-3)}]
\begin{axis}
[axis lines = middle,height=6cm, width=12cm,
xmin=0,xmax=360,ymin=-1,ymax=1,
domain=0:360,samples=200, xtick=\empty,ytick=\empty]
\addplot[black,domain=0:90]{0.7*sin(12*x)};
\addplot[black,domain=90:180]{-0.7*sin(12*x)};
\addplot[black,domain=180:270]{0.7*sin(12*x)};
\addplot[black,domain=270:360]{0.7*cos(12*x)};
\draw[dashed] (axis cs:90,-1) -- (axis cs: 90,1);
\draw[dashed] (axis cs:180,-1) -- (axis cs: 180,1);
\draw[dashed] (axis cs:270,-1) -- (axis cs: 270,1);
\draw[dashed] (axis cs:360,-1) -- (axis cs: 360,1);
\node at (axis cs: 45,0.8){01};
\node at (axis cs: 135,0.8){10};
\node at (axis cs: 225,0.8){01};
\node at (axis cs: 315,0.8){00};
\end{axis}
\end{scope}
\end{tikzpicture}
\caption{modulation QPSK}
\end{figure}
\end{exemple}
\paragraph{Canal de transmission}
Plusieurs types de canaux possibles: canal hertzien , ligne filaire , coax...
On les caractérise par leur réponse impulsionnelle complexe, et par sa bande passante B.
\begin{defin}
On défini la \emph{ capacité de Shannon:}
\[
C = B.\log_2(1+RSB)
\]
\end{defin}
\paragraph{Bruit}
Le bruit est présent à la transmission, et dans le canal. on le caractérise par sa densité de probabilité généralement on suppose le bruit additif Blanc et Gaussien:
\[
p(b) = \frac{1}{\sqrt{2\pi \sigma_B^2}} \exp\left(\frac{-(b-\mu_b)^2}{2\sigma_b^2}\right)
\]
On a souvent un bruit centré : $\mu_b=0$
\paragraph{Démodulation}
À la réception on inverse la modulation
\begin{exemple}[Démodulation QPSK]
\end{exemple}
\paragraph{Egaliseur régénerateur}
Objectif : lutter les effets du canal de transmission pour augmenter le débit.
\paragraph{Décodeur}
on refait le passage analogique-numérique et on décode le canal (correction d'erreur) pour cela :
\begin{itemize}
\item echantillonnage (cad prise de décision) :filtrage adapté + sortie dur ou souple
\item décodage du canal
\item décodage de source
\end{itemize}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% End:
\documentclass[main.tex]{subfiles}
\begin{document}
\subsection{Codage de donnée discrètes}
\begin{defin}
Les données discrètes sont représentées par des symboles en nombre fini $m$.
On parle d'une répresentation $m-$aire ou $m-$moments
\end{defin}
\begin{exemple}
\begin{itemize}
\item Alphabets
\item Symbole de numérotation (décimal, hexa, octal)
\end{itemize}
\end{exemple}
\begin{tabular}{|c|c|c|c|}
\hline
Sources& Symboles& Dimension& Codage binaires \\
\hline
alpha. simplifié & lettre& 27 & 5\\
alphabet & lettres 128 & 7 \\
Nombres & chiffres & Dec: 0-9 10 & 4 (DCB)\\
Nombres & chiffres & Hex: 0-F 16 & 4 \\
Nombres & chiffres & Ternaire: 0-p 10 & 2)\\
\end{tabular}
\begin{rem}
Les symboles binaire s sont des bits ou ``digit''.
On code un alphabet à $m= 2^n$ symboles avec des mots binaires à $n$ bits. Il y a $m!$ possibilités.
\end{rem}
\subsection{Codage d'une information analogique MIC}
On réalise une conversion Analogique-Numérique classique : Échantillonnage et blocage. Comme au chapitre 1.
\subsection{Modulation différentielles DPCM}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% End:
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
% Mise en page % Mise en page
\title{Notes de Cours} \title{Notes de Cours}
\author{Pierre-Antoine Comby} \author{Pierre-Antoine Comby}
\teacher{} \teacher{F. Sammouth \& J-P Barbeau}
\module{433 \\ Electronique numérique\\ pour la transmission} \module{433 \\ Electronique numérique\\ pour la transmission}
\begin{document} \begin{document}
\maketitle \maketitle
...@@ -67,14 +67,28 @@ Canal \\de\\ propagation ...@@ -67,14 +67,28 @@ Canal \\de\\ propagation
Le codage a pour but de mettre en forme le signal numérique pour garantir au maximum une bonne identification à l'arrivée des bits transmis. Et ce malgré une bande passante de canal limitée et bruité. Le codage a pour but de mettre en forme le signal numérique pour garantir au maximum une bonne identification à l'arrivée des bits transmis. Et ce malgré une bande passante de canal limitée et bruité.
Il y a donc un compromis à faire entre bande passante et rapport signal sur bruit final. Avant le codage "canal", il y a le codage de source (UE 455), qui compresse le signal mais ajoute également des informations pour identifier les erreurs de transmission à la réception, et pour prévoir leur correction. Il y a donc un compromis à faire entre bande passante et rapport signal sur bruit final. Avant le codage "canal", il y a le codage de source (UE 455), qui compresse le signal mais ajoute également des informations pour identifier les erreurs de transmission à la réception, et pour prévoir leur correction.
\chapter{Traitement numérique de l'information}
\section{Echantillonnage d'un signal numérique} \section{Echantillonnage d'un signal numérique}
\subfile{chap1.tex} \subfile{chap11.tex}
\section{Exemple de filtre à capacité commutées} \section{Exemple de filtre à capacité commutées}
\subfile{chap2.tex} \subfile{chap12.tex}
\section{Filtre numériques (échantillonnés)} \section{Filtre numériques (échantillonnés)}
\subfile{chap3.tex} \subfile{chap13.tex}
\section{CAN et CNA} \section{CAN et CNA}
\subfile{chap4.tex} \subfile{chap14.tex}
\chapter{Communication numérique}
\emph{Jean-Pierre Barbeau}
\section{Introduction}
\subfile{chap21.tex}
\section{La source de l'information}
\subfile{chap22.tex}
\section{Choix d'un code en bande de base}
\section{Transmission dans un canal en bande de base (non bruité)}
\end{document} \end{document}
......
...@@ -184,19 +184,197 @@ Avec la dérivée généralisé au sens des distributions. ...@@ -184,19 +184,197 @@ Avec la dérivée généralisé au sens des distributions.
\footnotetext{continue, bijective continue} \footnotetext{continue, bijective continue}
\subsection{Expérance, moment et fonction caractéristique} \subsection{Expérance, moment et fonction caractéristique}
\begin{defin}
pour $g \R \to\C^p$
On appelle \emph{espérance} d'une variable aléatoire la grandeur:
\[
E(g(X)) = \int_{\R}^{} g(x)f_X(x)\d x
\]
Dans le cas discret on a:
\[
E(g(X)) = \sum_{\mathbb{I}}^{}g(x_i)P(X=x_i)
\]
\end{defin}
\begin{prop}
L'espérance est linéaire (sous réserve d'existance):
\begin{itemize}
\item $E[c]=c$
\item $E[cg(x)]=cE[g(x)]$
\item $E[g(x)+h(x)] =E[g(x)]+E[h(y)]$
\end{itemize}
\end{prop}
\begin{rem}
On note aussi $E[X]=m_X = m$ ``moyenne de la variable aléatoire''. Si $m$ = 0 on dit que la VA est centrée.
\end{rem}
\begin{defin}
On appelle \emph{momemt d'ordre $k$}:
\[
m_k = E[X^k]
\]
Le \emph{moment centré d'ordre $k$ :}
\[
m_k = E[(X-m_X)^k]
\]
Le moment $\mu_2$ est aussi appelé la \emph{variance}
\end{defin}
\begin{rem}
on note $\sigma_x = \sqrt{v_x}$ l'écart type de X. Il mesure la dispersion autour de $m_x$.
On défini la variable centrée réduite associée à $X$:
\[
X_r = \frac{X-m_X}{\sigma_X}
\]
\end{rem}
\subsection{Fonction caractéristique} \subsection{Fonction caractéristique}
\begin{defin}
On appelle fonction caractéristique:
\[
\phi_X(u) = E[exp(juX)] = \int_{-\infty}^{+\infty}
\]
\end{defin}
\begin{prop}
\begin{itemize}
\item $\phi_X(u)$ existe toujours $|\phi_X(u)|\le\phi_X(0)=1$
\item Symétrie hermitienne
\item $\phi_X(u)$ est continue même pour des VA discrètes
\item On appelle 2ème fonction de répartition $\Psi_X(u)=\ln(\phi_X(u))$
\item \[
m_k = (-j)^k\left.\deriv[^{k}\phi_X(u)]{u^k}\right|_{u=0}
\]
\end{itemize}
\end{prop}
\section{Couple de variable aléatoire réelles} \section{Couple de variable aléatoire réelles}
\subsection{Généralité} \subsection{Généralité}
\begin{defin}
Un couple de variable aléatoire est défini comme:
\[
Z
\begin{cases}
\Omega \to \R^2\\
\omega \mapsto Z(\omega) = \vect{X(\omega)\\Y{\omega}}
\end{cases}
\]
On défini également:
\[
Z^{-1} : \mathcal{D} \mapsto Z^{-1}(\mathcal{D}) = E_D \subset \mathcal{E}
\]
\end{defin}
\subsection{Fonction de répartition} \subsection{Fonction de répartition}
\begin{defin}
\begin{itemize}
\item fonction de répartition conjointe:
\begin{align*}
P(X<x;Y<y) &=F_{XY}(x,y)\\
&=P((x,y)\in \mathcal{D})\\
&=F_Z(z)
\end{align*}
\item fonction de répartition marginale
\begin{align*}
F_{X}(x)=P(X<x) &= F_{XY}(x,+\infty)\\
&=P((x,y)\in\mathcal{D}_X)
\end{align*}
\end{itemize}
\end{defin}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{scope}
\draw[-latex] (-1,0) -- (4.1,0);
\draw[-latex] (0,-1) -- (0,4.1);
\fill[pattern= north east lines] (2,-1) rectangle (4,4);
\fill[pattern= north east lines] (-1,2) rectangle (4,4);
\draw (-1,2) -- (4,2);
\draw (2,-1) -- (2,4);
\node at (1,1) {$\mathcal{D}_{xy}$};
\end{scope}
\begin{scope}[shift={(6,0)}]
\draw[-latex] (-1,0) -- (4.1,0);
\draw[-latex] (0,-1) -- (0,4.1);
\fill[pattern= north east lines] (2,-1) rectangle (4,4);
\draw (2,-1) -- (2,4);
\node at (1,1) {$\mathcal{D}_x$};
\end{scope}
\end{tikzpicture}
\caption{Représentation des domaines d'existence possible pour $X,Y$}
\end{figure}
\subsection{Densité de probabilité} \subsection{Densité de probabilité}
\subsubsection{Espérance de la VA} \begin{defin}
on défini la densité de probabilité conjointe:
\[
f_{XY} = \derivp[^2F_{XY}(x,y)]{x\partial y }
\]
\end{defin}
\begin{prop}
densité de probabilité conjointe et fonction de répartition sont reliées:
\[
\int_{-\infty}^{x^-}\int_{-\infty}^{y^-} f_{XY}(\alpha,\beta)\d \alpha \d \alpha = F_{XY}(x,y)
\]
et :
\[
\int_{-\infty}^{x}\int_{\R}^{}f_{XY}(\alpha,\beta)\d \beta = F_{XY}(x,\infty) =F_X(x)
\]
\end{prop}
\begin{defin}
À partir de la fonction de répartion marginale on peux définir la loi marginale de $X$ :
\[
f_X(x) = \deriv[F_X(x)]{x} =\int_{\R}^{}f_{XY}(x,y)\d y
\]
Et alors la loi conditionelle de $X$ sachant $Y$:
\[
f_{X|Y}(x) = \frac{f_{XY}(x,y)}{f_{Y(y)}}
\]
\end{defin}
\subsection{Indépendance} \subsection{Indépendance}
\begin{defin}
On dit que $X$ et $Y$ sont indépendant:
\begin{description}
\item[$\iff$] $F_{XY}(x,y)=F_X(x)F_Y(y)$
\item[$\iff$] $f_{XY}(x,y)=f_X(x)f_Y(y)$
\end{description}
\end{defin}
\subsection{Changement de VA} \subsection{Changement de VA}
\begin{prop}
On considère :
\[
g
\begin{cases}
\R^2 \to \R^2\\
Z =(X,Y) \mapsto W =(U,V)=g(X,Y)
\end{cases}
\]
Alors:
\[
f_W(w) = f_Z(z)|J|
\]
où :
\[
J =
\begin{pmatrix}
\displaystyle\derivp[x]{u} & \displaystyle\derivp[x]{v}\\[1em]
\displaystyle\derivp[y]{u} & \displaystyle\derivp[y]{v}
\end{pmatrix}
\]
\end{prop}
\begin{rem}
Il est parfois plus simple de calculer:
\[
|K| =\left|
\begin{array}{cc}
\displaystyle\derivp[x]{u} & \displaystyle\derivp[x]{v}\\[1em]
\displaystyle\derivp[y]{u} & \displaystyle\derivp[y]{v}
\end{array}\right|
\]
Au quel cas on a : $f_W(w) = f_Z(z)\frac{1}{|K|}$
\end{rem}
\subsection{Espérance et moments-fonction caractéristique} \subsection{Espérance et moments-fonction caractéristique}
\section{Variable aléatoire vectorielle et réelles} \section{Variable aléatoire vectorielle et réelles}
\subsection{Définition} \subsection{Définition}
\subsection{Fonction de répartition} \subsection{Fonction de répartition}
......
\documentclass[openany]{../../cours} \documentclass[openany]{../../cours}
\usepackage{../../raccourcis} \usepackage{../../raccourcis}
\usepackage{bbold} % indicatrice \usepackage{bbold} % indicatrice
\usetikzlibrary{patterns}
% Mise en page % Mise en page
\title{Notes de Cours} \title{Notes de Cours}
\author{Pierre-Antoine Comby} \author{Pierre-Antoine Comby}
......
...@@ -260,9 +260,7 @@ Les conditions nécessaires pour avoir $D$ minimale sont : ...@@ -260,9 +260,7 @@ Les conditions nécessaires pour avoir $D$ minimale sont :
\subsection{Quantification non uniforme} \subsection{Quantification non uniforme}
\subsection{Algorithme de Lloyd -Max}
\newpage
\subsection*{Algorithme de Lloyd -Max}
\begin{enumerate} \begin{enumerate}
\item Initialisation : $b_0^{(0)} < b_1^{(0)} < \dots < b_n^{(0)}$ choisis arbitrairement, $k=1$. \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é \item $y_i^{(k)}$ obtenus à partir des $b_i^{(k-1)}, i=0 \dots M$ en utilisant la 1ère condition d'optimalité
...@@ -294,7 +292,7 @@ On ne quantifie jamais sur le domaine des pixels, car les ddp y sont immondes. O ...@@ -294,7 +292,7 @@ On ne quantifie jamais sur le domaine des pixels, car les ddp y sont immondes. O
La plupart du temps, les quantifications sont uniformes (JPEG, JPEG200, H264...). On n'utilise des quantifications non uniformes que dans le cas d'applications très précises, où le gain de 2 ou 3 dB sur le $RSB$ est vraiment nécessaire. La plupart du temps, les quantifications sont uniformes (JPEG, JPEG200, H264...). On n'utilise des quantifications non uniformes que dans le cas d'applications très précises, où le gain de 2 ou 3 dB sur le $RSB$ est vraiment nécessaire.
\end{rem} \end{rem}
\newpage
\section{Comportement asymptotique} \section{Comportement asymptotique}
Pour étudier le comportement asymptotique d'un quantificateur, on suppose $M$ grand (les intervalles de quantification seront petits), $f_X(x) \approx f_X(y_i)$ sur $[b_{i-1},b_i]$. On note $\Delta_i = b_i - b_{i-1}$.\\ Pour étudier le comportement asymptotique d'un quantificateur, on suppose $M$ grand (les intervalles de quantification seront petits), $f_X(x) \approx f_X(y_i)$ sur $[b_{i-1},b_i]$. On note $\Delta_i = b_i - b_{i-1}$.\\
...@@ -319,7 +317,6 @@ L(\alpha_1,\dots\alpha_M,\lambda) & = \frac{1}{12}\sum_{i=1}^M\alpha_i^3 + \lamb ...@@ -319,7 +317,6 @@ L(\alpha_1,\dots\alpha_M,\lambda) & = \frac{1}{12}\sum_{i=1}^M\alpha_i^3 + \lamb
\intertext{Les $\alpha_i$ sont donc tous égaux, d'où} \intertext{Les $\alpha_i$ sont donc tous égaux, d'où}
\alpha_i & = \frac{1}{M} \int_{-\infty}^{+\infty} (f_X(x))^{1/3} dx \alpha_i & = \frac{1}{M} \int_{-\infty}^{+\infty} (f_X(x))^{1/3} dx
\end{align*} \end{align*}
\newpage
On avait $\alpha_i^3 = f_X(y_i) \Delta_i^3$. Ainsi, si $f_X(y_i)$ est grand, $\Delta_i$ est petit, et inversement. On avait $\alpha_i^3 = f_X(y_i) \Delta_i^3$. Ainsi, si $f_X(y_i)$ est grand, $\Delta_i$ est petit, et inversement.
%\img{0.5}{2/2/1} %\img{0.5}{2/2/1}
...@@ -339,19 +336,98 @@ Pour une source quelconque, le comportement débit / distorsion sera : ...@@ -339,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 } \] \[ \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} \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:
\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}
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. 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} %\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 : Pour un couple (poids, taille), on peut :
\begin{itemize} \begin{itemize}
\item quantifier indépendamment le poids et la taille avec deux quantificateurs scalaires \item quantifier indépendamment le poids et la taille avec deux quantificateurs scalaires
\item les quantifier simultanément avec une quantification vectorielle \item les quantifier simultanément avec une quantification vectorielle
\end{itemize} \end{itemize}
\subsection*{Algorithme de Linde-Buzo-Gray} \subsection{Algorithme de Linde-Buzo-Gray}
\emph{Similaire à l'algorithme $K$-means}
\newcommand{\x}{\underline{x}} \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. 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.
...@@ -404,28 +480,28 @@ En pratique : ...@@ -404,28 +480,28 @@ En pratique :
\newpage \newpage
\section{Quantification scalable} \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.
\begin{rem} % \end{rem}
Cette méthode permet de réaliser une quantification sans avoir à connaître l'état du canal.
\end{rem}
\end{document} \end{document}
......
...@@ -30,9 +30,53 @@ Avec Matlab, on l'obtient avec : ...@@ -30,9 +30,53 @@ Avec Matlab, on l'obtient avec :
% \end{lstlisting} % \end{lstlisting}
$\gamma_x(k)$ est maximale en 0 et est égale à l'énergie $\sigma^2$ du signal. $\gamma_x(k)$ est maximale en 0 et est égale à l'énergie $\sigma^2$ du signal.
\section{Codage prédictif en boucle ouverte}
\newpage Schéma en boucle ouverte:
\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}$. 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 ...@@ -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$.\\ $\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. 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 \newpage
\section{Prédiction à $p$ pas} \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}} On cherche à prédire $\vec{X_n}$ à partir des échantillons précédents $X_{n-1},\dots,X_{n-p}$.
\newcommand{\Xn}{\underline{X_n}}
\newcommand{\cp}{\underline{c}} \newcommand{\ap}{\vec{a}}
\newcommand{\Rp}{\underline{\underline{R}}} \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} \ap^T=(a_1\dots a_p) \text{ et } \Xn^T = (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}\quad \ap^T=(a_1\dots a_p) \text{ et } \Xn^T = (X_{n-1} \dots X_{n-p})\]
On cherche $\ap$ minimisant On cherche $\ap$ minimisant
\begin{align*} \begin{align*}
......
\documentclass[main.tex]{subfiles} \documentclass[main.tex]{subfiles}
\begin{document} \begin{document}
\section{Codage d'Huffman} \section{Codage d'Huffman}
\subsection{version objet}
\inputminted{python}{../algo_code/huffman.py}
\subsection{version simple}
\inputminted{python}{../algo_code/huffman2.py}
\section{Codage arithétique} \section{Codage arithétique}
\section{Codage LZW} \section{Codage LZW}
\inputminted{python}{../algo_code/LZW.py}
\section{Algorithme LBG}
en 2D , ne pas essayer de tracer les cellule de voronoi
\end{document} \end{document}
%%% Local Variables: %%% Local Variables:
%%% mode: latex %%% mode: latex
%%% TeX-master: t %%% TeX-master: main.tex
%%% End: %%% End:
...@@ -37,10 +37,6 @@ def decode_LZW(code,univers): ...@@ -37,10 +37,6 @@ def decode_LZW(code,univers):
print(dictionnaire) print(dictionnaire)
return ''.join(msg) return ''.join(msg)
code,dictionnaire = code_LZW(message,univers) code,dictionnaire = code_LZW(message,univers)
print(code)
print(dictionnaire)
msg = decode_LZW(code, univers) msg = decode_LZW(code, univers)
print(message) print(code, dictionnaire, msg)
print(msg)
...@@ -28,7 +28,6 @@ def create_tree(table_noeud): ...@@ -28,7 +28,6 @@ def create_tree(table_noeud):
root= Noeud(left=queue[0],right=queue[1]) root= Noeud(left=queue[0],right=queue[1])
return root return root
def gen_code(node,prefix=''): def gen_code(node,prefix=''):
def gen_code_rec(node,prefix=''): def gen_code_rec(node,prefix=''):
if node.left != None: if node.left != None:
...@@ -63,8 +62,6 @@ def make_tree(): ...@@ -63,8 +62,6 @@ def make_tree():
f.write('{rank =same; N' + '; N'.join([n.code for n in table_noeud]) +';}\n') f.write('{rank =same; N' + '; N'.join([n.code for n in table_noeud]) +';}\n')
f.write('}') f.write('}')
subprocess.call('dot -Tpng graph.dot -o graph.png', shell=True) subprocess.call('dot -Tpng graph.dot -o graph.png', shell=True)
print('done')
def decode_huffman(reverse, code): def decode_huffman(reverse, code):
res ="" res =""
...@@ -75,23 +72,10 @@ def decode_huffman(reverse, code): ...@@ -75,23 +72,10 @@ def decode_huffman(reverse, code):
text = text[len(k):] text = text[len(k):]
return res return res
table = [ table = [('A', 25),('B', 20),('C', 15),('D', 12),
('A', 25), ('E', 10),('F', 8),('G', 5),('H', 5)]
('B', 20),
('C', 15),
('D', 12),
('E', 10),
('F', 8),
('G', 5),
('H', 5)]
table_noeud = [Noeud(name=x[0],p=x[1]) for x in table] table_noeud = [Noeud(name=x[0],p=x[1]) for x in table]
print(table_noeud)
root_node= create_tree(table_noeud) root_node= create_tree(table_noeud)
print(root_node)
x= gen_code(root_node) x= gen_code(root_node)
reverse_huffman = {x[i+1]:x[i] for i in range(0,len(x)-1,2)} reverse_huffman = {x[i+1]:x[i] for i in range(0,len(x)-1,2)}
print(table_huffman) print(table_huffman)