From 11311de7a5f3bbcf17b533c24f1f7c44cc824dec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20El=20Kharroubi?=
 <michael.el-kharroubi@hesge.ch>
Date: Tue, 9 Feb 2021 17:34:36 +0100
Subject: [PATCH] =?UTF-8?q?Ajout=20partie=20convolution=20tp=20int=C3=A9gr?=
 =?UTF-8?q?ales?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../tpIntegrales/tp_integrales_conv.md        | 129 +++++++++++++++++-
 1 file changed, 127 insertions(+), 2 deletions(-)

diff --git a/travaux_pratiques/tpIntegrales/tp_integrales_conv.md b/travaux_pratiques/tpIntegrales/tp_integrales_conv.md
index b99fa40..47fa769 100644
--- a/travaux_pratiques/tpIntegrales/tp_integrales_conv.md
+++ b/travaux_pratiques/tpIntegrales/tp_integrales_conv.md
@@ -1,6 +1,7 @@
 ---
 # author:
 # - Orestis Malaspinas
+# - Michaël El Kharroubi (update)
 title: Travail pratique sur les intégrales
 autoSectionLabels: true
 autoEqnLabels: false
@@ -91,7 +92,9 @@ Que constatez-vous? Pouvez-vous mesurer le taux de décroissance de l'erreur?
 
 Nous voulons à présent essayer de voir comment utiliser la convolution pour filtrer un signal simple.
 
-## La convolution continue
+## Convolution en 1 dimension
+
+### La convolution continue
 
 Le signal que nous souhaitons filtrer est définit par la fonction $s(x)$
 \begin{equation}
@@ -112,7 +115,7 @@ A partir du résultat de la convolution, déterminer la relation entre $\psi$ et
 pour enlever complètement la composante $\omega_1$ (respectivement $\omega_2$) du signal $s(x)$.
 Utiliser ces relations pour illustrer le filtrage de $s(x)$ pour différentes valeurs de $\omega_1$ et $\omega_2$.
 
