Python et traitement d’images L’objectif de ce court document est de présenter

Python et traitement d’images L’objectif de ce court document est de présenter quelques aspects simples du traitement d’images sous Python, et de donner quelques pistes pour aller plus avant. Plusieurs modules existent pour faire du traitement d’images sous Python, dont PIL et skimage. Pour rester dans la continuité de la formation proposée l’an dernier, nous nous appuierons ici sur Numpy, Scipy et matplotlib (même si certaines fonctions de Scipy impliquent que PIL soit chargé). 1 Pour commencer 1.1 Ouvrir et écrire des images sur disque Le code 1 présente une manière d’ouvrir et d’afficher des images présentes sur le disque.  # −∗ − coding : utf −8 −∗ − from s c i p y import misc #module d ’ a f f i c h a g e import m a t p l o t l i b . p y p l o t as p l t # o u v e r t u r e d ’ une image c o u l e u r s u r l e d i s q u e i = misc . imread ( ’ i s i m a . p n g ’ ) #A f f i c h a g e en u t i l i s a n t une f i g u r e m a t p l o t l i b p l t . imshow ( i ) #Les axes s ont supprimés p l t . a x i s ( ’ o f f ’ ) p l t . show ( ) # o u v e r t u r e d ’ une image en niveaux de g r i s s u r l e d i s q u e j = misc . imread ( ’ h a n d . j p g ’ ) #La p a l e t t e e s t mise à l a p a l e t t e en niveaux de g r i s p l t . imshow ( j , cmap=p l t . cm . gray ) p l t . a x i s ( ’ o f f ’ ) #Ote l e s axes p l t . show ( )   Listing 1 – Ouverture et affichage d’une image. Deux exemples. Ces images étant alors stockées comme des tableaux, le module Numpy peut naturellement être utilisé pour les traiter. 1.2 Ecrire dans le tableau Le code 2 montre comment créer une image directement en écrivant des valeurs dans les pixels du tableau (figure 1) 1  # −∗ − coding : utf −8 −∗ − import m a t p l o t l i b . p y p l o t as p l t import numpy as np import math #C r é a t i o n d ’ image en parcourant l e s p i x e l s image = np . z e r o s ( ( 2 5 6 , 256) ) nl , nc = image . shape for l in range ( n l ) : for c in range ( nc ) : image [ l ] [ c ] = l ∗math . c o s ( c ) ∗math . s i n ( l ) p l t . imshow ( image , cmap=p l t . cm . gray ) p l t . t i t l e ( ’ E x e m p l e d e c r e a t i o n d u n e i m a g e ’ ) p l t . a x i s ( ’ o f f ’ ) #Ote l e s axes p l t . show ( )   Listing 2 – Ouverture et affichage d’une image. Deux exemples. Figure 1 – Application du code 2 1.3 Accès à la grille des pixels Il est possible d’avoir facilement accès à la grille des pixels de l’image, sous forme de tableau, et de faire des traitements matriciels directs sur les images. Le code 3 décrit comment : – appliquer un masque binaire sur une image donnée, à partir de la définition de ce masque sous forme d’une formule calculée sur la grille des pixels. – accéder à une série de pixels pour afficher des valeurs prédéfinies 2  # −∗ − coding : utf −8 −∗ − from s c i p y import misc import m a t p l o t l i b . p y p l o t as p l t import numpy as np # o u v e r t u r e d ’ une image c o u l e u r s u r l e d i s q u e j = misc . imread ( ’ h a n d . j p g ’ ) #r é c u p e r a t i o n des dimensions nl , nc = j . shape #r e c u p e r a t i o n d ’ une g r i l l e ayant l a dimension de l ’ image X, Y = np . o g r i d [ 0 : nl , 0 : nc ] #c r é a t i o n d ’ un masque c i r c u l a i r e masque = (X − n l / 2) ∗∗ 2 + (Y − nc / 2) ∗∗ 2 > n l ∗ nc / 8 p l t . imshow ( masque , cmap=p l t . cm . gray ) p l t . t i t l e ( ’ m a s q u e ’ ) p l t . a x i s ( ’ o f f ’ ) p l t . show ( ) # A p p l i c a t i o n du masque s u r l ’ image j [ masque ]=0 # Accès a une zone de l a g r i l l e j [ 1 6 0 : 2 1 0 , 5 3 0 : 5 6 5 ] = 2 5 5 #La p a l e t t e e s t mise à l a p a l e t t e en niveaux de g r i s p l t . imshow ( j , cmap=p l t . cm . gray ) p l t . t i t l e ( ’ i m a g e a v e c m a s q u e s ’ ) p l t . a x i s ( ’ o f f ’ ) p l t . show ( )   Listing 3 – Accès aux pixels. 2 Manipulations de base 2.1 Transformations géométriques élémentaires Il est très aisé d’appliquer des transformations géométriques élémentaires (linéaires) sur des images. Le code 4 et la figure 2 présentent quelques exemples (région d’intérêt, rotations, symétrie, zoom) et introduit également un exemple de présentation sous la forme de tableaux d’images. les fonctions utilisées proviennent à la fois de numpy et de scipy (import de ndimage, ensemble de fonctions pour le traitement d’images multidimensionnelles). Dans cette série de fonctions, on trouvera également par exemple la définition de transformations affines ou géométriques génériques, 3  # −∗ − coding : utf −8 −∗ − from s c i p y import misc from s c i p y import ndimage import m a t p l o t l i b . p y p l o t as p l t import numpy as np # o u v e r t u r e d ’ une image c o u l e u r s u r l e d i s q u e j = misc . imread ( ’ h a n d . j p g ’ ) #r e c u p e r a t i o n des dimensions nl , nc = j . shape # D é f i n i t i o n d ’ une zone d i n t é r ê t f , tab = p l t . s u b p l o t s ( 2 , s ha re y=True ) j _ r o i = j [ 1 6 0 : 2 1 0 , 5 3 0 : 5 6 5 ] tab [ 0 ] . imshow ( j_roi , cmap=p l t . cm . gray ) tab [ 0 ] . s e t _ t i t uploads/Sante/ traitement-images.pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Sep 08, 2021
  • Catégorie Health / Santé
  • Langue French
  • Taille du fichier 1.7793MB