Afficher une image#

Création d’un notebook#

Un notebook est un fichier portant l’extension ipynb qui contient du code (Python) et du texte avec mise en forme (Markdown). Il est composé de plusieurs cellules, chacune étant soit du code, soit du texte.

  • Dans Jupyter Lab ou dans VSCode, ouvrez un notebook et enregistrez-le avec un nom approprié.

  • Configurez la première cellule du notebook pour être en Markdown en sélectionnant Markdown dans la liste déroulante de la barre d’outils. Écrivez ensuite dans la cellule :

    # TP 1 - exercice 1
    Une image est une fonction $f$ de $\mathbb{N}^d$ dans $\mathbb{R}^B$.
    

    puis tapez Shift + Entrée : le code est exécuté, le résultat s’affiche et une nouvelle cellule apparaît.

  • Dans la cellule nouvellement créée (que vous laissez au format Code), tapez :

    import skimage.io as io
    import matplotlib.pyplot as plt
    

    puis Shift + Entrée pour importer le module scikit-image que nous utiliserons à chaque TP.

  • Dans les prochains TP, prenez l’habitude de cliquez de temps en temps sur dans la barre d’outils pour réinitialiser et relancer complètement le notebook : cela vous évitera de traîner des bugs.

Affichage d’une image en couleur#

  • Chargez l’image schtroumpf.jpg.

  • Dans une troisième cellule du notebook, chargez l’image :

    f = io.imread("schtroumpf.jpg")
    

    puis affichez-la:

    plt.imshow(f)
    
  • Affichez les dimensions de l’image :

    print(f.shape)
    

    Pourquoi obtenez-vous trois valeurs ?

  • Affichez le type de données codant l’image :

    print(f.dtype)
    

    Sur combien d’octets sont codés les pixels de cette image ?

  • Affichez la couleur du pixel \((150,150)\) :

    f[150,150]
    

    À quelle couleur correspond-t-il ?

  • Exécutez le code ci-dessous et expliquez le résultat obtenu.

    g = f.copy()
    g[:, :, [0,1,2]] = f[:, :, [1,0,2]]
    plt.imshow(g)
    

Affichage d’une image à niveaux de gris#

La conversion d’une image couleur en niveau de gris s’effectue en remplaçant chaque pixel de valeurs \((r,g,b)\) en un pixel d’intensité \(x\) tel que \(x = 0.2125 \, r + 0.7154 \, g + 0.0721 \, b\). Les coefficients ont été définis à partir de mesures psychovisuelles et de façon à garantir que \(x\in[0,1]\) si \(r,g,b\in[0,1]\).

  • Convertissez l’image couleur en niveaux de gris (skimage.color.rgb2gray).

  • Affichez l’image à niveau de gris \(g\) en ajoutant également la barre de couleur et les valeurs minimales et maximales de ses pixels :

    plt.imshow(g)
    plt.colorbar()
    print(g.min())
    print(g.max())
    
  • Utilisez l’argument cmap de imshow pour modifier la palette des couleurs (colormap). Pour cela, consultez l’aide de la fonction :

    help(plt.imshow)
    
  • Affichez le profil d’intensité de la colonne 260 :

    plt.plot(g[:,260])
    

    À quoi correpondent la droite décroissante et les deux pics vers le bas ?