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

Contenuti

Escribir el artículo de hoy fue una experiencia fascinante para mí y también lo sería para los lectores de este blog. ¿Qué es tan diferente? Dos cosas: primo, el artículo trata sobre algo que siempre quise hacer desde que tenía 5 anni; al secondo posto, este tema / utensili / algoritmo también son nuevos para mí. De ninguna manera soy un maestro en el procesamiento de imágenes, pero la utilidad de este campo simplemente me dejó alucinado.

image-process-3102321

Immaginare, si puede crear una aplicación para etiquetar automáticamente una fotografía como la de Facebook, o crear su propia contraseña de reconocimiento facial para su computadora portátil. In questo articolo, recogeré una aplicación muy simple pero interesante del procesamiento de imágenes. Usaremos Python para hacer el procesamiento de imágenes. Nei prossimi articoli, abordaré ejemplos más complejos de procesamiento de imágenes. Este es el problema en el que trabajaré en este artículo:

Dichiarazione problema

¿Adivina qué es esta imagen?

wint_sky-3146717

Tienes razón, es una imagen típica de un cielo abierto. Tomé esta foto desde la última noche hasta anoche en Bangalore desde mi terraza. Al momento, no tenía ni idea de que este puede ser un ejercicio tan emocionante y gratificante. Cuando era niño, solía pasar horas contando estas estrellas, pero casi siempre fallaba en ir más allá de 50-60. Quería completar este ejercicio con ayuda de mi máquina. No tenía ni idea de que esto fuera posible hasta el domingo pasado, y hoy he completado esta larga tarea pendiente usando Python.

Cominciamo

passo 1: importar la biblioteca requerida

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 bibliotecas que necesita importar para comenzar,

code11-5316907

passo 2: Importa la imagen

Una vez que tengamos todas las bibliotecas en su lugar, necesitamos importar nuestro archivo de imagen a Python. A continuación se muestra el código que puede utilizar 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 (área del objeto).

code31-2120523

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

passo 4: Validado si capturamos todas las estrellas

El número 308 todavía está saliendo de una caja negra. Veamos si hemos detectado correctamente todas las estrellas. Per questo, estoy rodeando cada posición estimada de las estrellas. Y la mirada a la imagen 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, threshold=.1)
# Compute radii in the 3rd column.
blobs_log[:, 2] = blobs_log[:, 2] * sqrt(2)
numrows = len(blobs_log)
Stampa("Number of stars counted : " ,numrows)
Fig, ax = plt.sottotrame(1, 1)
plt.imshow(im, cmap=cm.gray)
for 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 análisis similares 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 nivel microscópico. Al capturar los fotogramas en un video, puede usar este código 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 fácilmente 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.