# TIP - Image [Slides](https://moodle.insa-lyon.fr/pluginfile.php/61330/mod_resource/content/14/TIP_2021_2022_version_moodle.pdf) ###### tags : `TIP` `Amphi` ## Représentations ### Représentation continue Image : Fonction d'au moins deux variables réelles - Image 2D : $f(x,y)$ - Image 3D : $f(x,y,z)$ - Séquence d'images : $f(x,y,t)$ - Séquences d'images 3D : $f(x,y,z,t)$ Les valeurs de la fonction peuvent être : - scalaires (ex : intensité lumineuse) - vectorielles (ex : couleur (RVB), spectre de l'image) - réelles ou complexes Une image 2D scalaire réelle peut être vue comme une image 3D ![](https://i.imgur.com/tQAGPSY.png) Opérations sur les images continues : Toutes les opérations réalisables sur les fonctions continues réelles (TF bidimensionnelle, convolution, filtrage, etc..) ### Représentation échantillonnée On va échantillonner dans les directions $x$ et $y$ car on a besoin d'un nombre fini d'éléments à traiter (possible de ne pas avoir le même pas mais généralement, les pixels sont carrés) ![](https://i.imgur.com/WxCZf5m.png) On doit toujours respecter le critère de Shannon $f_e \leq 2 \cdot f_{max}$ ($f_{max} =$ fréquence la plus grande permise par mon système puis on adapte si c'est trop grand) Le poids de chaque Dirac est : - Soit la valeur de $f(x,y)$ au point $(x,y)$ - Soit la valeur moyenne de $f(x,y)$ dans la région entourant $(x,y)$ La valeur échantillonnée obtenue est appelée "valeur du pixel" *NB : PIXEL = PICture ELement* Pour visualiser une image, on remplit les pixel avec un niveau de gris ou de couleur correspondant à la valeur du pixel (niveaux compris entre 0 et 255) ### Voisinage, connexité, distance Un pixel possède plusieurs voisins (ex : 4 ou 8) ![](https://i.imgur.com/I7HOcpa.png) On parle alors de connexité 4 ou 8 Exemple : La région grise forme 1 objet en connexité 8 et 2 objets en connexité 4 ![](https://i.imgur.com/43DTALz.png) ![](https://i.imgur.com/tHJzpzy.png) ![](https://i.imgur.com/duSJqIA.png) *NB : Ces distances sont des distances globales* **EQM** (**E**rreur **Q**uadratique **M**oyenne) = $\frac{1}{N^2} \sqrt{\sum \sum (...)^2}$ ### Acquisition : échantillonnage/quantification Effet de l'échantillonnage : pixelisation Effets de la quantification : Apparition de faux contours, bruit, effets visibles en dessous de 5 bits, quantification sur 8 bits pour l'affichage ### Représentations fréquentielles #### Fréquence spatiale Basses fréquences : zones homogènes, continue Haute fréquences : détails contours L'image est un signal bidimensionnel non stationnaire. Les propriétés statistiques changent spatialement. Comme pour la parole qui est stationnaire par moments (sur un phonème), une image peut être stationnaire sur certaines régions mais pas sur une image entière. ![](https://i.imgur.com/W4gCC3b.png) #### DFT 2D ![](https://i.imgur.com/BgKv5TW.png) ![](https://i.imgur.com/b74vEOb.png) Si la période d'échantillonnage est $T= \Delta$ alors $f_e = \frac{1}{2 \cdot \Delta}$ La bande observable va jusqu'à $f = \frac{1}{2 \cdot \Delta}$ dans les deux directions Si Shannon n'est pas respecté, il y a un repliement du spectre. On a alors des figures de Moiré qui apparaissent (formes qui n'existent pas à l'origine) #### Transformée Cosinus Discrète ![](https://i.imgur.com/U4CCgZP.png) #### Décomposition et analyse en sous-bandes/ondelettes ![](https://i.imgur.com/1RXbUer.png) ![](https://i.imgur.com/0Sl2g3p.png) ### Représentation couleur Perception des couleurs Rouge Vert Bleu par synthèse additive (1 pixel = 3 sous pixels) ![](https://i.imgur.com/o3jARJP.png) ![](https://i.imgur.com/wvfcKBy.png) ![](https://i.imgur.com/Bp7l72Z.png) ![](https://i.imgur.com/JvlofdQ.png) ## Pré-traitement et améliorations ### Opérations pixel à pixel Histogramme des niveaux de gris : densité de probabilité des niveaux de gris On peut modifier cet histogramme : ![](https://i.imgur.com/qbGkAer.png) Segmentation : Passage en noir et blanc (uniquement deux couleurs) ![](https://i.imgur.com/pSKGYpx.png) Négatif : Inversion des niveaux de gris ![](https://i.imgur.com/53jTvLy.png) **Comment on fait l'égalisation d'histogramme ? Question au DS** ![](https://i.imgur.com/3XZGVLE.png) ### Opération sur un voisinage : filtrage Modification d'un pixel en fonction de ses voisins ![](https://i.imgur.com/6iWkXNc.png) ![](https://i.imgur.com/PLMksTT.png) ![](https://i.imgur.com/hGtNlkS.png) ![](https://i.imgur.com/hd7J0Bf.png) $D_y = f(i,j) - f(i-1,j)$ $D_x = f(i,j) - f(i, j-1)$ Le module varie de $0$ à $v_{max}$ ![](https://i.imgur.com/NVwGLSj.png) Ne pas appliquer un filtre passe haut sur une image bruitée Solution : Image $\rightarrow$ Passe Bas $\rightarrow$ $I_f$ $\rightarrow$ Prewitt $\rightarrow$ Image Contour **Laplacien** : Filtre passe-haut pour détecter des contours (utilisé pour le réhaussement des contours) $\Delta I = \frac{\partial^2I}{\partial x^2}+\frac{\partial^2I}{\partial y^2}$ ![](https://i.imgur.com/EbzOaLD.png) ![](https://i.imgur.com/eq17YpB.png) Le filtre médian est utile pour gommer des variation ponctuelles et très rapides (aberrances isolées). Beaucoup plus efficace qu'un filtre moyenneur qui va *étaler* ce genre d'aberrances. ## Compression *JPEG = Joint Picture Expert Group* *MPEG = Motion Picture Expert Group* Basés sur la DCT ![](https://i.imgur.com/kiCXWGs.png) ![](https://i.imgur.com/Jl58KMq.png) Avant transformations, les pixels qui arrivent se ressemblent car il y a de la redondance spatiale. Objectif de la transformation : diminuer la redondance Perte d'information sur les domaines transformés (coefficients) ![](https://i.imgur.com/EEiC9up.png) ![](https://i.imgur.com/lhHdT99.png) On va traiter les images bloc par bloc car ces échantillons sont pseudo-stationnaires (plus facile d'effectuer le traitement) ![](https://i.imgur.com/gWAYXaE.png) $\rightarrow$ voilà pourquoi JPEG ça marche hyper bien ![](https://i.imgur.com/MgLiUFM.png) ![](https://i.imgur.com/aOkNTGt.png) ![](https://i.imgur.com/lwl1kab.png) ![](https://i.imgur.com/DwPKauH.png) ![](https://i.imgur.com/Pfsg4UA.png) Exemple : $0 \ -2 \ -1 \ 0^2 \ -1 \ 0^{57}$ $0 \ -2$ $\rightarrow$ Plage de zéros = 1 et catégorie 2 donc $111001$ ensuite le $-2$ est codé sur 2 bits suivant ce tableau : | | 2 | 3 | | --- |:---:| --- | | -2 | 00 | 01 | | -3 | 01 | 11 | **Limitations :** - Il faut un nombre de plages de zéros faible et des grandes largaurs. Le zigzag le permet. - Difficile d'estimer la taille du fichier binaire (Code Huffman à longueur variable) - Blocs - effets de blocs - discontinuité des contours ### Traitement des images couleur ![](https://i.imgur.com/UPxMKSb.png) On peut sous échantillonner car l'oeil est moins sensible aux variations de chrominance ## Codage des séquences vidéos Objectif de la compression de séquences d'images : - Supprimer la redondance spatiale (intra-image) - Supprimer la redondance temporelle (inter-images)