Conceptos básicos del procesamiento de imágenes en Python

Contenuti

Scrivere l'articolo di oggi è stata un'esperienza affascinante per me e lo sarebbe stata anche per i lettori di questo blog. Cosa c'è di così diverso? Due cose: primo, l'articolo parla di qualcosa che ho sempre voluto fare fin da quando avevo 5 anni; al secondo posto, questo argomento / utensili / gli algoritmi sono nuovi anche per me. In nessun caso sono un maestro nell'elaborazione delle immagini, ma l'utilità di questo campo mi ha semplicemente stupito.

image-process-3102321

Immaginare, se puoi creare un'app per etichettare automaticamente una fotografia come su Facebook, o creare la tua password di riconoscimento facciale per il tuo portatile. In questo articolo, presenterò un'applicazione molto semplice ma interessante dell'elaborazione delle immagini. Useremo Python per fare l'elaborazione delle immagini. Nei prossimi articoli, Affronterò esempi più complessi di elaborazione delle immagini. Questo è il problema su cui lavorerò in questo articolo:

Dichiarazione problema

Indovina cos'è questa immagine?

wint_sky-3146717

Hai ragione, è un'immagine tipica di un cielo aperto. Ho scattato questa foto dalla scorsa notte fino a ieri sera a Bangalore dalla mia terrazza. Al momento, Non avevo idea che questo potesse essere un esercizio così emozionante e gratificante. Quando ero bambino, ero solito passare ore a contare queste stelle, ma quasi sempre fallivo nell'andare oltre 50-60. Volevo completare questo esercizio con l'aiuto del mio computer. Non avevo idea che fosse possibile fino a domenica scorsa, e oggi ho completato questo lungo compito in sospeso usando Python.

Cominciamo

passo 1: importare la libreria necessaria

El paquete Skimage nos permite procesar imágenes usando Python. El lenguaje es extremadamente simple de entender pero realiza algunas de las tareas más complicadas. Aquí hay algunas libraries que necesita importar para comenzar,

code11-5316907

passo 2: Importa la imagen

Una vez que tengamos todas las libraries en su lugar, necesitamos importar nuestro archivo de imagen a Python. A continuación se muestra el codice che puede utilizzare para importar el archivo de imagen. Tenga en cuenta que la imagen se importa en escala de grises, lo que básicamente significa que cada píxel tiene un tono de gris. Y cada píxel se convierte esencialmente en una celda en una matriz. In questo caso, la imagen es una matriz de 480 * 581 Cellule (o una imagen de 480 * 581 pixel).

code21-9945847

passo 3: Encuentra el número de estrellas

Ahora viene la parte crítica en la que nuestro trabajo principal se realiza mediante unos pocos comandos. Estos pocos comandos salen para buscar objetos continuos en la imagen. Blobs_log da tres salidas para cada objeto encontrado. Los dos primeros son las coordenadas y el tercero es el área del objeto. El radio de cada blob / objeto se puede estimar usando esta columna (area del objeto).

code31-2120523

Come possiamo vedere, el algoritmo ha estimado 308 estrellas visibles. Veamos ahora qué tan precisas son estas lectures.

passo 4: Validado si capturamos todas las estrellas

El número 308 todavía está saliendo de una caja. Veamos si hemos detectado correttamente todas las estrellas. Per questo, estoy rodeando cada posición estimada de las estrellas. Y la mirada a la immagine si nos falta alguna estrella.

code41-6557620

Aquí está el código completo:

from matplotlib import pyplot as plt
from skimage import data
from skimage.feature import blob_dog, blob_log, blob_doh
from math import sqrt
from skimage.color import rgb2gray
import glob
from skimage.io import imread
example_file = glob.glob(R"C:UsersTavishDesktopwint_sky.gif")[0]
im = imread(example_file, as_grey=True)
plt.imshow(im, cmap=cm.gray)
plt.mostra()
blobs_log = blob_log(im, max_sigma=30, num_sigma=10, soglia=0,1)
# Calcolo i raggi nella 3ª colonna.
blobs_log[:, 2] = blobs_log[:, 2] * sqrt(2)
numrows = len(blobs_log)
Stampa("Numero di stelle contate : " ,numeri)
Fig, ax = plt.sottotrame(1, 1)
plt.imshow(im, cmap=cm.gray)
per blob in blobs_log:
    e, X, r = blob
    c = plt.Circle((X, e), r+5, colore="lime", linewidth=2, fill=False)
    ax.add_patch(C)

Note finali

El procesamiento de imágenes es fascinante! Comencé mi viaje con el procesamiento de imágenes de Python no más de 5 giorni. Para el beneficio de la comunidad, animaré a compartir cualquier sugerencia o mejor práctica en este foro. Es posible que este ejercicio no tenga ninguna aplicación práctica, pero se pueden realizar analisi simili para las estimaciones de pureza. Ad esempio, en la industria del vidrio necesitamos la cantidad de partículas de sílice en el vidrio a un livello microscópico. Al capturar los fotogramas en un video, puede usar este codice simple para hacer muchas cosas. Ad esempio, estimación del tráfico a través de imágenes de CCTV. Este código se puede adaptar facilmente para lograr lo mismo.

L'articolo ti è stato utile?? Si ha realizado trabajos similares en el procesamiento de imágenes de Python, compártalos con nosotros. Fateci sapere i vostri pensieri su questo articolo nella casella sottostante..

Se ti piace quello che hai appena letto e vuoi continuare a imparare l'analisi, iscriviti alle nostre email, Seguici su Twitter o come il nostro pagina Facebook.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.

Altoparlante dati