domingo, 20 de setembro de 2015

Contando Elementos de uma Imagem Binária

Uma das partes do processamento de imagens é a identificação de elementos nela contidos. Neste exemplo, será demostrada uma maneira de realizar a contagem de elementos em uma imagem binária (fundo preto 0, elemento branco 1) por meio da linguagem Python.

Após recebida a imagem, operação realizada com o auxílio da biblioteca OpenCv (cv2), é preciso realizar a normalização da mesma para se adequar ao formato binário.

 img = cv2.imread("img.png",0)  
 img[img > 50] = 1  
 img[img <> 1] = 0 

Utilizou-se o limiar 50 para o caso de serem inseridas imagens em tons de cinza em que tons mais baixos que a metade dos níveis ainda podem ser um objeto.

Considerou-se a abordagem de vizinhança do objeto como 4-conexo. Desse modo, para verificar os pixels pertencentes à um objeto é preciso partir do atual e verificar 4 pixels ao seu redor.

Criando um Mosaico de Imagens

Um mosaico de imagens é a organização de um conjunto de imagens que resulte em uma nova imagem. Para essa implementação serão utilizados a linguagem Python, as bibliotecas cv2 (OpenCV) e Numpy, um banco de imagens e uma imagem principal.

A ideia principal do algoritmo consiste em:
  • Segmentar a imagem original em pequenas partes;
  • Comparar cada parte com as imagens contidas no banco de imagens;
  • Montar uma imagem final com as imagens mais compatíveis às partes correspondentes na imagem principal.

O banco de imagens utilizado possui 1223 imagens de mesmas dimensões, desse modo, ao serem lidas e redimensionadas pelo programa de maneira padronizada, não perdem suas proporções. A função principal de comparação das imagens foi implementada utilizando análises de histograma.