Conceitos básicos de processamento de imagens em Python

Conteúdo

Escrever o artigo de hoje foi uma experiência fascinante para mim y também lo seria para os leitores deste blogue. Qué es tan diferente? Dos cosas: em primeiro lugar, o artigo trata sobre algo que sempre quise hacer desde que tenía 5 anos; em segundo lugar, este tema / Ferramentas / algoritmo también son nuevos para mí. De ninguna manera soy un maestro en el procesamiento de imagens, pero la utilidad de este campo simplesmente me dejó alucinado.

image-process-3102321

Imagine, si pode criar uma aplicação para etiquetar automaticamente una fotografía como la de Facebook, o crear su propia contraseña de reconocimiento facial para su computadora portátil. Neste artigo, recogeré una aplicação muy simple pero interesante del procesamiento de imágenes. Usaremos Python para fazer el procesamiento de imágenes. Nos próximos artigos, abordarei exemplos mais complexos de processamento de imagens. Este é o problema em que vou trabalhar neste artigo:

Exposição do problema

Adivinha o que é esta imagem?

wint_sky-3146717

Tens razão, é uma imagem típica de um céu aberto. Tirei esta foto desde a última noite até ontem em Bangalore, da minha varanda. Nesse momento, não fazia ideia de que isto podia ser um exercício tão emocionante e gratificante. Quando era criança, costumava passar horas a contar estas estrelas, mas quase sempre não conseguia ir além de 50-60. Queria completar este exercício com a ajuda da minha máquina. Não fazia ideia de que isto fosse possível até ao domingo passado, e hoje concluí esta longa tarefa pendente usando Python.

Comecemos

Paso 1: importar a biblioteca necessária

O pacote Skimage permite-nos processar imagens usando Python. A linguagem é extremamente simples de compreender, mas realiza algumas das tarefas mais complicadas. Aqui estão algumas bibliotecas que precisa de importar para começar,

code11-5316907

Paso 2: Importar a imagem

Uma vez que temos todas as bibliotecas no lugar, precisamos importar o nosso ficheiro de imagem para o Python. A seguir está o código que pode usar para importar o ficheiro de imagem. Note que a imagem é importada a preto e branco, o que basicamente significa que cada pixel tem um tom de cinzento. E cada pixel é essencialmente convertido numa célula numa matriz. Neste caso, a imagem é uma matriz de 480 * 581 Células (ou uma imagem de 480 * 581 píxeis).

code21-9945847

Paso 3: Encontrar o número de estrelas

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 três saídas para cada objeto encontrado. Los dos primeros son las coordenadas y el tercero es la área del objeto. El radio de cada blob / objeto se pode estimar usando esta coluna (área del objeto).

code31-2120523

Como podemos ver, el algoritmo ha estimado 308 estrellas visibles. Veamos ahora qué tan precisas son estas leituras.

Paso 4: Validado si capturamos todas las estrellas

e depois verifique se o segundo parâmetro tem um valor 308 todavía está saliendo de una caja negra. Veamos si hemos detectado corretamente todas las estrellas. Para isso, Estoy rodeando cada posição estimada de las estrellas. Y la mirada à imagem si nos falta alguma estrella.

código41-6557620

Aqui está o 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.show()
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)
imprimir("Número de estrelas contadas : " ,numrows)
FIG, ax = plt.subplots(1, 1)
plt.imshow(Im, cmap=cm.gray)
for blob in blobs_log:
    e, x, r = blob
    c = plt.Circle((x, e), r+5, color ="lime", linewidth=2, fill=False)
    ax.add_patch(c)

Notas finais

O processamento de imagens é fascinante! Comecei a minha jornada com processamento de imagens em Python há não mais de 5 dias. Para benefício da comunidade, animaré a compartir cualquier sugerencia o mejor práctica en este foro. Es posible que este exercício no tenga ninguna aplicación práctica, pero se podem realizar análises semelhantes para as estimaciones de pureza. Por exemplo, en la indústria 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, pode usar este código simple para hacer muchas cosas. Por exemplo, estimación del tráfico a través de imágenes de CCTV. Este código se puede adaptar facilmente para lograr lo mismo.

O artigo foi útil para você? Si ha realizado trabalhos semelhantes en el procesamiento de imágenes de Python, compártalos con nosotros. Deixe-nos saber sua opinião sobre este item na caixa abaixo..

Se você gostou do que acabou de ler e deseja continuar seu aprendizado sobre análise, inscreva-se em nossos e-mails, Siga-nos no Twitter ou como o nosso página do Facebook.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker