\documentclass[11pt]{article}
\usepackage{epsfig}
\usepackage{graphics}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}

\textheight22.5cm
\textwidth16cm
\hoffset-2cm
\voffset-2cm

\pagestyle{empty}

\begin{document}
\title{\huge \bf TTI: TP}
\author{\huge \bf Analyse en ondelettes}
\date{}
\maketitle
\thispagestyle{empty}

\section{Principe de l'analyse en ondelettes via des bancs de filtres}

\begin{figure}[h]
  \centerline{ \includegraphics[width=10cm]
    {analyse_ondelettes_zoom.eps} }
\caption{\label{fig: analyse}Principe de l'analyse en ondelettes. $B$ et $H$
    sont des filtres mono-dimensionnels respectivement passe-bas et passe-haut}
\end{figure}

L'analyse en ondelettes consiste à réaliser une analyse temps-fréquence.
Appliquée à un image, elle revient à réaliser des opérations successives de
filtrage et de sous-échantillonnage mono-dimensionnel en utilisant d'une part
un filtre passe-bas $B$ et d'autre part un filtre passe-haut $H$. Ces deux traitements
sont effectués en premier lieu sur les lignes de l'image puis sur les colonnes.

Dans le cas des ondelettes orthogonales, les coefficients du filtre $H$ se
déduisent simplement de ceux du filtre $B$ :
\begin{equation}
\forall i, \ \ H(i) = (-1)^i \cdot B(i)
\end{equation}
Cette analyse en ondelettes aboutit à la création d'une image composée de
quatre sous-imagettes correspondant aux coefficients de l'analyse en
ondelettes. L'intérêt de l'analyse en ondelettes réside dans le fait qu'il est
possible de reconstruire l'image originale à partir de l'image des
coefficients.

Dans ce tp, nous nous intéresserons à la programmation de la phase
d'analyse. Une librairie réalisant la synthèse est également fournie pour
vérifier les propriétés de reconstruction parfaite.

\section{Programmation de de l'analyse en ondelettes à un niveau}
Il est donc demandé de programmer la phase d'analyse en ondelettes. Pour cela,
on programmera trois fonctions différentes:
\begin{itemize}
\item une fonction {\bf index} permettant de prendre en compte les effets de
  bord par périodisation du signal ;
\item une fonction {\bf ligneFWT} réalisant simultanément le filtrage et
  sous échantillonnage pour les mono-dimensionnels filtres {\bf B} et {\bf H} ;
\item une fonction {\bf Ondelette} effectuant l'analyse sur les lignes
  puis sur les colonnes.
\end{itemize}
Il faudra aussi stocker les coefficients de l'analyse en ondelettes de telle
manière à obtenir une image du même type que celle de la figure {\ref{fig: analyse}
Des prototypes de ces fonctions sont données dans le fichier
{\bf ondelette.cpp}. Pour les procedures d'entree sortie vous devrez utiliser la librairie
{\em VAMP}.

Par ailleurs, la fonction {\bf Inverse} réalisant la reconstruction
d'une image à partir de l'image des coefficients d'ondelettes est fournie dans
le fichier {\bf ondelette.cpp} ainsi que les classes {\bf filtre} et
{\bf ensFiltre.} qui permettent de définir les filtres associés au type
d'ondelettes considérées.

\section{Exemple d'ondelettes orthogonales}

\subsection{Interprétation des coefficients en ondelettes}
Donnez une interprétation des quatre sous-imagettes de coefficient en
ondelettes ${\bf BF}$, ${\bf CV}$, ${\bf CH}$ et ${\bf CD}$. Argumentez.

\subsection{Ondelette de Haar  et Ondelette de Daubechies}
Dans la suite, nous allons étudié deux ondelettes orthogonales différentes :
l'ondelette de Haar et une des ondelettes proposées par Daubechies.

L'ondelette de Haar est défini par le filtre suivant:
\begin{equation}
B_{Haar} =\left [
\begin{array}{cc}
\sqrt{2}& \sqrt{2}\\
\end{array} \right ]
\end{equation}

L'ondelette de Daubechies utilisée a la forme suivante:
\begin{equation}
\begin{array}{crrrrrc}
B_{Daubechies} = [ &
0.16010239 & 0.60382926 & 0.724308528 & 0.13842814 & -0.24229488 \\
& -0.03224486&  0.07757149 & -0.00624149 & -0.01258075 & 0.003335725 & ]\\
\end{array}
\end{equation}
Les coefficients des filtres $B_{Haar}$ et $B_{Daubechies}$ sont sauvegardés
  dans les fichiers  {\em ./filtres/haar.vec} et {\em ./filtres/daub.vec}.

Pour ces deux ondelettes, appliquez l'analyse en ondelettes sur une image
test. Vérifiez que la reconstruction est parfaite.

\section{Compression d'images et ondelettes}

\subsection{Principe}

Les imagettes {\bf CV}, {\bf CH}, {\bf CD} correspondent à une convolution de
l'image par des filtres passe-haut. Elles peuvent donc être considérées comme
des images de détail. En les visualisant, on s'aperçoit qu'une grande partie
des coefficients d'ondelettes est nulles (zones noires dans l'image).  A des
fins de compression, on peut utiliser cette propriété en effectuant un
seuillage des coefficients d'ondelette associés aux hautes fréquences.

Soit $c=(c_k)$ l'ensemble des coefficients d'ondelettes relatifs aux hautes
fréquences et $c'=(c'_k)$ les coefficients seuillés. Pour un seuil $\epsilon$
fixé, on envisagera les deux type de seuillage suivants:
\begin{equation}
A: \forall k, \ \ \left \{
\begin{array}{cccl}
\mbox{si }& |c_k| < \epsilon & \mbox{alors }& c'_k = 0\\~\\
\mbox{si }& |c_k| > \epsilon & \mbox{alors }& c'_k = c_k\\
\end{array} \right.
\end{equation}
\begin{equation}
B: \forall k, \ \ \left \{
\begin{array}{cccl}
\mbox{si }& |c_k| < \epsilon & \mbox{alors }& c'_k = 0\\~\\
\mbox{si }& |c_k| > \epsilon & \mbox{alors }& c'_k = \displaystyle c_{max}\frac{c_k -\epsilon}{c_{max}-\epsilon}\\
\end{array} \right.
\mbox{ avec } c_{max} = \max_k |c_k|
\end{equation}

\subsection{Résultats expérimentaux}
Étudiez l'évolution de la qualité de la reconstruction après seuillage des
coefficients d'ondelettes en fonction de la valeur du seuil, d'une part
qualitativement (visuellement), d'autre part quantitativement en calculant
l'erreur quadratique moyenne sur l'image d'erreur.

\section{Analyse en ondelettes}
En pratique, l'analyse en ondelettes est effectuée à plusieurs niveaux de
résolution pour réaliser une analyse multirésolution soit en appliquant une
décomposition en ondelettes ou une décomposition en paquet d'ondelettes.

\subsection{Décomposition en ondelettes}
En appliquant successivement une analyse en ondelettes sur l'imagette $BF$ des
coefficients d'ondelettes, on réalise une décomposition en
ondelettes. Programmer une fonction permettant de réaliser une décomposition en
ondelettes à $n$ niveaux. On modifiera également la méthode de synthèse pour
prendre en compte le nombre de niveaux dans la décomposition en ondelettes.

\subsection{Décomposition en paquet ondelettes}
Il est également possible d'appliquer une décomposition en ondelettes sur chaque
sous-imagettes. Dans ce cas, on parle de décomposition en paquet d'ondelettes.

Programmer une méthode de décomposition en paquet d'ondelettes à $n$ niveaux.

\subsection{Résultats expérimentaux}
Étudiez également de la même façon que précédemment l'effet du seuillage sur
les coefficients d'ondelettes hautes fréquences.

\end{document}

