0% ont trouvé ce document utile (0 vote)
32 vues7 pages

Examen

Le document présente un examen sur le traitement d'images en utilisant Python, incluant des exercices sur l'histogramme, la binarisation manuelle et automatique, ainsi que le nettoyage d'images binaires. Il fournit des fonctions pour ouvrir, afficher, transformer, et binariser des images, en utilisant des bibliothèques comme NumPy, OpenCV et Matplotlib. Les utilisateurs sont invités à entrer des seuils de binarisation et à visualiser les résultats à travers des graphiques.

Transféré par

dekssimplice
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues7 pages

Examen

Le document présente un examen sur le traitement d'images en utilisant Python, incluant des exercices sur l'histogramme, la binarisation manuelle et automatique, ainsi que le nettoyage d'images binaires. Il fournit des fonctions pour ouvrir, afficher, transformer, et binariser des images, en utilisant des bibliothèques comme NumPy, OpenCV et Matplotlib. Les utilisateurs sont invités à entrer des seuils de binarisation et à visualiser les résultats à travers des graphiques.

Transféré par

dekssimplice
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

examen

July 12, 2024

[2]: #Exercice I

import numpy as np
import cv2
import [Link] as plt
from skimage import io, color
from [Link] import threshold_otsu
from [Link] import remove_small_objects
from [Link] import binary_fill_holes
from PIL import Image

#I. Histogramme

def histogramme(image):
if len([Link]) == 3: # Image couleur
image = color.rgb2gray(image)

hist, bins = [Link]([Link](), bins=256, range=[0, 1])

[Link](figsize=(10, 5))
[Link](121)
[Link](image, cmap='gray')
[Link]('Image en niveaux de gris')

[Link](122)
[Link](bins[:-1], hist, width=1/256)
[Link]('Histogramme')
[Link]('Niveaux de gris')
[Link]('Nombre de pixels')
[Link]()

#Utilisation
image = [Link]('[Link]')
histogramme(image)

1
[3]: #II. Binarisation
#Question 1
def binarisation_man(image, seuil):
if len([Link]) == 3:
image = color.rgb2gray(image)

binaire = image > seuil

[Link](figsize=(10, 5))
[Link](121)
[Link](image, cmap='gray')
[Link]('Image originale')

[Link](122)
[Link](binaire, cmap='gray')
[Link](f'Image binarisée (seuil = {seuil:.2f})')
[Link]()

#Question 2
def binarisation_auto(image):
if len([Link]) == 3:
image = color.rgb2gray(image)

seuil = threshold_otsu(image)
binaire = image > seuil

2
[Link](figsize=(10, 5))
[Link](121)
[Link](image, cmap='gray')
[Link]('Image originale')

[Link](122)
[Link](binaire, cmap='gray')
[Link](f'Image binarisée (seuil auto = {seuil:.2f})')
[Link]()

#Utilisation
image = [Link]('[Link]')
seuil_manuel = float(input("Entrez le seuil de binarisation (entre 0 et 1) : "))
binarisation_man(image, seuil_manuel)
binarisation_auto(image)

Entrez le seuil de binarisation (entre 0 et 1) : 0.4

[4]: #Question 3
# Fonction pour ouvrir et afficher une image
def ouvrir_et_afficher_image(image_path):

3
image = [Link](image_path)
[Link](figsize=(12, 6))
[Link](2, 3, 1)
[Link]('Image originale')
[Link](image)
[Link]('off')
return image

# Fonction pour transformer l'image couleur en image monochrome


def transformer_en_monochrome(image):
gray_image = [Link]('L')
gray_image = [Link](gray_image)
[Link](2, 3, 2)
[Link]('Image en niveaux de gris')
[Link](gray_image, cmap='gray')
[Link]('off')
return gray_image

# Fonction pour calculer et afficher l'histogramme de l'image monochrome


def afficher_histogramme(image):
[Link](2, 3, 3)
[Link]('Histogramme')
[Link]([Link](), bins=256, range=[0, 256])
[Link]('Intensité')
[Link]('Nombre de pixels')

# Fonction pour binariser l'image


def binariser_image(gray_image):
threshold = [Link](gray_image)
binary_image = gray_image > threshold
binary_image = binary_image.astype(np.uint8) * 255
return binary_image

# Fonction pour nettoyer l'image binaire


def nettoyer_image_binaire(binary_image):
binary_image = binary_image // 255
binary_image = remove_small_objects(binary_image.astype(bool), min_size=500)
binary_image = binary_fill_holes(binary_image).astype(np.uint8)
return binary_image * 255

#Utilisation
# Chemin de l'image
image_path = '[Link]'
# Exécution des fonctions
image = ouvrir_et_afficher_image(image_path)
gray_image = transformer_en_monochrome(image)
afficher_histogramme(gray_image)

4
binary_image = binariser_image(gray_image)
[Link](2, 3, 4)
[Link]('Image binaire initiale')
[Link](binary_image, cmap='gray')
[Link]('off')

cleaned_image = nettoyer_image_binaire(binary_image)
[Link](2, 3, 5)
[Link]('Image binaire après nettoyage')
[Link](cleaned_image, cmap='gray')
[Link]('off')
plt.tight_layout()
[Link]()

[5]: #Question 4
image_path="[Link]"
# Ouvrir l'image
img = [Link](image_path)

# Convertir l'image en niveaux de gris


if [Link] != 'L':
img = [Link]('L')

# Définir les seuils de binarisation


threshold1 = 100 # Exemple de seuil
threshold2 = 150 # Exemple de second seuil pour combinaison

# Binarisation de l'image avec le premier seuil

5
binary_image1 = [Link](lambda p: p > threshold1 and 255)

# Binarisation de l'image avec le second seuil


binary_image2 = [Link](lambda p: p > threshold2 and 255)

# Conversion en tableaux numpy pour les opérations logiques


binary_array1 = [Link](binary_image1)
binary_array2 = [Link](binary_image2)

# Opérations logiques pour combiner les binarisations


combined_binary_array = np.logical_or(binary_array1, binary_array2)

# Conversion de l'image combinée en Image PIL


combined_binary_image = [Link](np.uint8(combined_binary_array) * 255)

# Inverser les couleurs pour obtenir les chiffres en blanc sur fond noir
final_binary_image = [Link]([Link]([Link](combined_binary_image)))

# Afficher les images


[Link](figsize=(15, 5))

[Link](1, 4, 1)
[Link](img, cmap='gray')
[Link]('off')
[Link]('Image Monochrome')

[Link](1, 4, 2)
[Link](binary_image1, cmap='gray')
[Link]('off')
[Link]('Binarisation avec Seuil 1')

[Link](1, 4, 3)
[Link](binary_image2, cmap='gray')
[Link]('off')
[Link]('Binarisation avec Seuil 2')

[Link](1, 4, 4)
[Link](final_binary_image, cmap='gray')
[Link]('off')
[Link]('Image Binarisée Finale')

plt.tight_layout()
[Link]()

# Afficher les seuils utilisés


print(f"Seuil 1: {threshold1}")
print(f"Seuil 2: {threshold2}")

6
Seuil 1: 100
Seuil 2: 150

[ ]:

Vous aimerez peut-être aussi