Manipulation d'images en Python : Processus d'importation, affichage, modification et conversion d'images Ă l'aide de packages Python tels que matplotlib.pyplot, matplotlib.image, et numpy.
Importation d'images avec matplotlib : Utilisation de la fonction imread du module matplotlib.image pour charger une image depuis un fichier en un tableau de nombres (Mim), représentant l'image sous forme matricielle.
Conversion d'une image en tableau de nombres : Transformation de l'image importĂ©e en une matrice tridimensionnelle (Nx, Ny, 3) oĂč chaque triplet [R, V, B] correspond aux composantes rouge, vert, bleu du pixel.
Affichage d'une image à partir d'un tableau : Utilisation de plt.imshow() pour représenter graphiquement le tableau de nombres, permettant de visualiser l'image modifiée ou créée.
Structure du tableau Mim (dimensions et format) : La matrice Mim possÚde 3 dimensions, généralement (hauteur, largeur, 3). La derniÚre dimension contient les triplets RGB codés sur 8 bits (valeurs entre 0 et 255).
Signification des triplets RGB (couleurs) : Chaque triplet [R, V, B] représente la couleur du pixel, avec R pour rouge, V pour vert, B pour bleu. La valeur de chaque composante indique l'intensité de la couleur correspondante.
img.imread(), produisant une matrice 3D.plt.imshow().La manipulation d'images en Python repose sur la conversion d'images en tableaux de nombres, leur visualisation et leur modification via des opérations sur les triplets RGB, en utilisant principalement matplotlib et numpy.
Conversion en tableau de nombres (imread) :
Utilisation de la fonction imread du package matplotlib.image pour transformer une image en un tableau numpy. La variable obtenue, par exemple Mim, est une matrice tridimensionnelle oĂč chaque Ă©lĂ©ment reprĂ©sente un pixel avec ses composantes RGB.
Manipulation de matrices numpy :
Opération sur la matrice obtenue, notamment pour connaßtre ses dimensions avec la fonction shape. La matrice Mim possÚde 3 dimensions, correspondant à la hauteur, la largeur, et les composantes de couleur.
Fonction shape :
MĂ©thode permettant dâobtenir la taille (dimensions) dâune matrice numpy. Par exemple, Mim.shape retourne (236, 420, 3), indiquant 236 lignes, 420 colonnes, et 3 composantes de couleur.
Utilisation de plt.imshow :
Fonction du package matplotlib.pyplot pour afficher une image Ă partir dâun tableau de nombres. La visualisation peut se faire en couleur ou en niveaux de gris (avec lâoption cmap='gray').
img.imread('nom_image.png').Mim est gĂ©nĂ©ralement de taille (hauteur, largeur, 3) pour une image couleur.Mim.shape permet de connaĂźtre ses dimensions.Mim est une matrice tridimensionnelle, chaque pixel Ă©tant un triplet [R, V, B].plt.imshow(Mim) pour une image couleur, ou plt.imshow(Mim, cmap='gray') pour une image en niveaux de gris.La conversion dâune image en tableau de nombres permet de manipuler ses pixels directement, en utilisant la fonction imread pour importer et shape pour connaĂźtre ses dimensions, puis plt.imshow pour lâafficher.
plt.imshow(M, cmap='gray').imshow qui indique que la colormap doit reprĂ©senter des niveaux de gris, permettant une visualisation en nuances de gris.imshow est utilisĂ©e pour afficher une image Ă partir d'une matrice numĂ©rique.plt.imshow(M, cmap='gray') permet de visualiser cette matrice en niveaux de gris.plt.show() doit ĂȘtre utilisĂ©e aprĂšs imshow pour afficher rĂ©ellement l'image.L'affichage d'une image en niveaux de gris avec imshow et cmap='gray' est une Ă©tape fondamentale pour visualiser et analyser des matrices reprĂ©sentant des images en niveaux de gris dans un environnement Python.
Structure du tableau Mim : La structure du tableau Mim dĂ©signe ses dimensions et son format. Selon le contenu source, Mim est une matrice tridimensionnelle obtenue par la conversion d'une image en tableau de nombres, oĂč chaque Ă©lĂ©ment est un triplet [R, V, B] reprĂ©sentant les composantes rouge, vert et bleu. La commande Mim.shape retourne un tuple (Ni, Nj, 3), oĂč Ni et Nj sont respectivement le nombre de lignes et de colonnes de l'image, et 3 correspond au nombre de composantes couleur.
Manipulation de matrices numpy : La manipulation de matrices numpy consiste à utiliser des opérations et méthodes spécifiques pour traiter ces tableaux, notamment la copie (avec .copy()), l'accÚs aux dimensions via shape, et la modification des éléments.
Fonction shape pour connaĂźtre les dimensions : La fonction shape appliquĂ©e Ă un tableau numpy retourne un tuple indiquant ses dimensions. Pour Mim, Mim.shape donne (Ni, Nj, 3), oĂč Ni et Nj sont les dimensions spatiales, et 3 le nombre de composantes couleur.
La structure du tableau Mim est une matrice tridimensionnelle de dimensions (Ni, Nj, 3), oĂč chaque Ă©lĂ©ment reprĂ©sente un pixel par un triplet de composantes couleur. La commande shape permet dâaccĂ©der Ă ces dimensions, indispensables pour la manipulation et lâanalyse de lâimage sous forme de tableau.
Triplet RGB : Ensemble de trois valeurs entiĂšres codant la couleur dâun pixel, reprĂ©sentant respectivement la quantitĂ© de rouge (R), vert (V) et bleu (B). Chaque valeur est comprise entre 0 et 255, permettant de dĂ©finir une couleur prĂ©cise dans lâespace RGB.
Les triplets RGB codent la couleur de chaque pixel par trois valeurs dâintensitĂ©, permettant de reprĂ©senter une large gamme de couleurs dans une image numĂ©rique.
fonction triplet_zero(M, k) :
Une fonction qui prend en argument une matrice M composĂ©e de triplets [R, V, B] (couleurs rouge, vert, bleu) et un entier k â [[0, 2]]. Elle renvoie une nouvelle matrice oĂč, pour chaque triplet, tous les Ă©lĂ©ments sauf celui dâindice k sont fixĂ©s Ă 0. La copie de la matrice M est utilisĂ©e pour ne pas modifier lâoriginale, via la commande N = M.copy().
Manipulation de matrices numpy :
Utilisation de la méthode .shape pour connaßtre les dimensions de la matrice, et de la copie .copy() pour créer une nouvelle matrice indépendante. La boucle imbriquée parcourt chaque pixel pour appliquer la modification.
La fonction triplet_zero permet dâisoler un composant de couleur dans une matrice de triplets RGB en mettant Ă zĂ©ro les autres composants, facilitant ainsi lâanalyse ou la visualisation de chaque couleur individuellement.
Fonction negatif(M) :
Fonction qui prend en argument une matrice M reprĂ©sentant une image en couleurs, et qui retourne la matrice correspondant Ă lâimage nĂ©gative. La transformation consiste Ă remplacer chaque valeur de pixel par sa valeur complĂ©mentaire par rapport Ă 255, câest-Ă -dire que pour chaque composante [R, V, B], on calcule 255 - valeur.
Transformation complémentaire des couleurs :
OpĂ©ration consistant Ă inverser chaque composante de couleur dâun pixel en soustrayant sa valeur de 255, afin dâobtenir la couleur complĂ©mentaire ou nĂ©gative de lâimage.
Manipulation de matrices numpy :
Utilisation de la copie de matrices pour Ă©viter de modifier lâimage originale, et parcours de matrices Ă lâaide de boucles pour appliquer la transformation pixel par pixel.
La transformation du nĂ©gatif dâune image consiste Ă inverser chaque composante de couleur par rapport Ă 255, permettant dâobtenir une version inversĂ©e et souvent utile pour la dĂ©tection de contours ou la correction dâimage.
Conversion en niveaux de gris par moyenne simple : Technique consistant Ă calculer le niveau de gris dâun pixel en faisant la moyenne arithmĂ©tique des trois composantes de couleur (rouge, vert, bleu) du pixel. La formule est :
Fonction N_et_B_1 : Fonction qui, Ă partir dâune matrice M reprĂ©sentant une image en couleurs, calcule une image en niveaux de gris en utilisant la moyenne simple. Elle renvoie une matrice 2D de taille , oĂč chaque Ă©lĂ©ment est le niveau de gris du pixel correspondant, obtenu en faisant la moyenne des composantes R, V, B.
Visualisation en niveaux de gris avec plt.imshow : Utilisation de la commande plt.imshow(M, cmap='gray') pour afficher une image en niveaux de gris Ă partir dâune matrice 2D. La couleur 'gray' indique que lâĂ©chelle de couleurs doit reprĂ©senter des niveaux de gris.
N_et_B_1(M) crĂ©e une nouvelle matrice N de taille , initialisĂ©e Ă zĂ©ro avec np.zeros, puis remplit chaque Ă©lĂ©ment par la moyenne des trois composantes du pixel correspondant.//3.plt.imshow(M, cmap='gray').La conversion en niveaux de gris par moyenne simple consiste Ă prendre la moyenne arithmĂ©tique des trois composantes de couleur pour chaque pixel, permettant dâobtenir une image en niveaux de gris simple et efficace pour diverses opĂ©rations de traitement dâimage.
Poids pour une conversion en niveaux de gris (0.3, 0.59, 0.11) : Ce sont des coefficients appliquĂ©s respectivement aux composantes rouge, vert et bleu dâun pixel pour obtenir une perception visuelle amĂ©liorĂ©e lors de la conversion couleur vers niveaux de gris. Ces poids reflĂštent la sensibilitĂ© de lâĆil humain Ă chaque couleur, avec le vert Ă©tant le plus perceptible, puis le rouge, puis le bleu.
Fonction N_et_B_2 : Fonction qui convertit une image couleur en une image en niveaux de gris en utilisant une moyenne pondérée des composantes R, V, B avec les poids 0.3, 0.59, 0.11. Elle calcule pour chaque pixel :
permettant une meilleure perception visuelle.
AmĂ©lioration de la perception visuelle en niveaux de gris : Technique consistant Ă appliquer des poids spĂ©cifiques aux composantes couleur pour que lâimage en niveaux de gris reflĂšte mieux la sensibilitĂ© humaine, contrairement Ă une simple moyenne arithmĂ©tique.
La conversion en niveaux de gris utilisant des poids (0.3, 0.59, 0.11) permet dâobtenir une image plus fidĂšle Ă la perception humaine, en valorisant la composante verte. La fonction N_et_B_2 implĂ©mente cette mĂ©thode pour amĂ©liorer la perception visuelle dans les images en niveaux de gris.
Réduction de la taille d'une image par sous-échantillonnage : Technique consistant à diminuer la dimension d'une image en sélectionnant certains pixels selon un critÚre précis, sans interpolation ni calculs complexes. Elle consiste à prendre un pixel représentatif dans chaque sous-ensemble de pixels de l'image originale.
Interpolation au plus proche voisin : Méthode d'interpolation utilisée lors du redimensionnement d'une image. Elle consiste à associer à un pixel de l'image réduite la valeur du pixel le plus proche dans l'image originale, sans calculs de moyenne ou de pondération. Elle est simple et rapide mais peut produire des images avec des effets de pixellisation.
Fonction Redim : Fonction qui rĂ©alise la rĂ©duction d'une image en niveaux de gris en utilisant la stratĂ©gie de sous-Ă©chantillonnage par interpolation au plus proche voisin. Elle segment l'image en sous-images de taille pĂp et sĂ©lectionne le pixel avec lâindice le plus faible dans chaque sous-image pour constituer lâimage rĂ©duite.
La rĂ©duction par sous-Ă©chantillonnage consiste Ă diviser lâimage en blocs de taille pĂp, puis Ă choisir un pixel reprĂ©sentatif dans chaque bloc, gĂ©nĂ©ralement celui avec les indices i et j les plus faibles (interpolation au plus proche voisin).
La fonction Redim(M,p) parcourt la matrice M en sautant p pixels Ă chaque Ă©tape dans les directions i et j, pour construire une nouvelle matrice de taille rĂ©duite. Elle ne calcule pas de moyenne, mais sĂ©lectionne directement un pixel de lâimage originale.
La stratĂ©gie dâinterpolation au plus proche voisin est simple Ă implĂ©menter et rapide, mais peut produire une image de qualitĂ© infĂ©rieure avec des effets de pixellisation, notamment lors de grossissements ou de rĂ©ductions importantes.
La taille de lâimage rĂ©duite nâest pas forcĂ©ment divisible par p, il faut gĂ©rer les cas oĂč la segmentation ne tombe pas sur un nombre entier de blocs.
La rĂ©duction dâimage par sous-Ă©chantillonnage utilisant lâinterpolation au plus proche voisin consiste Ă sĂ©lectionner un pixel reprĂ©sentatif dans chaque sous-ensemble de lâimage originale, permettant une diminution rapide de la taille de lâimage, au prix dâune qualitĂ© dâimage parfois dĂ©gradĂ©e. La fonction Redim(M,p) implĂ©mente cette stratĂ©gie en parcourant la matrice par pas de p pixels.
RĂ©duction par moyenne locale : Technique consistant Ă segmenter une image en sous-images de taille pĂp, puis Ă calculer la moyenne des pixels de chaque sous-image pour obtenir une image rĂ©duite. Cette mĂ©thode permet de diminuer la taille de lâimage tout en conservant une reprĂ©sentation fidĂšle de ses zones de luminositĂ©.
Fonction Redim2 : Fonction qui, Ă partir dâune image en niveaux de gris M et dâun facteur p, calcule une image rĂ©duite en remplaçant chaque sous-image pĂp par la moyenne de ses pixels. La moyenne est calculĂ©e en sommant les pixels de la sous-image et en divisant par pÂČ, puis en affectant cette valeur Ă la pixel correspondant dans lâimage rĂ©duite.
La rĂ©duction par moyenne locale consiste Ă segmenter lâimage en sous-ensembles de pixels, puis Ă remplacer chaque sous-ensemble par sa moyenne, permettant une rĂ©duction efficace et visuellement cohĂ©rente de la taille de lâimage. La fonction Redim2 implĂ©mente cette stratĂ©gie en calculant la moyenne de chaque sous-image pĂp et en construisant une image de taille rĂ©duite.
Histogramme (voir section 8) : Représentation graphique de la répartition des pixels d'une image en fonction de leur niveau de gris. Il indique le nombre de pixels pour chaque valeur possible (de 0 à 255).
Fonction histogramme (voir section 8) : Fonction qui, pour une image donnée, calcule la fréquence de chaque niveau de gris en comptant le nombre de pixels correspondant à chaque valeur.
Visualisation de la répartition des pixels (voir section 8) : Représentation graphique (souvent sous forme de courbe ou de barres) de l'histogramme, permettant d'analyser la distribution des niveaux de gris dans l'image.
histogramme(M) parcourt chaque pixel de la matrice en niveaux de gris M, et pour chaque valeur de pixel k, incrémente le compteur correspondant dans la liste h.h contient 256 éléments, chaque élément représentant le nombre de pixels ayant la valeur de niveau de gris correspondant à son indice.h avec plt.plot(hist).L'histogramme est un outil essentiel pour analyser la répartition des niveaux de gris dans une image, facilitant ainsi la sélection de seuils ou l'amélioration du contraste. La fonction histogramme(M) permet de calculer cette répartition en comptant le nombre de pixels pour chaque niveau.
| Aspect | Description | Auteur / Référence |
|---|---|---|
| Conversion d'image en tableau | Utilisation de imread pour importer une image en tableau numpy (Mim). | - |
| Structure du tableau Mim | Tableau 3D (hauteur, largeur, 3), chaque pixel [R, V, B], valeurs 0-255. | - |
| Affichage d'une image | plt.imshow() pour visualiser, avec option cmap='gray' pour niveaux de gris. | - |
| Signification RGB | Triplet [R, V, B], chaque composante codée sur 8 bits, représentant la couleur. | - |
| Manipulation de Mim | AccĂšs via shape, copie avec .copy(), modification pixel par pixel. | - |
plt.show() aprĂšs imshow() pour afficher l'image.cmap='gray') avec la visualisation en niveaux de gris..shape avant manipulation.imread du package matplotlib.image pour importer une image en tableau numpy.plt.imshow(), en prĂ©cisant cmap='gray' pour niveaux de gris.shape pour connaĂźtre les dimensions du tableau Mim..copy() avant modification.plt.show() doit ĂȘtre appelĂ© pour afficher lâimage.plt.imshow() et ses paramĂštres pour lâaffichage.Test your knowledge on Manipulation et conversion d'images en Python with 12 multiple-choice questions with detailed corrections.
1. Quelle est la conséquence de convertir une image en tableau numpy 3D de dimensions (hauteur, largeur, 3) pour sa manipulation et sa visualisation en Python ?
2. Quelle est la structure caractéristique du tableau de nombres obtenu aprÚs conversion d'une image en utilisant `imread` dans le contexte de manipulation d'images en Python ?
Memorize the key concepts of Manipulation et conversion d'images en Python with 24 interactive flashcards.
Manipulation d'images Python â dĂ©finition ?
Processus d'importation, modification et affichage d'images avec Python.
Conversion en tableau â rĂŽle ?
Transformer une image en matrice numérique pour traitement.
Afficher une image â mĂ©thode ?
Utiliser plt.imshow() pour visualiser un tableau d'image.
Import your course and AI generates sheets, quizzes and flashcards in 30 seconds.
Sheet generator