Segmentação Bayesiana de Cores em Imagens
Este trabalho propõe o uso de um classificador Naive Bayes para a tarefa de segmentação de imagens por cor, empregando duas classes de dados em seu modelo estatĂstico: pele e nĂŁo-pele. Busca-se assim, obter um algoritmo de segmentação por cor dotado de bons nĂveis de precisĂŁo e velocidade suficiente para ser aplicado em filmagens em tempo real em um computador pessoal.
Pré-requisitos
- Python 3.5.5
- OpenCV 3.1.0 ou superior
- Numpy 1.14.3 ou superior
Instalação
ApĂłs a instalação dos prĂ©-requisitos, Ă© possĂvel instalar o segmentador pelo repositĂłrio de pacotes do python com o comando:
$ sudo pip install bayesian_sgm
Exemplo
As imagens de treino e as respectivas versões binárias devem ser organizadas com o mesmo nome de arquivo, porém em pastas diferentes. No exemplo abaixo, as imagens coloridas estão na pasta n_dataset
, e a classificação binária em c_dataset
.
.
├── datasets
│ ├── c_dataset
│ │ ├── treino1.jpg
│ │ ├── treino2.jpg
│ │ ├── treino3.jpg
│ │ ├── treino4.jpg
│ │ └── ...
│ └── n_dataset
│ ├── treino1.jpg
│ ├── treino2.jpg
│ ├── treino3.jpg
│ ├── treino4.jpg
│ └── ...
└── script.py
O arquivo script.py
realiza o treinamento com base no dataset fornecido e aplica o segmentador no vĂdeo capturado pela webcam.
import cv2
import numpy as np
import bayesian_sgm
seg = bayesian_sgm.BayesianColorSGM()
seg.learn_from_dirs("datasets/c_dataset", "datasets/n_dataset")
cap = cv2.VideoCapture(0)
while(True):
ret, img = cap.read()
bin = seg.apply(img)
cv2.imshow("frame", img)
cv2.imshow("binary", bin)
k = cv2.waitKey(30) & 0xFF
if k == 27:
break
Fundamentação Teórica
Introdução
A separação de regiões correspondentes à pele humana em imagens digitais possui fundamental importância para a solução de problemas relacionados à visão computacional, como detecção de face, detecção de gestos e classificação de conteúdo. Tais aplicações empregam algoritmos de segmentação com o objetivo de delimitar áreas de interesse nas imagens, de modo a reduzir o escopo de informações a serem processadas e obter ganhos de desempenho.
Diversas sĂŁo as tĂ©cnicas envolvidas na tarefa de segmentação de imagens, como k-means e outras formas de reconhecimento de padrões. PorĂ©m, devido Ă s suas propriedades fĂsicas e forma peculiar de interagir com a luz, a pele humana possui caracterĂsticas visuais que a diferenciam de elementos inorgânicos, o que traz vantagem a abordagens baseadas na cor. De fato, o espectro de tonalidades da pele humana Ă© relativamente limitado, mesmo levando em consideração variações Ă©tnicas.
O problema resume-se, entĂŁo, a determinar se um dado conjunto de pixels pertence ou nĂŁo a uma regiĂŁo de pele humana com base em sua cor. Nesse contexto, a escolha do espaço de cores mais adequado aos matizes da pele humana, bem como o emprego de um modelo estatĂstico que permita analisar um conjunto previamente classificado de imagens pode ser uma solução eficaz. Tais escolhas estĂŁo intrinsecamente relacionadas Ă sensibilidade dos algoritmos de segmentação a problemas como condições de iluminação desfavoráveis e oclusĂŁo.
Metodologia
O teorema de Bayes, nomeado em homenagem a seu idealizador, Thomas Bayes (1701-1761), estabelece uma relação matemática para as probabilidades de eventos condicionados a evidências prévias. A probabilidade de um evento A, dado que houve a observação de uma evidência B é descrita por:
Este princĂpio possui diversas aplicações no campo da inferĂŞncia estatĂstica, em problemas que demandam a dedução de informações a partir da análise de um conjunto de amostras. Filtros de spam, por exemplo, analisam o texto de diversos emails classificados pelos usuários como spam e nĂŁo-spam e determinam a classe na qual se enquadra uma nova amostra com base na equação acima.
Classificadores Naive Bayes consideram que as caracterĂsticas analisadas sĂŁo independentes entre si. Isto Ă©, para um conjunto de caracterĂsticas condicionadas a uma evidĂŞncia , tem-se o produtĂłrio:
Tal pressuposto, embora possa comprometer a coerĂŞncia entre o modelo e a relação que de fato ocorre entre os dados, Ă© capaz de classificar as amostras com nĂveis de erro prĂłximos aos de mĂ©todos mais robustos.
Esta modelagem matemática pode ser aplicada para a segmentação de imagens como uma técnica de classificação de pixels em duas classes: pele e não-pele. Para imagens representadas em espaços de cor de 3 canais, por exemplo, considera-se que o evento A representa o fato de um pixel pertencer a uma região de pele. B corresponde ao valor numérico que um pixel assume em determinado canal. Logo, primeiramente é necessário obter , e , conhecidos como probabilidades a priori. De forma intuitiva, tem-se, pois:
Figura 1: Exemplo de imagem do conjunto classificado manualmente.
A partir de um conjunto de imagens como a Figura 1, Ă© possĂvel calcular as probabilidades a priori necessárias para a aplicação do teorema de Bayes. ApĂłs a análise de todas as imagens em um conjunto prĂ© classificado com a ajuda de um editor de imagens, os valores obtidos das probabilidades para cada canal sĂŁo armazenados em uma tabela de referĂŞncia.
Ao receber uma imagem inédita, o algoritmo busca, para cada pixel, uma probabilidade correspondente na tabela, de acordo com os valores de seus canais, isto é, sua cor. Em seguida os valores obtidos são multiplicados, conforme, para obter a classificação final. Dessa forma, a imagem se torna uma matriz de probabilidades inferidas, com valores entre 0 e 1. Determina-se, então, um limiar , de modo que:
Onde Ă© a probabilidade inferida e corresponde Ă classe atribuĂda ao pixel, isto Ă©, 0 para nĂŁo-pele e 1 para pele.
Para avaliar a capacidade de acerto do algoritmo, as probabilidades inferidas são comparadas com a classificação realizada manualmente. Considerando o erro quadrático médio do algoritmo aplicado em uma imagem composta por pixels, obtém-se:
onde representa o valor atribuĂdo ao -Ă©simo pixel na classificação manual.
Resultados
A Figura 2 mostra o resultado obtido pelo classificador Naive-Bayes para diferentes espaços de cor, nomeadamente, HSV, YCrCb e RGB, bem como as respectivas taxas de erro quadrático mĂ©dio. As imagens originais estĂŁo disponĂveis no banco de imagens Wikimedia Commons e foram classificadas manualmente com o auxĂlio do editor de imagens GIMP. Neste trabalho, para a obtenção das probabilidades a priori foram empregadas 13 imagens, tomando a diversidade Ă©tnica como critĂ©rio para sua escolha. As taxas de acerto obtidas variam, pois, de 88,4% para o espaço RGB a 90,6% no espaço YCrCb.
Figura 2: Comparativo de desempenho e taxas de erro em diferentes espaços de cor.
ReferĂŞncias
-
Ion Androutsopoulos, John Koutsias, Konstantinos V Chandrinos, GeorgePaliouras, and Constantine D Spyropoulos. An evaluation of naive bayesiananti-spam filtering. arXiv preprint cs/0006013, 2000.
-
James C Bezdek, LO Hall, and LP Clarke. Review of mr image segmen-tation techniques using pattern recognition. Medical physics, 20(4):1033–1048, 1992.
-
Margaret M Fleck, David A Forsyth, and Chris Bregler. Finding naked people. Em: European Conference on Computer Vision, pages 593–602. Springer, 1996.
-
Rein-Lien Hsu, M. Abdel-Mottaleb, and A. K. Jain. Face detection in color images. IEEE Transactions on Pattern Analysis and Machine Intelligence, 24(5):696–706, Maio de 2002.
-
Son Lam Phung, Abdesselam Bouzerdoum, and Douglas Chai. Skin segmentation using color pixel classification: analysis and comparison. IEEEtransactions on pattern analysis and machine intelligence, 27(1):148–154, 2005.
Autor
- Abner Nascimento - Universidade Federal do Ceará.