-## La convolution discrète
+### La convolution discrète
 
 Utiliser une des méthodes implémentées dans le chapitre précédent pour calculer numériquement
 le filtrage de $s(x)$ par la fonction $f(x)$ pour différentes valeurs de $\omega_1$, $\omega_2$ et $\psi$ (essayer par exemple de reproduire
@@ -123,8 +126,130 @@ h(x)=\frac{1}{\sqrt{2\pi\psi}}\exp(-x^2/(2\psi)).
 \end{equation}
 Voyez-vous des différences?
 
+## Convolution en 2 dimensions
+
+### Théorie
+
+Dans le cadre de ce tp, nous allons nous concentrer sur la convolution discrète d'un signal en deux dimensions. Pour représenter notre signal en deux dimmensions, nous pouvons utiliser des matrices. Par exemple :
 
+\begin{equation}
+\label{eqn:mat_exemple}
+A=\begin{pmatrix}
+a_{-1,-1} & a_{-1,0} & a_{-1,1}\\
+a_{0,-1} & a_{0,0} & a_{0,1}\\
+a_{1,-1} & a_{1,0} & a_{1,1}
+\end{pmatrix} ,\quad B=\begin{pmatrix}
+b_{-2,-2} & b_{-2,-1} & b_{-2,0} & b_{-2,1} & b_{-2,2}\\
+b_{-1,-2} & b_{-1,-1} & b_{-1,0} & b_{-1,1} & b_{-1,2}\\
+b_{0,-2} & b_{0,-1} & b_{0,0} & b_{0,1} & b_{0,2}\\
+b_{1,-2} & b_{1,-1} & b_{1,0} & b_{1,1} & b_{1,2}\\
+b_{2,-2} & b_{2,-1} & b_{2,0} & b_{2,1} & b_{2,2}
+\end{pmatrix}
+\end{equation}
+
+Pour rappel, la formule du produit de convolution en 1 dimension d'un signal discret est : 
+
+\begin{equation}
+(s\ast u)[t] =\sum_{n=-N}^{+N} s[n]*u[t-n]
+\end{equation}
+
+Lorsque l'on rajoute une nouvelle dimmension la formule devient, avec $-M$ l'indice de ligne le plus petit de la matrice A, et $+M$ le plus grand, ainsi que $-N$, $+N$ pour les indices de colonne : 
+
+\begin{equation}
+(A\ast B)[i,j] =\sum_{m=-M}^{+M}\sum_{n=-N}^{+N} A[m, n]*B[i-m,j-n]
+\end{equation}
+
+Si on reprend par exemple les matrices $A$ et $B$ de l'équation \ref{eqn:mat_exemple}, et qu'on choisit le centre (1,1), on obtient :
+
+\begin{equation}
+\begin{aligned} 
+(A\ast B)[1,1] =\sum_{m=-1}^{+1}\sum_{n=-1}^{+1} A[m, n]*B[1-m,1-n]\\
+(A\ast B)[1,1] = a_{-1,-1}\cdot b_{2,2}+\dots +a_{1,1}\cdot b_{0,0}\\
+\end{aligned}
+\end{equation}
 
+Si l'on essaye de calculer $(A\ast B)[2,2]$, on découvre qu'il nous faut des valeurs qui ne sont pas dans notre matrice, comme par exemple, $b_{3,3}$. Voici 3 solutions différentes pour définir nos valeurs manquantes :
+
+- Les valeurs en dehors de la matrice sont nulles, $b_{3,3} = 0$. 
+- Recopier la valeur du voisin le plus proche, $b_{3,3} = b_{2,2}$. 
+- Définir que notre signal est périodique, on a donc $b_{3,3} = b_{-2,-2}$.
+
+### Exercice
+
+Vous allez devoir implémenter une solution de traitement d'images en nuances de gris basé sur la convolution de signal en deux dimmensions. Le language imposé est le C. Vous devrez rendre le code ainsi qu'un rapport succint (moins de 8 pages par groupe).
+
+Pour commencer, vous devrez implémenter un outil permettant de lire des images au format PGM. Vous utiliserez le format binaire pour stocker la valeur de vos pixels. Votre programme devra respecter les spécifications du format PGM ([http://netpbm.sourceforge.net/doc/pgm.html](http://netpbm.sourceforge.net/doc/pgm.html)).
+
+Pour visualiser votre image, vous pouvez à choix l'afficher avec la librairie SDL (bonus + 0.3 pt sur la note finale) ou alors la sauvegarder au format PGM, et utiliser un outil compatible (par ex: ImageMagick).
+
+#### Partie 1
+
+Calculez à la main le produit de convolution de ces deux matrices, en utilisant la méthode de votre choix pour la gestion des bords :
+
+\begin{equation*}
+A=\begin{pmatrix}
+0 & 1 & 0\\
+-1 & 0 & -1\\
+0 & 1 & 0
+\end{pmatrix} ,\quad B=\begin{pmatrix}
+1 & 2 & 3\\
+4 & 5 & 6\\
+7 & 8 & 9
+\end{pmatrix}
+\end{equation*}
+
+#### Partie 2
+
+Appliquez les 5 filtres ci-dessous en faisant le produit $F_n\ast \mathcal{I}$, où $\mathcal{I}$ est l'image "part2.pgm" jointe à l'énnoncé. Expliquez avec vos mots l'effet de ces filtres, est essayant d'être le plus descriptif possible (évitez les phrases de 3 mots).
+
+\begin{equation*}
+F_0 = \begin{pmatrix}
+0 & 0 & 0\\
+0 & 1 & 0\\
+0 & 0 & 0
+\end{pmatrix}
+F_1 = \frac{1}{25}\begin{pmatrix}
+1 & 1 & 1 & 1 & 1\\
+1 & 1 & 1 & 1 & 1\\
+1 & 1 & 1 & 1 & 1\\
+1 & 1 & 1 & 1 & 1\\
+1 & 1 & 1 & 1 & 1
+\end{pmatrix}
+F_2 = \frac{1}{256}\begin{pmatrix}
+1 & 4 & 6 & 4 & 1\\
+4 & 16 & 24 & 16 & 4\\
+6 & 24 & 36 & 24 & 6\\
+4 & 16 & 24 & 16 & 4\\
+1 & 4 & 6 & 4 & 1
+\end{pmatrix}
+\end{equation*}
+\begin{equation*}
+F_3 = \begin{pmatrix}
+0 & -1 & 0\\
+-1 & 5 & -1\\
+0 & -1 & 0
+\end{pmatrix}
+F_4 = \begin{pmatrix}
+0 & -1 & 0\\
+-1 & 4 & -1\\
+0 & -1 & 0
+\end{pmatrix}
+\end{equation*}
+
+\newpage
+#### Partie 3
+
+Récupérez sur cyberlearn l'image nommée "part3_\<n\>.pgm", où n est votre numéro de groupe. Cette image a été fortement bruitée, heureusement (quelle chance vraiment :)), le bruit est périodique, et peut être supprimé à l'aide d'un filtre moyenneur.
+
+\begin{equation*}
+F = \frac{1}{9}\begin{pmatrix}
+1 & 1 & 1\\
+1 & 1 & 1\\
+1 & 1 & 1
+\end{pmatrix}
+\end{equation*}
+
+Pour débruiter l'image vous devez lui appliquer le filtre $F$. Afin d'éviter les problèmes liés à la gestion des bords, vous n'afficherez que la partie interne de l'image filtrée. Autrement dit, vous supprimerez les 2 premières ainsi que les 2 dernières lignes et colonnes (si votre image fait 100x100, vous garderez le centre de taille 96x96).
 
 [^1]: Vous retrouverez les formules dans le polycopié.
 [^2]: Exceptionnellement un stylo est également toléré.
\ No newline at end of file
-- 
GitLab