Imagens binárias II

imagens binárias Processamento de Imagens
Este post faz parte da série Imagens Binárias. Leia também os outros posts da série:

Introdução

Dando continuidade à primeira parte desta série, iremos implementar alguns dos algoritmos apresentados anteriormente com as ferramentas que instalamos em outros posts.

Algoritmo 1: Threshold 

Para implementar esse algoritmo, usaremos o opencv com QT. Consulte esse artigo para criar um novo projeto e adicione o seguinte código:

Nota-se uma enorme facilidade de se implementar esse algoritmo no OpenCV. Como visto no primeiro post, para se converter uma imagem colorida em binária é necessário convertê-la para tons de cinza. Isso é feito já na leitura da imagem na linha 13, com o parâmetro IMREAD_GRAYSCALE da função im_read. Todo o trabalho de binarização da imagem é feito em apenas uma linha de código como se vê na linha 23. O resultado desta técnica é a foto abaixo.

opencv_binFigura 1
 

Por ser tão simples, mostrarei como seria feito no SimpleCV. No script digite:

Tudo é feito na primeira linha de código. Lê-se o arquivo, converte para escala de cinza, converte a imagem para binário com o limite de 128. A função invert() serve para inverter pixels 1 para 0 e 0 para 1. Depois exibe e salva a imagem. O resultado é a imagem abaixo. Vale mencionar que as imagens geradas pelo OpenCV e SimpleCV, apesar de muito parecidas, não são iguais.

simplecv_lena_threshold

Figura 2

Algoritmo 2: Ordered dithering

Este algoritmo será implementado usando-se a ferramenta octave. O código fonte é o seguinte:

No algoritmo acima, usamos uma matriz de bayer 8x8. Replicamos essa matriz ao mesmo tamanho da imagem que queremos processar. Depois comparamos pixel a pixel e atribuímos valores de acordo com o algoritmo, 1 onde o pixel da imagem original é maior que o pixel da matriz de bayer e 0 em todos os outros. O resultado é a imagem abaixo.

octave_lena

Figura 3

 

Algoritmo 3: Error difusion

Para esta última técnica usaremos o Octave e OpenCV. A implementação no Octave está apresentada a seguir.

A imagem gerada pelo código acima é apresentada na figura 4.

floyd_octave

Figura 4

E esta é a implementação no OpenCV:

A imagem gerada está representada na figura 5 abaixo.

opencv_floyd

Figura 5

Neste algoritmo, como comentado no post anterior [1], possui uma complexidade maior e por isso um tempo de processamento superior. Primeiro, converte-se o arquivo RGB em tons de cinza. Depois é necessário varrer toda a imagem, e a cada iteração, recalcula-se e acumula-se o erro. Caso o valor do pixel seja acima de 128, atribui-se 255, caso contrário 0. Deve-se destacar que o tempo de processamento no OpenCV é muito menor que no Octave.

Conclusão

Atualmente existem diversas ferramentas para processamento de imagem que são muito robustas e simples. Nos exemplos deste post, nota-se a extrema facilidade de se implementar alguns algoritmos de binarização. O reuso de bibliotecas nos permite aprimorar os algoritmos, deixando-os mais rápidos, robustos e simples de serem usados. Porém deve-se tomar o cuidado de não apenas usar as funções, mas sim entender a teoria por trás dos algoritmos.

Referências

 

https://www.embarcados.com.br/opencv-2-4-9-qt5-ubuntu/

https://www.embarcados.com.br/simplecv-ubuntu/

https://www.embarcados.com.br/instalando-octave-ubuntu/

Outros artigos da série

<< Imagens binárias
Este post faz da série Imagens Binárias. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Marcelo Jo
Engenheiro eletrônico com 10 anos de experiência em sistemas embarcados, pós graduado em redes de computadores e atualmente cursando mestrado em sistemas de visão por computador na universidade Laval no Canadá. Compartilha seu conhecimento neste portal quando tem tempo livre e quando não está curtindo a vida com sua mulher e os 3 filhos.

Deixe um comentário

avatar
 
  Notificações  
Notificar