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.

terça-feira, 18 de agosto de 2015

Criando um Círculo de Cores HSV

Como descrito na última postagem, o HSV é um sistema de cores composto por três componentes. Neste post, será descrita a criação de um círculo de cores, gerado através de variações das combinações dessas componentes. Para tal, será utilizada a linguagem Python, juntamente com as bibliotecas Numpy e OpenCV.

A função para criação do círculo recebe dois parâmetros: tamanho da imagem a ser gerada e o raio do círculo.

 import numpy as np  
 import cv2  
   
 def geraCirculoHSV(tam, raio):  
   

Para construção da imagem será preciso montar cada banda separadamente e depois juntá-las em uma estrutura tridimensional.

Sistema de Cores: HSV

HSV é um sistema de cores que define três componentes, sendo cada uma delas responsável por uma característica na construção de uma cor. São elas: Hue (H), Saturation (S) e Value (V).

Hue

A primeira componente, Hue ou matiz, é responsável por determinar a medida do comprimento de onda médio da luz que ele reflete ou emite. Define a cor ou tonalidade do objeto (vermelho, laranja, amarelo, etc). Os valores variam de 0º à 360º, podendo ser normalizados para abrangerem entre 0 e 100%.

Saturation

A segunda componente, Saturation ou Saturação, é responsável pela profundidade ou "pureza" da cor (de esmaecida à intensa). Diferente do que intuitivamente pensaríamos, quanto mais saturada uma cor, mais "pura" ela será e, quanto menos saturada, mais próxima da cor branca. Expressa o intervalo de comprimentos de onda ao redor do comprimento de onda médio no qual a energia é refletida ou transmitida. O valor da saturação varia entre 0 e 100%.

Value

A terceira componente, Value ou Valor, é responsável por definir o brilho da cor, ou a intensidade com que é percebida (mais clara ou mais escura). Os valores dessa componente variam entre 0 e 100%.



Fonte

WIKIPÉDIA. HSV. 2015. Disponível em: <https://pt.wikipedia.org/wiki/HSV#/media/File:Hsv_sample.png>. Acesso em: 14 ago. 2015.>

UNIVERSIDADE FEDERAL DO MATO GROSSO DO SUL. Página Dinâmica para Aprendizado do Sensoriamento Remoto: Modelo de Cores HSV. Disponível em: <http://www.ufrgs.br/engcart/PDASR/formcor.html>. Acesso em: 14 ago. 2015.