diff --git a/455-Codage_Sources/Cours/chap1.tex b/455-Codage_Sources/Cours/chap1.tex index 25d7556..ff47c04 100644 --- a/455-Codage_Sources/Cours/chap1.tex +++ b/455-Codage_Sources/Cours/chap1.tex @@ -1,8 +1,5 @@ \documentclass[main.tex]{subfiles} -% Corrigé jusqu'à II.2 inclus. A 03/03/15 -% Corrigé en entier. A 22/04/15 - \begin{document} \newcommand{\X}{\mathcal{X}} \section{Modèles de sources} @@ -88,10 +85,13 @@ Pour décrire une source de Markov d'ordre 1 stationnaire, il suffit de décrire \end{defin} \begin{exemple} Comment estimer les probabilités de transition ? -on a la séquence : a a b b a c a b b a\\ -\paragraph{Modèle sans mémoire} on estime $\hat{p_a} = \frac{5}{10}$, $\hat{p_b} = \frac{4}{10}$ et $\hat{p_c} = \frac{1}{10}$\\ +on a la séquence : a a b b a c a b b a +\begin{itemize} +\item Modèle sans mémoire: -\paragraph{Modèle de Markov d'ordre 1} + on estime $\hat{p_a} = \frac{5}{10}$, $\hat{p_b} = \frac{4}{10}$ et $\hat{p_c} = \frac{1}{10}$\\ + +\item Modèle de Markov d'ordre 1: \begin{align*} Pr(X_{n}=i,X_{n-1}=j) &= Pr(X_{n}=i|X_{n-2}=j)Pr(X_{n-1}=j)\\ &= \frac{Pr(X_{n}=i,X_{n-2}=j)}{Pr(X_{n-1}=j)} @@ -99,6 +99,7 @@ Pr(X_{n}=i,X_{n-1}=j) &= Pr(X_{n}=i|X_{n-2}=j)Pr(X_{n-1}=j)\\ Avec $j=a$, si $i=a$ alors \[Pr(X_n=a|X_{n-1}=a) = \frac{\text{nombre de paires aa}}{\text{nombre de paires débutant par a}}=\frac{1}{4}\] si $i = b$ alors \[Pr(X_n=b|X_{n-1}=a) = \frac{\text{nombre de paires ab}}{\text{nombre de paires débutant par a}}=\frac{2}{4}\] +\end{itemize} \end{exemple} \begin{defin} On défini la matrice de transition : @@ -143,7 +144,7 @@ où $p_{i,j} = Pr(X_n = i, X_{n-1} = j)$\\ \begin{align*} H(X_1\dots \X_n) &= - \sum_{x_1,\dots x_n \in \X^n} P((X_1 ... X_n )=(x_1 ..x_n))\log_2(P((X_1 ... X_n )=(x_1 ..x_n)))\\ \intertext{On a modèle d'ordre 1 donc: } - &= \sum_{x_1...x_n\in\X^n}P((X_1 ... X_n )=(x_1 ..x_n))\left(\sum_{i=2}^{n}\log_2(P(X_i=x_i|X_{i-1}=x_{i-1}))+\log_2(P_rX_1=x_1)\right)\\ + &= \sum_{\vec{x}\in\X^n} P(\vec{X}=\vec{x})\left(\sum_{i=2}^{n}\log_2(P(X_i=x_i|X_{i-1}=x_{i-1}))+\log_2(P(X_1=x_1))\right)\\ &=-\sum_{i=2}^{n}\sum_{x_i,x_{i-1}\in\X^2}P(X_i=x_i,X_{i-1}=x_{i-1})\log_2(P(X_{i}=x_i|X_{i-1}=x_{i-1})) \intertext{Pour une chaine stationnaire} &= (n-1)\sum_{x_1,x_2\in\X^2}P(X_1=x_1,X_2=x_2)\log_2(P(X_1=x_1|X_2=x_2))+H(X_1)\\ diff --git a/455-Codage_Sources/Cours/cours0.tex b/455-Codage_Sources/Cours/cours0.tex deleted file mode 100644 index 2b18e96..0000000 --- a/455-Codage_Sources/Cours/cours0.tex +++ /dev/null @@ -1,98 +0,0 @@ -\documentclass{../../cours.cls} -\input{../../preambule/preambule} - -\newcommand{\nom}{Cours 0 : Introduction - Motivation} -\renewcommand{\nomentete}{UE455 - \nom} - -\renewcommand{\thesection}{\Roman{section}} - - - -\begin{document} - -\titre{\nom} - -\paragraph{Pourquoi a-t-on besoin du codage de source ?} - -Un téléviseur HD affiche des images de 1920 x 1080 pixels. Chaque pixel est formé d'une combinaison de 3 couleurs RGB, chacune des couleurs étant codée par un nombre sur 8, 10 ou 12 bits. À raison de 25, 50 ou 60 images par seconde, le débit nécessaire est R= 1920 x 1080 x 3 x 8 x 25 = 1,22 Gbits par seconde. \\ - -En 4G, le débit maximal est de 100 Mbits par seconde (quand on est seul dans la zone) et en ADSL, il est de 20 Mbits par seconde. - -Il faut compresser les données avec un facteur 100 au minimum.\\ - -\emph{"Le taux minimum c'est 25 images par seconde, pour pas avoir l'impression de regarder un dessin animé japonais."} -\emph{"Des émissions mettent volontairement moins pour qu'on ait l'impression d'avoir trop bu en regardant la télé."}\\ - -\paragraph{Comment faire de la compression?} Quelles propriétés du signal vidéo peut-on utiliser pour réaliser de la compression? -On utilise la redondance statistique. Par exemple, pour la vision (ou tech 3D) on utilise les petites différences pour obtenir la profondeur. De la même façon, en stéréo on a deux micros pour l'enregistrement. C'est la ressemblance entre les deux signaux qui nous intéresse ici pour effectuer la compression.\\ - -La compression est possible à cause de plusieurs propriétés: -\begin{itemize} -\item La corrélation temporelle (ressemblance entre deux image successives d'une vidéo ou échantillons audio successifs). -\item La corrélation spatiale (le fait que certaines zones présentes sont relativement uniforme, ressemblance entre deux pixels voisins). -\item La corrélation spectrale (ressemblance entre les composantes R, G et B d'une image). -\item Les propriétés statistiques du signal (un texte contient plus de "e" que de "z" en général). -\end{itemize} - -\paragraph{Exemple d'une chaîne de compression vidéo} -On considère une vidéo mono-vue (pas en 3D) codée en niveaux de gris.\\ - -\underline{Transformation}: On applique une transformation à l'image, c'est à dire que l'on cherche à exprimer les blocs de l'image dans une base autre que la base canonique, pour permettre une compression plus facile.\\ -Par exemple : - -$\begin{pmatrix}1&1\\1&1\end{pmatrix}$ permet de décrire les zones constantes - -$\begin{pmatrix}1&1\\-1&-1\end{pmatrix}$ pour décrire les variations verticales, et - -$\begin{pmatrix}1&-1\\1&-1\end{pmatrix}$ pour une variation horizontale.\\ - -\underline{Quantification}: Elle permet de représenter les pixels transformés sur un nombre limité de bits (et d'en mettre plein à 0). Cette opération est irréversible.\\ - -\underline{Codeur entropique}: Il exploite la redondance statistique des coefficients quantifiés (il prend les successions et les compresse). On ne peut pas encore envoyer les données sur le réseaux, il faut appliquer un standard de compression.\\ - -\underline{Standard de compression}: Détermine la manière dont les bits en sortie sont organisés. (constitue les paquets, les numérote etc.)\\ - - -On peut alors transmettre l'image. Une fois récupérée, on applique un décodage entropique, puis un désindexation et enfin une transformation inverse.\\ - -La désindexation permet d'obtenir à partir d'un coefficient quantifié, un nombre qui a la même dynamique qu'un coefficient transformé.(exemple: permet de retrouver un nombre à la bonne échelle, même si ce nombre n'est pas exactement le même). - -\imgt{0/1.png} -\imgt{0/2.png} - - -\paragraph{Comment transmettre une vidéo?} appliquer ce shcéma (JPEG) à chaque image et transmettre? non, trop lourd. -On peut comparer l'image 2 à l'image précédente non pas 1 mais $\hat{1}$ l'estimée de l'image reçue par le récepteur, et l'on envoie la différence. Puis pour envoyer l'image 3, on estime la différence précédente, on y ajoute l'image estimée de la première image et on calcule la différence, que l'on envoie au travers des différentes transformations. Et ainsi de suite.\\ - -De ce fait, au niveau du récepteur on mémorise l'image précédente à laquelle on ajoute les différences.\\ - -Cette structure de codeur était celle des premiers codeurs vidéo (H261, MPEPZ). H265 encore utilisé a aussi cette structure.\\ - -\noindent Notations :\\ -$I_n$: image numéro n\\ -$\hat{I_n}$ : image numéro n au décodeur\\ -$f(\hat{I_n}) = \tilde{I_{n+1}}$: image n+1 prédite\\ - - -On va étudier deux cas : -\begin{enumerate} -\item pas de décodeur au niveau du codeur mais on a un prédicteur. -\begin{align*} -\tilde{I_{n+1}} &= T^{-1}(Q^{-1}(Q(T(I_{n+1} - f(I_n))))) + \tilde{I_{n+1}}\\ -&= I_{n+1} - f(I_n) + E_{n+1} + \tilde{I_{n+1}} \text{ avec, E le bruit} -\end{align*} -$f(I_n)$ et $\tilde{I_{n+1}}$ ne se compensent pas totalement. -\bigbreak - -\item On fait la prédiction a partir des images codées précédemment. -\begin{align*} -\tilde{I_{n+1}} &= T^{-1}(Q^{-1}(Q(T(I_{n+1} - f(\hat{I_n}))))) + f(\hat{I_n}\\ -&= I_{n+1} - f(\hat{I_n}) + E_n +f(\hat{I_n})\\ -&= I_{n+1} + E_n -\end{align*} -L'utilisation d'un décodeur au niveau du codeur (décodeur local) permet d'éviter une accumulation des erreurs au niveau des images décodées. -\end{enumerate} - -\imgt{0/3.png} - -\end{document} diff --git a/455-Codage_Sources/Cours/main.tex b/455-Codage_Sources/Cours/main.tex index 56a3adc..dc60d4d 100644 --- a/455-Codage_Sources/Cours/main.tex +++ b/455-Codage_Sources/Cours/main.tex @@ -1,9 +1,10 @@ \documentclass{../../cours} \usepackage{../../raccourcis} - \let\framed\relax \let\endframed\relax - \let\shaded\relax \let\endshaded\relax - \let\leftbar\relax \let\endleftbar\relax - \let\snugshade\relax \let\endsnugshade\relax +% bug avec minted sinon +\let\framed\relax \let\endframed\relax + \let\shaded\relax \let\endshaded\relax + \let\leftbar\relax \let\endleftbar\relax + \let\snugshade\relax \let\endsnugshade\relax \usepackage{minted} % Mise en page \renewcommand{\vec}{\mathbf} @@ -11,26 +12,7 @@ \author{Pierre-Antoine Comby} \teacher{Michel Kieffer} \module{455\\ Codage de source} -% \usepackage{listings} -% \definecolor{mygreen}{RGB}{28,172,0} % color values Red, Green, Blue -% \definecolor{mylilas}{RGB}{170,55,241} \begin{document} -% \lstset{language=Matlab, % -% % basicstyle=\color{red}, -% breaklines=true,% -% morekeywords={matlab2tikz}, -% keywordstyle=\color{blue},% -% morekeywords=[2]{1}, keywordstyle=[2]{\color{black}}, -% identifierstyle=\color{black},% -% stringstyle=\color{mylilas}, -% commentstyle=\color{mygreen},% -% showstringspaces=false,%without this there will be a symbol in the places where there is a space -% numbers=left,% -% numberstyle={\tiny \color{black}},% size of the numbers -% numbersep=9pt, % this defines how far the numbers are from the text -% emph=[1]{for,end,break},emphstyle=[1]\color{red}, %some words to emphasise -% %emph=[2]{word1,word2}, emphstyle=[2]{style}, -% } \maketitle \tableofcontents \chapter*{Rappel de probabilité}