Exercice 1 G´
en´
eration de la base de patchs
On va ici mettre au point le code pour extraire une base de patchs de l’enemble de la base d’images.
Ces patchs seront ensuite utilis´
es pour apprendre un dictionnaire (exercice 2).
R´
ecup´
erer tout d’abord la base ”Kyoto” (chaque image est stock´
ee dans une matrice au format matlab
.mat), ainsi que les fonctions suivantes :
—[p,r] = samplePatchesIm( I , n, s, seuil) pour extraire de mani`
ere al´
eatoire n
patches de taille s×sd’une image stock´
ee dans la matrice I.seuil correspond au niveau d’in-
tersection maximal autoris´
e entre les patches, exprim´
e en pixels : par exemple pour des pacthes
de taille s= 14,seuil = 49 = 162
4correspond `
a un niveau d’intersection maximal du quart de
l’aire du patch. La fonction samplePatchesIm renvoie une liste de patchs p(matrice conte-
nant les imagettes stock´
ees selon des vecteurs ligne, taille s2×n), et la liste des coordonn´
ees de
ces patches (matrice de taille 2×n- on ne stocke que minx et miny pour chaque rectangle).
—drawPatches(p) qui affiche la liste des patches contenus dans pdans une grande image
—drawRectsImage(I,r,s) qui affiche les r´
egions dans l’image de d´
epart Io`
u les patches ont
´
et´
e extraits.
On demande de mettre au point le code matlab suivant :
1. Mettre au point un script testSamplePatchImage qui charge une image de la base (quel-
conque), utilise la fonction samplesPatchesIm pour extraire des patchs, puis les visualise
le r´
esultat de l’extraction avec les fonction drawPatches et drawRectsImage. La figure2
montre par exemple le r´
esultat de l’extraction de 900 patches de taille 14 ×14 sur l’image 17 de
la base, avec un seuil d’intersection de 49.
FIGURE 2 – Exemple d’extraction de patches
2. Mettre au point un script samplePatchesKyoto qui va extraire les patches de toute la base,
et stocker sur le disque (.mat) la matrice correspondante (taille s2×M). Afficher l’ensemble des
patchs extraits. La figure 3 montre par exemple le r´
esultat attendu pour M= 10000 patchs de
taille s= 14, avec un seuil d’intersection de s2
4= 49.
3. Mettre au point une fonction pn = normalizePatch(p) qui effectue pour un patch pde la
base les pr´
e-traitements suivants :
2