Bases du traitement d'images en Python

Contenu

Écrire l'article d'aujourd'hui a été une expérience fascinante pour moi et ce serait aussi pour les lecteurs de ce blog.. Qu'est-ce qui est si différent? Deux choses: en premier lieu, l'article parle de quelque chose que j'ai toujours voulu faire depuis que je suis 5 ans; en second lieu, ce sujet / outils / l'algorithme est aussi nouveau pour moi. Je ne suis en aucun cas un maître du traitement d'image, mais l'utilité de ce domaine m'a époustouflé.

image-process-3102321

Imaginer, si vous pouvez créer une application pour marquer automatiquement une photo comme celle de Facebook, ou créez votre propre mot de passe de reconnaissance faciale pour votre ordinateur portable. Dans cet article, Je vais reprendre une application très simple mais intéressante de traitement d'image. Nous utiliserons Python pour faire du traitement d'image. Dans les prochains articles, Je vais aborder des exemples de traitement d'image plus complexes. C'est le problème sur lequel je vais travailler dans cet article:

Approche du probléme

Devinez quelle est cette image?

wint_sky-3146717

Tu as raison, est une image typique d'un ciel ouvert. J'ai pris cette photo d'hier soir à hier soir à Bangalore depuis ma terrasse. À ce moment là, Je ne savais pas que cela pouvait être un exercice aussi excitant et gratifiant. Quand j'étais petit, Je passais des heures à compter ces étoiles, mais presque toujours échoué à aller au-delà 50-60. J'ai voulu réaliser cet exercice à l'aide de ma machine. Je ne savais pas que c'était possible jusqu'à dimanche dernier, et aujourd'hui j'ai terminé cette longue tâche en attente en utilisant python.

Commençons

Paso 1: importer la bibliothèque requise

Le package Skiimage nous permet de traiter des images en Python. La langue est extrêmement simple à comprendre mais effectue certaines des tâches les plus compliquées. Voici quelques bibliothèques que vous devez importer pour commencer,

code11-5316907

Paso 2: Importer l'image

Une fois que nous aurons toutes les bibliothèques en place, nous devons importer notre fichier image en Python. Voici le code que vous pouvez utiliser pour importer le fichier image. Notez que l'image est importée en niveaux de gris, ce qui signifie essentiellement que chaque pixel a une nuance de gris. Et chaque pixel devient essentiellement une cellule dans un tableau. Dans ce cas, l'image est une matrice de 480 * 581 cellules (ou une photo de 480 * 581 pixels).

code21-9945847

Paso 3: Trouver le nombre d'étoiles

Vient maintenant la partie critique où notre travail principal est effectué à l'aide de quelques commandes. Ces quelques commandes sortent pour trouver des objets continus dans l'image. Blobs_log donne trois sorties pour chaque objet trouvé. Les deux premiers sont les coordonnées et le troisième est la zone de l'objet. Le rayon de chaque blob / l'objet peut être estimé à l'aide de cette colonne (zone d'objet).

code31-2120523

Comme nous pouvons le voir, l'algorithme a estimé 308 étoiles visibles. Voyons maintenant à quel point ces lectures sont précises.

Paso 4: Validé si on capture toutes les étoiles

Le numéro 308 ça sort toujours d'une boite noire. Voyons si nous avons correctement détecté toutes les étoiles. Pour cela, Je tourne autour de chaque position estimée des étoiles. Et regarde l'image s'il nous manque une étoile.

code41-6557620

Voici le code complet:

de matplotlib importer pyplot en tant que plt
à partir des données d'importation de skimage
de skimage.feature importer blob_dog, blob_log, blob_doh
de math import sqrt
de skimage.color importer rgb2gray
importation globale
de skimage.io importer imread
fichier_exemple = glob.glob(r"C:UtilisateursTavishDesktopwint_sky.gif")[0]
im = imread(fichier_exemple, as_grey=Vrai)
plt.imshow(je suis, cmap=cm.gris)
plt.show()
blob_log = blob_log(je suis, max_sigma=30, num_sigma=10, seuil=.1)
# Calculer les rayons dans la 3ème colonne.
blob_log[:, 2] = blob_log[:, 2] * carré(2)
nombres = len(blob_log)
imprimer("Nombre d'étoiles comptées : " ,nombres)
figure, ax = plt.subplots(1, 1)
plt.imshow(je suis, cmap=cm.gris)
pour blob dans blobs_log:
    Oui, X, r = blob
    c = plt.Circle((X, Oui), r+5, couleur="chaux", largeur de ligne=2, remplissage=Faux)
    ax.add_patch(c)

Remarques finales

Le traitement d'image est fascinant !! J'ai commencé mon parcours avec le traitement d'images Python pas plus de 5 jours. Au profit de la communauté, Je vous encourage à partager toute suggestion ou meilleure pratique dans ce forum. Cet exercice peut ne pas avoir d'application pratique, mais des analyses similaires peuvent être effectuées pour les estimations de pureté. Par exemple, dans l'industrie du verre, nous avons besoin de la quantité de particules de silice dans le verre à un niveau microscopique. Lors de la capture des images dans une vidéo, vous pouvez utiliser ce code simple pour faire beaucoup de choses. Par exemple, estimation du trafic via des images de vidéosurveillance. Ce code peut être facilement adapté pour obtenir le même.

L'article vous a-t-il été utile? Si vous avez effectué un travail similaire dans le traitement d'images Python, partagez-les avec nous. Faites-nous part de vos impressions sur cet article dans la case ci-dessous..

Si vous aimez ce que vous venez de lire et souhaitez continuer à apprendre sur l'analyse, abonnez-vous à nos e-mails, Suivez-nous sur Twitter ou comme le nôtre page le Facebook.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.