Segmentação de imagens no ImageJ

Sobre o ImageJ:  É um software livre (freeware) usado para análise de imagens, tanto de fotos quanto de vídeos. Possui várias ferramentas que podem ter utilidade em diversas áreas de conhecimento. Algumas dessas ferramentas nativas são: ajuste de brilho e contraste; ajustes de cor e histograma; segmentação e análise, medição de distâncias e ângulos, processamento de imagens binárias; filtros; possibilidade de analisar várias imagens de uma só vez, entre outros.

O reconhecimento de caracteres é uma aplicação bastante interessante e útil na área de visão computacional. E, a primeira etapa nesse processo é a segmentação da imagem que consiste em separar os objetos de interesse que se deseja analisar para, em seguida, dividir a imagem em unidades significativas que seja possível reconhecer cada carácter individualmente.

Vamos nesse tutorial realizar a primeira etapa nesse tipo de aplicação, ou seja, segmentar e “contar” os objetos (caracteres) em uma imagem. Para isso, faça antes o download nos links abaixo do software ImageJ e da imagem de exemplo.

 

Segmentando imagem com o ImageJ

Quando executado o ImageJ você verá uma pequena janela com uma barra de menu semelhante à da imagem abaixo. Clique em File > Open e selecione a imagem “image-cep.png”.

Segmentação de objetos com ImageJ

Na imagem “image-cep.png” temos um endereço de CEP. Entretanto, o que nos interessa são apenas os números (13.970-000). O texto “CEP:”, como também o fundo em degradê, precisam ser descartados. Para isso, precisamos segmentar apenas a área do nosso interesse. A forma mais simples de fazer isso é convertendo nossa imagem em tons de cinza e com o auxílio do histograma de imagem, podemos selecionar os pontos que correspondem aos caracteres do CEP.

No meu Image, clique em Type, escolha a opção 8-bit e teremos uma imagem semelhante à da imagem abaixo.

Segmentação de objetos com ImageJ

Na imagem acima podemos observar a diferença na tonalidade de cinza entre os caracteres do CEP, o texto e o fundo da imagem.

No menu Image, clique em Adjust e escolha opção Threshold para surgir o painel com o histograma e a opção para segmentarmos a imagem.

Segmentação de objetos com ImageJ

O gráfico apresentado na parte superior esquerda é o histograma da nossa imagem e nos controle logo abaixo dele, nós podemos selecionar o intervalo que desejamos. Observe que na parte destacada em vermelho temos um pequeno intervalo de tons de cinza que corresponde justamente aos números do CEP da imagem. Ajuste então os controles até obter um resultado semelhante ao do nosso exemplo.

Após ajustar os controles clique em Apply para ficarmos apenas com parte da imagem que corresponda ao CEP, inclusive com o ponto e hífen.

Segmentação de objetos com ImageJ

Contando objetos com o ImageJ

Agora temos uma imagem binária, na qual o fundo está em branco e os objetos (caracteres) em preto. Isto é o que precisamos para usar o método de contagem de objetos do ImageJ. Clique então no meny Analyze > Analyse Particles para abrir uma janela semelhante à da imagem abaixo.

Segmentação de objetos com ImageJ

Verifique se as opções marcadas estão conforme o exemplo acima e clique em OK. Teremos assim o seguinte resultado.

Segmentação de objetos com ImageJ

Na janela Results temos a informação referente a cada objeto encontrado e na janela Summary, podemos observar no campo Count o número de partículas encontradas.

Neste exemplo o campo Count diz ter encontrado 10 caracteres pelo fato de que ele considera o ponto e o hífen também como caracteres. No entanto, podemos notar na janela Results que a área desses caracteres é bem inferior ao restante e, dessa forma, podemos configurar para o contador ignorar objetos que estejam abaixo de determinado valor para que possamos ficar apenas com os números.

Clique no novamente meny Analyze > Analyse Particles mas, dessa vez, ajuste o valor size(pixel^2) em 50-Infinity para que o ImageJ ignore os objetos com área inferior a 50. Teremos, dessa forma, o resultado espero como mostra na imagem abaixo.

Segmentação de objetos com ImageJ

 

Coordenador de curso na Etec de Itapira, pós-graduado em desenvolvimento de sistemas web e professor nos cursos de Administração e Técnico em Informática para Internet. Nerd por vocação e blogueiro por opção, é autor do livro “Diário de um Blogueiro” e dos blogs Neurônio 2.0 e Hiperbytes.

Compartilhar

2 COMENTÁRIOS

  1. Olá Junior!
    Gostei muito da explicação e ela está me ajudando muito em análises de Sirius Red.
    Porém estou com uma dúvida: qual a unidade de Count e Total area?
    Obrigada!

  2. Olá!
    Fico feliz que este meu artigo esteja ajudando de alguma forma.
    Não estou mais trabalhando nessa área, mas se não me falha a memória as respostas para sua dúvida são: 50 para unidade de Count e 2441 para Total area.
    Espero que ajude.

DEIXE UMA RESPOSTA

Please enter your comment!
Please enter your name here