\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{prop} 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{prop} \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{prop} 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{prop} \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} \section{Transformée de Karhuman-Loeve} On considère une source vectorielle, centrée et de matrice de covariance $\vec{\Gamma}$: \[ \vec{\Gamma} = E(\vec{X.X}^T) \] \begin{rem} $\vec{\Gamma}$ est symétrique. \end{rem} On cherche une transformée discrète optimale décrite par $\vec{A}$ et une transformée inverse décrite par $\vec{B}$. qui soit \emph{optimale} au sens de l'EQM. de reconstruction lorsqu'on réalise une réduction à $m$ composantes du vecteur transformé. Le vecteur transmformé est : \[ \vec{t} = \vec{A}\vec{x} \] On ne garde que les $m$ premières composantes de $\vec{T}$ pour obtenir $\vec{t}_{m}$. \[ \vec{t_m} = \vec{I_m} \vec{t} \quad \text{ avec } \vec{I_m} = diag(\underbracket{1, ... ,1 }_{m},\underbracket{0, ..., 0}_{N-m}) \] Le vecteur reconstruit est alors : \[ \hat{\vec{x_m}} =\vec{B}\vec{t_m} = \vec{B}\vec{I}_m\vec{t} =\vec{B}\vec{I_m}\vec{A}\vec{x} \] \begin{thm} La matrice de transformation directe qui minimise l'EQM de reconstruction lors d'une reduction à m composante d'une source $X$ en considérant la transformée inverse est telle que \[\vec{B} = \vec{A}^T\] et où $\vec{A}$ est formée des vecteurs propres de $\vec{\Gamma}$ rangés par valeurs propres décroissantes. \end{thm} \begin{proof} À partir de l'expression de l'EQM on a: \begin{align*} J_m & = \frac{1}{N}E((\vec{x}-\vec{\hat{x}})^T(\vec{x}-\vec{\hat{x}})) \\ & = \frac{1}{N} tr(E((\vec{x}-\vec{\hat{x}})(\vec{x}-\vec{\hat{x}})^T)) \\ & = \frac{1}{N} tr(\vec{t}-\vec{BIA}E(\vec{xx}^T)(\vec{t}-\vec{BI_mA})^T) \\ & = \frac{1}{N} tr(\vec{t}-\vec{BIA}\vec{\Gamma}(\vec{t}-\vec{BI_mA})^T) \\ & = \frac{1}{N} \left[tr(\vec{\Gamma}) - tr(\vec{BI_mA\Gamma})- tr(\vec{\Gamma}(\vec{BI_mA})^T)+tr(\vec{BI_mA\Gamma A^TI_mB}) \right] \\ \intertext{À partir des propriétés élémentaire de la trace (symétrie, bilinéaire)} & = \frac{1}{N}\left[tr(\vec{\Gamma})- tr(\vec{A\Gamma B I_m}) - tr(\vec{AI_mB\Gamma}) + tr(\vec{BI_mA\Gamma A^TI_mB}^T)\right] \end{align*} \begin{lemme} Pour une fonction matricielle $\vec{Y} = f(\vec{A}) $ on a : \[ D_{\vec{A}}(\vec{B}) =\derivp[tr(\vec{Y})]{A} \] qui est la matrice contenant les dérivées de $tr(\vec{A})$ par rapport aux composante de $\vec{A}$. Alors : \[ D_{\vec{A}}(\vec{AB}) = \derivp[tr(\vec{AB})]{A}= \vec{B}^T \] \[ D_{\vec{A}}(\vec{ABA}^T) = \vec{AB}^T+\vec{AB} \] \[ D_{\vec{A}}(\vec{CABA^TD}) = \vec{C}^T\vec{D}^T\vec{AB}^T+\vec{DCAB} \] \end{lemme} Avec le lemme on a : \begin{align*} \derivp[J_m]{\vec{A}} = \frac{1}{N}\left[ \vec{0} - 2\vec{\Gamma BI_m}^T+ (\vec{BI_m})^T(\vec{I_mB}^T)^T\vec{A}\vec{\Gamma}+(\vec{I_mB^T})(\vec{BI_m})\vec{A\Gamma} \right]=0 \end{align*} On en déduit: \[ \vec{I_mB}^T(\vec{I}-\vec{I_mA})\vec{\Gamma} = \vec{0} \tag{(1)} \] On réecrit alors le critère sous la forme: \begin{align*} J_m &= \frac{1}{N} tr((\vec{I}-\vec{BI_mA})\vec{\Gamma}) - \frac{1}{N}tr((I-\vec{BI_mA})(\vec{BI_mA})^T) \\ &= \frac{1}{N} tr((\vec{I}-\vec{BI_mA})\vec{\Gamma}) - \frac{1}{N} tr(\vec{A}^T\vec{I_m}\vec{B}^T(\vec{I-BI_mA})) \end{align*} En général $\Gamma$ etant inversible, en utilisant (1) on déduit : Si $m=n$ on doit avoir $J_n = 0$ soit : \[ tr((\vec{I}-\vec{BA})\vec{\Gamma}) = 0 \] Une condition suffisante est que: \[ \vec{A} = \vec{B}^{-1} \] Avec (1), mais pour tout $\vec{\Gamma}$ on a alors : \footnote{À développer : écriture par bloc des matrice, $B^TB$ est diagonale } \[ \vec{I_mBB}^T = \vec{I_mB}^T\vec{B}\vec{I_m} \] On a alors: \[ I_m = \frac{1}{N}tr(\vec{I}-\vec{BI_mA}\vec{\Gamma}) \] Si on prend une matrice $\vec{D}$ diagonale inversible et qu'on remplace $\vec{B}$ par $\vec{BD}$ $\vec{A}= \vec{B}^{-1}$ va être remplacé par $\vec{D}^{-1}\vec{A}$ \begin{align*} J_m &= \frac{1}{N}((\vec{I}-\vec{BDI_mD}^{-1}\vec{A})\vec{\Gamma}) \\ &= \frac{1}{N}((\vec{I}-\vec{BI_mA})\vec{\Gamma}) \end{align*} Cette propriété permet de choisir $\vec{B}$ unitaire c'est à dire $\vec{B}^T\vec{B} = \vec{I} $ soit $\vec{A}=\vec{B}$. Alors on remplace dans l'expression de l'EQM: \[ J_m = \frac{1}{N}tr(\vec{\Gamma}) - \frac{1}{N}tr(\vec{A}^T\vec{I_m}\vec{A}\vec{\Gamma}) \] Ainsi pour minimiser l'EQM il faut minimiser : \[ tr(\vec{A}^T\vec{I_m}\vec{A}\vec{\Gamma}) = tr(\vec{I_mA\Gamma A}^T) \] On note $\vec{a_1}^T ... \vec{a_N}^T $ les lignes de $\vec{A}$ . On a alors: \[ K_m = tr(\vec{I_mA\Gamma A^T}) = \sum_{i=1}^{m}\vec{a_i}^T\vec{\Gamma}\vec{a_i} \] qu'il faut minimiser sous le contraintes: \[ \vec{a_i}^T\vec{a_i}, \forall i \in [1 ... N] \] On introduit donc le lagrangien: \[ \mathcal{L}(\vec{a_1} ...\vec{a_N},\lambda_1 ... \lambda_N) = \sum_{i=1}^{m}\vec{a_i}^T\vec{\Gamma}\vec{a_i} - \sum_{i=1}^{N}\lambda_i(\vec{a_i}^T\vec{a_i}-1) \] On a donc: \[ \derivp[\mathcal{L}]{\vec{a_i}}= \begin{cases} 2\vec{\Gamma}\vec{a_i}-2\lambda_ia_i & = 0 \quad \forall i \in [1...m] \\ -2 \lambda_i\vec{a_i} & = 0 \quad \forall i \in [m+1...N] \end{cases} \] On a donc $\vec{\Gamma}\vec{a_i} = \lambda_i \vec{a_i}$. Les $\vec{a_i}$ sont les vecteurs propres de $\Gamma_i$ associées aux valeurs propres $\lambda_i$. Alors \[ K_m = \sum_{i=}^{m}\lambda_i \] qui est maximisé lorsque les $vec{a_i}$ sont associés aux $m$ plus grandes valeurs propres de $\Gamma$. \begin{flushright} Ouf ! \end{flushright} \end{proof} \subsection{Mise en oeuvre pratique} On dispose d'un signal sonore $ x_1 ... x_M$ centré. \begin{enumerate} \item On découpe le signal en vecteur de $N$ composante $\vec{x_1} = (x_1 ... x_N),\vec{x_2} = (x_{N+1} ... x_{2N}) ... \vec{x_K}$. \item On calcule: \[ \vec{\hat{\Gamma}}\frac{1}{K}\sum_{k=1}^{K}\vec{x_k}\vec{x_k}^T \] \item On calcule les vecteurs propres $\vec{\gamma_1 ... \gamma_N}$ de $\vec{\Gamma}$ associé aux valeurs propres $\lambda_1 \ge ... \lambda_N$ \item On construit la matrice de transformation : \[ \vec{A} =\vect{\vec{\gamma_1}^T\\ \vec{\gamma_2}^T\\ \vdots \\ \vec{\gamma_N}^T} = \vec{B}^T \] \item calculer: \[ \vec{t_k} = \vec{A}\vec{x_k} \quad \forall k \in [1... K] \] \item Mettre à 0 les $N-m$ derniers coefficient de $\vec{t_k}$. \item Calculer \[ \hat{\vec{x_k^{(m)}}} =\vec{B} \vec{t_k^{(m)}} \quad \forall k \in [1... K] \] \end{enumerate} \begin{rem} La KLT a cependant des défauts: \begin{itemize} \item Elles dépend du signal à compresser. \item Elle n'est pas séparable. \end{itemize} De ce fait elle est très peu utilisée en compression d'image \end{rem} \section{Transformée sous optimales} \subsection{Transformée en cosinus discrete (DCT)} La DCT est une très bonne alternative à la KLT. \begin{defin} La transformée en cosinus discrète a pour matrice de transformation: \[ \vec{u_{i,k}} =\alpha_i \cos \frac{\pi(2k-1)i}{2N} \] Avec $\alpha_0 =\frac{1}{\sqrt{N}}$ et $\alpha_i = \sqrt{\frac{2}{N}}$. \end{defin} \begin{rem} La DCT est séparable. En terme de compaction d'énergie elle est presque aussi efficace que la KLT. Elle est utilisée en compression audio (mp4) vidéo (H261 à H265) \end{rem} \end{document} %%% Local Variables: %%% mode: latex %%% TeX-master: "main" %%% End: