Você está na página 1de 131

Centro Federal de Educação Tecnológica de Minas Gerais

Sistema de Software para Contagem


Automática de Pessoas em Tempo Real

Coordenador:
Flávio Luis Cardeal Pádua

Orientandos:
Marco Aurélio Buono Carone
Renato Ferreira Lima e Correa Pereira

Belo Horizonte/MG

Dezembro de 2012
Resumo

Este trabalho aborda o projeto e desenvolvimento de um sistema de software para contagem au-
tomática de pessoas em tempo real, baseado em técnicas de processamento e análise de imagens
capturadas por dispositivos móveis. Diferentemente da grande maioria dos sistemas encontrados
na literatura e em aplicações comerciais, os quais frequentemente se baseiam no uso de sensores
fotoelétricos ou sensores de pressão, o presente trabalho propõe uma metodologia baseada exclu-
sivamente na análise das imagens obtidas por câmeras de vídeo instaladas na cena de interesse.
Especificamente, o sistema projetado neste trabalho foi concebido para operar de forma distribuída
e embarcada em plataformas móveis ou nós sensores, tais como smartphones, configurando ao sis-
tema características inovadoras que potencializam sua aplicação em diversos cenários. Cada nó
sensor é responsável por monitorar o campo de visão por ele coberto, aplicando algoritmos de Visão
Computacional para detectar, segmentar e contar objetos móveis que representem eventualmente
pessoas. As informações estimadas pelo sistema, por sua vez, são enviadas via rede a um servidor,
o qual pode utilizar os dados para geração de relatórios estratégicos e cálculos de indicadores. O
sistema projetado neste trabalho prevê que os serviços associados ao mesmo sejam acessíveis pela
Internet, provendo a seus usuários uma série de benefícios devido a este fato. No que se refere às
técnicas de processamento e análise de imagens aplicadas, o sistema baseia-se em: (1) um método
de detecção de objetos móveis que utiliza a operação de subtração do plano de fundo da cena
(modelo adaptativo) e modelos bidimensionais de pessoas, (2) um método estatístico para remo-
ção de sombras e ruídos, que confere ao sistema maior robustez sobretudo quanto a variações de
luminosidade na cena e (3) um método estatístico para realizar a estimativa de sentido de objetos
móveis. O sistema desenvolvido foi validado com sucesso em cenários desafiadores, tais como cenas
com várias pessoas e cenas com variação de luminosidade, atingindo uma taxa média de acerto de
94,10%.

Palavras-chave: Contagem de pessoas, análise de imagem, dispositivos móveis, Smartphones,


Visão Computacional.
Sumário

Lista de Figuras vi

Lista de Tabelas viii

1 Introdução 1
1.1 Caracterização do Problema de Pesquisa . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Relevância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Organização do texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Embasamento Teórico 8
2.1 Representação de Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Segmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Limiarização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Detecção de objetos em movimento . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 Subtração simples de imagens . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Correlação-Cruzada Normalizada . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Filtragem de Ruído . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.1 Filtragem Espacial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Atributos Humanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.1 Dimensões corporais humanas . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.2 Velocidade dos Humanos . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3 Revisão Bibliográfica 22
3.1 Métodos Baseados em Visão Estéreo . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Métodos que Utilizam Rastreamento . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Métodos que Não Utilizam Rastreamento . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 Métodos Baseados em Análise de Imagens de Vigilância . . . . . . . . . . . . . . . 26
3.5 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4 Sistema de Contagem de Pessoas em Tempo Real 28

iii
4.1 Visão geral do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Detecção de Novos Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.1 Obtenção da sequência de imagens . . . . . . . . . . . . . . . . . . . . . . 31
4.2.2 Subtração de imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.3 Subtração Adaptativa de Plano de Fundo . . . . . . . . . . . . . . . . . . . 38
4.2.4 Segmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.5 Algoritmo de segmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Contagem de Pessoas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1 Cálculo da largura humana em pixels . . . . . . . . . . . . . . . . . . . . . 45
4.3.2 Algoritmo de Contagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.4 Estimativa de Sentidos de Movimentação . . . . . . . . . . . . . . . . . . . . . . . 50
4.4.1 Algoritmo de Estimativa de Sentidos de Movimentação . . . . . . . . . . . . 51
4.5 Agregação de Dados de Contagem . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.5.1 Algoritmo de agregação de dados de contagem . . . . . . . . . . . . . . . . 55
4.6 Arquitetura e outras características do sistema . . . . . . . . . . . . . . . . . . . . 59
4.6.1 Considerações sobre os algoritmos utilizados . . . . . . . . . . . . . . . . . 59
4.6.2 Controle da operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.6.3 Arquitetura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.7 Contagem de pessoas em portas largas . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5 Resultados Experimentais 63
5.1 O Protótipo Desenvolvido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.1 Características do protótipo desenvolvido . . . . . . . . . . . . . . . . . . . 64
5.1.2 Portando o código existente para outra plataforma . . . . . . . . . . . . . . 65
5.2 Servidor de acompanhamento dos dispositivos . . . . . . . . . . . . . . . . . . . . 67
5.3 Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3.1 Calibrando o Algoritmo Desenvolvido . . . . . . . . . . . . . . . . . . . . . 68
5.3.2 Captura dos vídeos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4 Criação do Gabarito da Contagem . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.5 Experimentos e Análise dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . 75
5.5.1 Vídeo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.5.2 Vídeo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.5.3 Vídeo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.6 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

iv
6 Conclusões e Trabalhos Futuros 82
6.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

7 Referências Bibliográficas 84

A Especificação de requisitos 87

B Determinação do Conjunto Ótimo de Parâmetros do Sistema 105


B.1 Análise dos parâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
B.1.1 Limiar de Segmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
B.1.2 Fator de Detecção Mínima de uma Pessoa . . . . . . . . . . . . . . . . . 107
B.1.3 Configurações Elegíveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
B.2 Análise das Configurações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
B.2.1 Vídeo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
B.2.2 Vídeo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
B.2.3 Vídeo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
B.2.4 Resultado da Análise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
B.3 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

C Manual de utilização do dispositivo 113

v
Lista de Figuras

1.1 Cenários desafiadores para utilização do sistema . . . . . . . . . . . . . . . . . . . 1

2.1 Representação com resolução de 5 bits . . . . . . . . . . . . . . . . . . . . . . . . 9


2.2 Técnicas de separação de cores por prismas. . . . . . . . . . . . . . . . . . . . . . 10
2.3 Resultados da aplicação do método de limiarização. . . . . . . . . . . . . . . . . . 11
2.4 Subtração simples de imagens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Máscaras para filtros de suavização . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Exemplos de suavização com máscara n x n. . . . . . . . . . . . . . . . . . . . . . 16
2.7 Exemplo de aplicação do filtro Sobel. . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.8 Principais formas de elementos estruturantes na morfologia matemática. . . . . . . 17
2.9 Exemplo de aplicação de filtros morfológicos. . . . . . . . . . . . . . . . . . . . . . 18
2.10 Dimensões humanas adotadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.1 Principais grupos de técnicas aplicadas ao problema de contagem de pessoas . . . . 22

4.1 Configuração da cena de interesse. . . . . . . . . . . . . . . . . . . . . . . . . . . 28


4.2 Etapas do processo de contagem de pessoas. . . . . . . . . . . . . . . . . . . . . . 30
4.3 Interações entre as etapas do algoritmo de subtração de imagens. . . . . . . . . . . 33
4.4 Problema no uso do NCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.5 Mudanças ocorridas no plano de fundo ao longo do tempo. . . . . . . . . . . . . . 38
4.6 Incorporação e remoção de objetos na cena. . . . . . . . . . . . . . . . . . . . . . 39
4.7 Diagrama de atualização do plano de fundo. . . . . . . . . . . . . . . . . . . . . . 40
4.8 Aspecto do sinal desejado ao final do algoritmo de segmentação. . . . . . . . . . . 41
4.9 Sinal ao fim do passo 2 do algoritmo de segmentação. . . . . . . . . . . . . . . . . 43
4.10 Projeção em perspectiva do corpo humano e as variáveis ligadas à cena. . . . . . . . 46
4.11 Diagrama que resume as funcionalidades da segmentação das imagens e da contagem
por linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.12 Deslocamento das massas de pixel. . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.13 Diagrama que ilustra a funcionalidade do algoritmo de estimativa do sentido de
movimentação por linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

vi
4.14 Diagrama que ilustra a funcionalidade do algoritmo de agregação dos dados de con-
tagem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.15 Diagrama que ilustra quando os dados devem ser enviados para o servidor. . . . . . 60
4.16 Arquitetura da solução de comunicação. . . . . . . . . . . . . . . . . . . . . . . . 60

5.1 Diagrama do protótipo desenvolvido . . . . . . . . . . . . . . . . . . . . . . . . . . 67


5.2 Captura de tela do servidor Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3 Captura de tela da interface para cadastrar dispositivos em portas largas . . . . . . 69
5.4 Captura de tela do protótipo desenvolvido sendo executado em Mac OS X. . . . . . 72
5.5 Instalação do dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6 Sistema construído para apoiar a criação do gabarito de contagem. . . . . . . . . . 75
5.7 Quadros do vídeo 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.8 Resultado do vídeo 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.9 Quadros do vídeo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.10 Resultado do vídeo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.11 Situações desafiadoras no vídeo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.12 Quadros do vídeo 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.13 Resultado do vídeo 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

B.1 Sinal ao fim do passo 2 do algoritmo de segmentação. . . . . . . . . . . . . . . . . 106


B.2 Gráfico da acurácia geral obtida por configuração. . . . . . . . . . . . . . . . . . . 111

vii
Lista de Tabelas

5.1 Especificações técnicas do iPod Touch de Quarta Geração. . . . . . . . . . . . . . . 64


5.2 Especificações técnicas do Galaxy S WiFi 5.0 (YP-G70). . . . . . . . . . . . . . . . 66
5.3 Parâmetros a serem definido segundo a metodologia proposta. . . . . . . . . . . . . 70
5.4 Classificação das pessoas quanto à forma (considerando vista em planta) . . . . . . 74
5.5 Resultados obtidos no vídeo 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.6 Resultados obtidos no vídeo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.7 Resultados obtidos no vídeo 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

B.1 Parâmetros citados ao longo da metodologia proposta. . . . . . . . . . . . . . . . . 106


B.2 Parâmetros utilizado para cada confiuração. . . . . . . . . . . . . . . . . . . . . . . 107
B.3 Valores de contagem obtidos com o gabarito. . . . . . . . . . . . . . . . . . . . . . 108
B.4 Proporção do número de pessoas que entraram e saíram sobre o total de pessoas
contadas em cada vídeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
B.5 Contagem realizada pelo sistema com o vídeo 1. . . . . . . . . . . . . . . . . . . . 108
B.6 Valores de acurácia obtidos com o vídeo 1. . . . . . . . . . . . . . . . . . . . . . . 109
B.7 Contagem realizada pelo sistema com o vídeo 2. . . . . . . . . . . . . . . . . . . . 109
B.8 Valores de acurácia obtidos com o vídeo 2. . . . . . . . . . . . . . . . . . . . . . . 109
B.9 Contagem realizada pelo sistema com o vídeo 3. . . . . . . . . . . . . . . . . . . . 110
B.10 Valores de acurácia obtidos com o vídeo 3. . . . . . . . . . . . . . . . . . . . . . . 110
B.11 Representatividade do número de pessoas que passaram no vídeo sobre o total. . . . 111
B.12 Acurácia média geral obtida por configuração. . . . . . . . . . . . . . . . . . . . . 111

viii
1 | Introdução

O presente trabalho aborda o problema de se estimar fluxos de pessoas, utilizando técnicas de pro-
cessamento e análise de sequências de imagens. O sistema de contagem de pessoas projetado para
tratar esse problema tem aplicabilidade em diversos cenários, como os ilustrados na Figura 1.1,
os quais são caracterizados por problemas bastante desafiadores. Grande parte dos trabalhos re-
lacionados pesquisados na literatura se baseiam em técnicas de subtração do plano de fundo da
cena para detecção de movimento de pessoas, utilizando limiarização de imagens (Bhuvaneshwar e
Mirchandani, 2004; Kim et al., 2002; Masoud e Papanikolopoulos, 2001; Kettnaker e Zabih, 1999);
metodologias estatísticas que possibilitam distinguir entre pixels em movimento e pixels estacionários
em uma sequência de imagens, para segmentação do plano de fundo e dos objetos em movimento
(Teixeira e Savvides, 2007; Jeon e Rybski, 2006; Lu e Tan, 2001; Haritaoglu et al., 1998); rastrea-
mento de pessoas utilizando o filtro preditivo de Kalman para estimar novas posições (Silva et al.,
2009; Beymer e Konolige, 1999); monitoramento de pedestres utilizando scanners a laser (Zhao e
Shibasaki, 2005); estimação dos movimentos de pedestres por meio do cálculo de campos de Fluxo

(a) (b) (c) (d)

(e) (f ) (g) (h)

Figura 1.1: Cenários desafiadores para utilização do sistema: (a) casais; (b) pessoas com necessidades
especiais; (c) pais acompanhados de crianças; (d) pessoas com carrinhos de compras; (e) pessoas portando
acessórios; (f) forte influência da iluminação externa; (g) reflexos e sombras e (h) mudanças no plano de
fundo e na iluminação da cena.

1
2

Ótico (Pádua et al., 2003) e, finalmente, identificação das pessoas presentes na cena a partir do
uso de modelos de suas formas, juntamente com técnicas de análise de movimentos e classificadores
neurais (Kong et al., 2005; Schofield et al., 1997).

A contagem de pessoas em tempo real encontra aplicações importantes no setor empresarial e em


diversos setores da sociedade, sendo que a utilização de dispositivos móveis com capacidade de
capturar imagens, munidos de poder computacional e que oferecem capacidade de comunicação
representa a tendência atual, devido às diversas vantagens de tais sistemas sobre soluções mais
tradicionais baseadas em técnicas que utilizam, por exemplo, sensores fotoelétricos ou de pressão.

Em estabelecimentos comerciais, tais como shoppings e lojas de departamento, o monitoramento de


pessoas que passam por áreas estratégicas fornece informações valiosas para o aprimoramento dos
serviços de atendimento aos clientes (Silva et al., 2009; Pádua et al., 2003). Por outro lado, em
áreas externas, como por exemplo, cruzamentos de avenidas, informações sobre o fluxo de pessoas
permitem o desenvolvimento de projetos mais eficientes para o controle do tráfego (Silva et al., 2009;
Bhuvaneshwar e Mirchandani, 2004). Em todos estes cenários, a utilização de métodos automáticos
de contagem de pessoas por um longo período permite a obtenção de dados de grande relevância
para o planejamento e desenvolvimento de sistemas específicos para cada tipo de aplicação.

Especificamente, o presente trabalho desenvolve um sistema de software automático para contagem


de pessoas em tempo real, utilizando-se de alguns conceitos adotados em uma versão preliminar
proposta e implementada durante o trabalho desenvolvido em Silva (2009). Nesse trabalho, para a
localização e identificação de pessoas, o sistema baseou-se no uso de técnicas simples de subtração
do plano de fundo da cena e em uma técnica estatística para remoção de sombras. No que se refere
ao algoritmo de rastreamento de pessoas, utilizou-se o algoritmo de janelas deslizantes baseadas
no Filtro de Kalman para predição das posições dos indivíduos. Experimentos realizados com esta
versão do sistema demonstraram que o mesmo é promissor, atingindo uma exatidão de contagem
superior a 80% em todos os casos estudados. Entretanto, cabe ressaltar que a versão inicialmente
desenvolvida nesse trabalho representava um simples protótipo, não apresentando condições de ser
aplicada diretamente no mercado, dada a necessidade de realização de vários aprimoramentos que
garantiriam sua transformação em um processo capaz de compor um produto final com alto valor
agregado.

Neste cenário, buscando-se avançar nesta direção, o sistema projetado neste trabalho, diferentemente
daquele proposto em Silva (2009), foi concebido para operar de forma distribuída e embarcada em
plataformas móveis ou nós sensores, tais como smartphones, configurando ao sistema características
1.1. CARACTERIZAÇÃO DO PROBLEMA DE PESQUISA 3

inovadoras que aumentam sua aplicabilidade, escalabilidade e eficácia. Essas características puderam
ser alcançadas principalmente devido (i) às praticidade de instalação desses dispositivos, devido a
suas pequenas dimensões e baixo consumo de energia; (ii) às possibilidades de comunicação providas
por eles; e (iii) devido ao poder de processamento oferecido por eles atualmente, adequado para
realizar os algoritmos propostos. Cada nó sensor é responsável por monitorar o campo de visão por
ele coberto, aplicando algoritmos de Visão Computacional para detectar, segmentar e contar objetos
móveis que representem eventualmente pessoas.

Visão Computacional é um campo que engloba os métodos de aquisição, processamento, análise


e compreensão de imagens, ou de mofo mais geral, dados de grandes dimensões do mundo real,
visando a trazer informações simbólicas ou numéricas, por exemplo, na forma de decisões (Forsyth,
2003).

O sistema projetado neste trabalho prevê que os serviços associados ao mesmo - como, por exemplo,
o acesso aos relatórios gerados à partir da análise da contagem de pessoas - serão acessíveis pela
Internet. No que se refere às técnicas de processamento e análise de imagens aplicadas, o sistema
baseia-se em: (1) um método de detecção de objetos móveis que utiliza a operação de subtração do
plano de fundo da cena (modelo adaptativo) e modelos bidimensionais de pessoas, (2) um método
estatístico para remoção de sombras e ruídos, que confere ao sistema maior robustez sobretudo
quanto a variações de luminosidade na cena e (3) um método estatístico para estimativa de sentido
de objetos móveis.

Mediante a implementação das técnicas mencionadas, espera-se que este trabalho contribua com
uma metodologia eficaz, capaz de ser utilizada com eficiência em aplicações relacionadas ao estudo
de fluxo e comportamento de pessoas. Tais aplicações podem incluir, por exemplo, monitoramento
de múltiplos pontos de interesse em um ambiente; geração de relatórios estratégicos; e cálculos de
indicadores, tais como, taxa de conversão e hot zones.

1.1 Caracterização do Problema de Pesquisa

Este trabalho consiste em desenvolver um sistema de contagem de pessoas automático e em tempo


real, baseado na análise de sequências de imagens de uma cena de interesse. O sistema desenvolvido
é composto por um ou mais dispositivos móveis com capacidade de captura de imagens e com poder
de processamento e por um servidor que recebe os dados da contagem realizada pelos dispositivos.
Tais dispositivos executarão um software baseado em técnicas de Visão Computacional, o qual,
1.1. CARACTERIZAÇÃO DO PROBLEMA DE PESQUISA 4

além de realizar o monitoramento da cena, permitirá identificar pessoas na cena, contá-las e estimar
o sentido de movimentação delas. No que se refere às cenas de interesse, nas quais as pessoas
executarão suas trajetórias, este trabalho impõe a elas as seguintes restrições:

• Deverão sempre consistir de ambientes internos, sem influência forte de iluminação natural.

• Terão sempre iluminação adequada (luminosidade controlada) para o funcionamento do sis-


tema.

• Não deverão possuir solos cujas superfícies sejam especulares ou qualquer outra superfície
lisa que apresente reflexos das pessoas que passam. A superfície do solo deve ser fosca, sem
reflexos.

• Não deverão possuir outros objetos que se movam com frequência, como vitrines, caixas,
portas deslizantes ou de abertura “em L”, entre outros.

• Deverão ser inteiramente representadas nas imagens produzidas pelos dispositivos responsáveis
pela captura da cena, minimizando-se possíveis efeitos de oclusão de pessoas.

• Não deverão consistir em locais de passagem de multidões (mais de uma pessoa a cada 2m2
- dois metros quadrados).

O sistema deverá ser concebido para contar pessoas que se movimentem em velocidades comuns
em áreas urbanas, como será descrito na Seção 2.5.2 deste trabalho. Pessoas paradas, movendo-se
lentamente ou correndo na cena de interesse podem não ser contadas e reduzirão a exatidão do
sistema.

Como o sistema deste trabalho prevê que os serviços associados ao mesmo sejam acessíveis pela
Internet, assume-se, portanto, que, se os dispositivos forem instalados, haverá conexão adequada ao
funcionamento da solução, em termos de disponibilidade e de largura de banda.

Para que se minimizem os efeitos de oclusão entre pessoas distintas que se movem na cena, sobretudo
em cenas com grande número de pessoas, o sistema de contagem proposto neste trabalho é projetado
prevendo-se que os dispositivos que capturam as imagens da cena serão instalados no teto dos
locais onde estiverem, em posições ortogonais ao solo, obtendo-se uma visão zenital da cena. Os
1.2. RELEVÂNCIA 5

1
dispositivos poderão ser instalados somente em locais onde o pé direito seja maior que 2m (dois
metros) e menor que 5m (cinco metros).

Finalmente, o sistema desenvolvido neste trabalho foi projetado para atender aos seguintes requisitos:

• Baixo custo computacional, o qual é alcançado por meio da utilização de algoritmos eficientes,
garantindo-se a aplicação do sistema em tempo real em dispositivos móveis.

• Baixo custo financeiro, mediante a utilização de equipamentos de baixo custo.

• Tolerância a variações nas condições ambientais, tais como pequenas variações de luminosi-
dade, pequenas vibrações mecânicas e outros ruídos nas câmeras utilizadas.

• Eficácia no processo de identificação de objetos móveis, contabilizando-se pessoas e


desprezando-se outros objetos que estejam transitando sob os campos de visão das câme-
ras.

• Robustez a comportamentos imprevisíveis de pessoas, evitando-se influências negativas no


processo de contagem, como quando estas se encontram paradas dentro do campo de visão
da câmera ou passam por ele muito rapidamente.

Um documento de especificação de requisitos inicial foi redigido, constando os demais requisitos


funcionais do sistema. O documento encontra-se no Anexo A.

1.2 Relevância

Avanços tecnológicos recentes no estudo e monitoramento do tráfego de consumidores em estabele-


cimentos comerciais urbanos evidenciaram a necessidade de se conceber sistemas confiáveis capazes
de contabilizar em tempo real o número de pessoas circulando em uma determinada região, bem
como suas correspondentes direções de movimento (Silva, 2009). Em estabelecimentos comerciais,
essas informações tornam-se úteis para o projeto de marketing e organização dos produtos e dos
diversos serviços oferecidos.

Em situações nas quais o fluxo de pessoas ocorre em regiões limitadas, a contagem de pessoas tem
sido feita por meio de roletas mecânicas, sensores infravermelhos ou fotoelétricos e placas sensíveis
1
Pé-direito é uma expressão frequentemente utilizada em arquitetura, engenharia e em construções em geral, e
indica a distância do pavimento ao teto.
1.3. OBJETIVOS 6

ao peso. Uma série de limitações, porém, podem ser apontadas para esses métodos: pessoas que
passam simultaneamente em sensores fotoelétricos ou infravermelhos podem ser contadas apenas
como uma única pessoa. Roletas mecânicas podem inibir a entrada de pessoas em estabelecimentos.
Placas sensíveis a peso podem contabilizar outros objetos que as atravessem e podem ignorar pessoas
passando simultaneamente, como crianças acompanhadas de pais ou duas crianças.

No caso de ambientes externos, como, por exemplo, uma avenida no centro de uma cidade, tais
métodos são ainda mais ineficientes, não sendo capazes de medir a Seção transversal real do objeto
que se move, bem como sua direção de movimento, o que algumas vezes é importante para o
monitoramento do fluxo de entrada versus o fluxo de saída de indivíduos em um dado sistema.
Neste contexto, a análise de sequências de imagens surge como uma alternativa interessante na
correta discriminação e contabilização de indivíduos que estejam caminhando em uma determinada
área.

Naturalmente, uma estimativa do número médio de pessoas que se movimentam em um dado


ambiente pode ser feito offline. Entretanto, tais resultados são de natureza estática e podem ser
utilizados somente para um projeto mais generalista do fluxo global. Somente com informações
adquiridas em tempo real pode-se obter um planejamento mais confiável.

1.3 Objetivos

O objetivo principal deste trabalho consiste em projetar e desenvolver um sistema automático baseado
em Visão Computacional que seja capaz de contar em tempo real pessoas que circulem em regiões
de interesse existentes em estabelecimentos comerciais.

Por meio deste trabalho, objetiva-se gerar os seguintes resultados finais: (i) uma metodologia de con-
tagem que possa ser utilizada em aplicações comerciais ligadas ao estudo de fluxo e comportamento
de pessoas e (ii) disseminação de novos conhecimentos para a sociedade.

Para tanto, são perseguidos os seguintes objetivos específicos:

1. Utilizar modelos de plano de fundo adaptativos: técnicas para a obtenção de modelos


adaptativos de planos de fundo são úteis em uma ampla variedade de aplicações, tais como,
segurança patrimonial e controle de tráfego. Por meio do uso de tais técnicas, o sistema
de contagem de pessoas será capaz de segmentar e identificar pessoas com maior exatidão,
mesmo diante de amplas variabilidades nas características da cena.
1.3. OBJETIVOS 7

2. Criar um algoritmo de estimativa de sentido das pessoas contadas: através de


métodos estatísticos de baixo custo computacional e alta taxa de acerto.

3. Desenvolver um sistema disponível via Web para acompanhemnto dos disposi-


tivos que possibilite gerenciar os dispositivos utilizados remotamente, sem necessidade de
intervenção humana.

4. Realizar experimentos em tempo real com diversos tipos de cenas: por meio destes
experimentos, serão avaliadas a eficácia e a escalabilidade do sistema de contagem de pessoas.
1.4. ORGANIZAÇÃO DO TEXTO 8

1.4 Organização do texto

Este texto está organizado em seis capítulos e um apêndice:

• No Capítulo 3, são apresentados os trabalhos relacionados.

• No Capítulo 2 é feito o embasamento teórico das técnicas utilizadas pelo sistema proposto,
como as de segmentação e de modelo de plano de fundo adaptativo, além de apresentar
fundamentações dos valores adotados como parâmetros ao longo do texto, como as dimensões
humanas.

• A modelagem e desenvolvimento da técnica proposta para contagem de pessoas em tempo


real são apresentados no Capítulo 4.

• Os experimentos conduzidos são apresentados e analisados no Capítulo 5.

• No Capítulo 6 é feita a conclusão do trabalho e trabalhos futuros são sugeridos.

• No Apêndice A é apresentada a especificação de requisitos do sistema proposto neste trabalho.

• No Apêndice B mostra-se como foi obtido o conjunto ótimo de valores para os parâmetros
utilizados no metodologia proposta.

• O Apêndice C consiste em um manual de utilização do sistema proposto.


2 | Embasamento Teórico

Com o advento dos sistemas de visão, o processamento e análise de imagens passaram apresentar
grande relevância em aplicações científicas. A visão computacional visa a decifrar o conteúdo físico
de uma imagem ou de uma sequência de imagens através de seu processamento. O processamento
das imagens é uma forma de processamento de sinal, para o qual a entrada é uma imagem – ou, em
outras palavras, um sinal bidimensional ou multidimensional – e a saída é um conjunto de parâmetros
ou características relacionadas a ela. Dessa forma, há uma série de métodos matemáticos existentes
para extrair dados de imagens, como medidas de superfície, comprimentos e posição de objetos
das imagens. Para a análise, é interessante assegurar a qualidade das imagens, eliminado prováveis
ruídos. Isso é possível através do uso de filtros.

Neste Capítulo, conceitos básicos relacionados a este trabalho são apresentados. Tais conceitos
envolvem os métodos matemáticos necessários para processar as imagens, como as técnicas de
remoção de sombras, segmentação de imagem e redução de ruído. Além disso, são apresentados
fundamentos de fatores humanos, como dimensões corporais médias e velocidade média de pessoas,
usados comumente na engenharia de transportes para o desenvolvimento de sistemas que interagem
com o ser humano.

2.1 Representação de Imagens

Segundo Gonzalez e Woods (2008), uma imagem digital monocromática (tons de cinza), refere-se
a uma função matemática bidimensional de intensidade de luz f (x, y), onde x e y representam
as coordenas espaciais e o valor de f é proporcional ao brilho, ou seja, ao nível de cinza naquele
ponto da imagem pode ser definida como uma função de duas dimensões, f (x, y), onde x e y são
coordenadas espaciais (do plano) e a amplitude de f num par de coordenadas (x, y) é chamada de
intensidade ou nível de cinza do ponto na imagem. Cada ponto (x, y) na imagem digital é chamado
de pixel.

9
2.1. REPRESENTAÇÃO DE IMAGENS 10

31 26 26 26 31
13 0 0 0 13
19 7 0 7 19
31 26 19 13 7 0
26 19 7 19 2
31 26 19 26 31

Figura 2.1: Representação de resolução de 5 bits para o nível de intensidade luminosa de uma imagem
monocromática.

Câmeras monocromáticas possuem apenas um sensor e adquirem imagens em uma resolução de


intensidade luminosa que define as diferentes tonalidades de cinza em que a imagem será represen-
tada.

A Figura 2.1 ilustra a resolução de nível de intensidade luminosa de 5 bits em uma imagem mono-
cromática. Uma imagem de resolução de 8 bits para o nível de intensidade luminosa ou, em outras
palavras, de 256 tons de cinza, pode ter intensidades que variam desde preto (valor 0) até branco
(valor 255) em cada pixel.

Diversos sistemas foram criados para representar imagens coloridas, como RGB, XYZ, HSV e outros.
Todos eles possuem características próprias e apresentam as informações de cor de forma particular
que os torna mais ou menos convenientes, dependendo da aplicação.

As imagens de câmeras coloridas no formato RGB – as quais foram usadas neste trabalho – são
compostas por três componentes básicas: vermelha, verde e azul. A partir da combinação destas
cores é possível obter as demais cores do espectro visível. Nestas câmeras, a informação luminosa
passa pela lente e é projetada sobre um arranjo de prismas antes de atingir os sensores, como
mostrado na Figura 2.2. Ao entrar em contato com os prismas, a luz é dividida em três componentes,
e direcionada para os três sensores respectivamente. Desta forma, o resultado é a aquisição e o
armazenamento de três imagens em áreas diferentes na memória do computador, que combinadas,
formam a imagem colorida. Para distinguir objetos em uma imagem, é necessário que haja diferença
de intensidade luminosa entre eles.
2.2. SEGMENTAÇÃO 11

Sensor de verde

Prisma 3
Camada de filtro
de vermelho Camada de
filtro de azul
Prisma
2
Sensor de Sensor
Vermelho

Pri
de azul

sm
1 a
Objetiva

Luz
(a)

(b)

Figura 2.2: Técnicas de separação de cores por prismas. (a) Técnica de divisão de feixes luminosos em 3
componentes coloridos; (b) Gráfico das componentes RGB.

2.2 Segmentação

No processamento digital de imagens, segmentar significa subdividir a imagem em partes ou objetos


constituintes de interesse (Gonzalez e Woods, 2008). A segmentação de objetos feita automa-
ticamente tem sido baseada primariamente em técnicas de reconhecimento de similaridade ou de
diferenças mensuráveis na imagem.

Segundo Gonzalez e Woods (2008), as técnicas empregadas pelos algoritmos de segmentação são
geralmente baseadas em duas propriedades básicas: descontinuidade e similaridade. Na descontinui-
dade, a abordagem consiste em particionar uma imagem tomando por base as mudanças abruptas
2.2. SEGMENTAÇÃO 12

da intensidade do ponto (pixel). As principais áreas de interesse desta categoria são: detecção de
pontos isolados, de linhas e de bordas da imagem. Na similaridade, a abordagem é baseada em
limiarização e crescimento de regiões (Gonzalez e Woods, 2008).

2.2.1 Limiarização

A limiarização (thresholding) é uma das mais importantes técnicas para a segmentação de imagens.
No caso de imagens em tons de cinza, analisa-se a similaridade dos níveis de cinza da imagem
extraindo os objetos de interesse por meio da seleção de um limiar T que separa os agrupamentos
de níveis de cinza (Gonzalez e Woods, 2008).

Uma imagem limiarizada g(x, y) é uma imagem binária (com dois níveis de intensidade de cor)
definida como: (
1, se f (x, y) > T
g(x, y) = . (2.1)
0, se f (x, y)  T

Em que f (x, y) corresponde ao nível de cinza do pixel, T é um valor de tom de cinza predefinido
denominado limiar. Os pixels rotulados com 1 correspondem aos objetos e os pixels rotulados com 0
correspondem ao fundo (Gonzalez e Woods, 2008). O resultado desse método depende da escolha
do limiar, como pode ser observado nas Figuras 2.3 (a) e (b).

(a) (b) (c)

Figura 2.3: Resultados da aplicação do método de limiarização. (a) Imagem original, representada em 256
tons de cinza. (b) Imagem limiarizada: T = 128. (c) Imagem limiarizada: T = 190.
2.3. DETECÇÃO DE OBJETOS EM MOVIMENTO 13

2.3 Detecção de objetos em movimento

Em uma sequência de imagens, para se conhecer novos objetos ou para se detectar objetos em
movimento, é fundamental que o plano de fundo seja bem conhecido. Os objetos que se deslocam
na cena serão conhecidos através de comparações entre a imagem atual da sequência e a imagem
que representa o plano de fundo.

2.3.1 Subtração simples de imagens

A subtração simples de imagens consiste em uma das formas de realizar a comparação entre o plano
de fundo e imagem atual da cena. Ela caracteriza-se por subtrair a intensidade luminosa entre os
pixels das duas imagens. O resultado será uma imagem contendo os objetos que não possuem a
mesma intensidade de cor do plano de fundo e, em geral, representará os objetos em movimento.
Essa técnica no entanto, requer que o plano de fundo seja sempre atualizado. Para tanto, com a
cena estática, sem qualquer objeto em movimento, pode ser adquirida a imagem da sequência e
utilizá-la como modelo do plano de fundo nesse método de subtração, como feito em Masoud e
Papanikolopoulos (2001), Kim et al. (2002) e Bhuvaneshwar e Mirchandani (2004).

Variações na iluminação da cena, a existência de sombras, pequenos movimentos de objetos do


próprio plano de fundo e diversos outros fatores, no entanto, podem tornar o resultado da subtração
muito sensível, apontando como objetos em movimentos falsos positivos. A Figura 2.4 mostra alguns
testes realizados com a subtração simples de imagens.

2.3.2 Correlação-Cruzada Normalizada

Grest et al. (2003) sugerem uma técnica robusta capaz de remover a sombra dos objetos em primeiro
plano na cena, preservando a silhueta desses objetos. Primeiramente, a limiarização é utilizada para
se segmentar os objetos do primeiro plano, o qual é capaz de lidar com mudanças rápidas de brilho
na imagem. Em seguida, utilizando um espaço de cor adequado, é verificada a similaridade na
crominância dos pixels.

Para distinguir as sombras dos objetos na imagem segmentada, Grest et al. (2003) consideram as
seguintes condições: “um pixel de sombra é mais escuro que um pixel corresponde na imagem de
plano de fundo e a textura de sombra é correlacionada com a textura correspondente da imagem
2.3. DETECÇÃO DE OBJETOS EM MOVIMENTO 14

(a) (b) (c)

(d) (e)

(f ) (g) (h)

Figura 2.4: Subtração simples de imagens implementadas utilizando um Smartphone. (a) Imagem inicial
capturada, utilizada como plano de fundo. (b) e (c) Subtração com imagens capturadas poucos instantes
depois, sem nenhuma alteração na cena. (d) e (e) Subtração após a incorporação de um objeto à cena. (f)
Mesma cena sem iluminação artificial. (g) Mesma cena com iluminação artificial novamente. (h) Subtração
após o dispositivo ter sido exposto a pequena vibração mecânica.

de plano de fundo”. Na imagem analisada, para cada pixel mais escuro que o pixel correspondente
na imagem de plano de fundo, Grest et al. (2003) sugerem calcular o parâmetro NCC - Correlação
Cruzada Normalizada.

Considere as matrizes It e B, ambas de mesmas dimensões, representando, respectivamente, a


imagem atual da cena e a imagem que representa o plano de fundo. Considere associada a cada pixel
(i, j) da matriz que representa a imagem atual, uma máscara Tij , de dimensões (2N +1)⇥(2N +1),
tal que Tij (n, m) = It (i + n, j + m), para N  n  N, N  m  N . Ou seja, Tij corresponde
a uma vizinhança do pixel (i, j) da imagem atual. Com tais parâmetros definidos, calcula-se o
2.3. DETECÇÃO DE OBJETOS EM MOVIMENTO 15

parâmetro PN CC do pixel (i, j):

ER (i, j)
PN CC (i, j) = . (2.2)
EB (i, j)ET ij

Onde:
N
X N
X
ER (i, j) = B(i + n, j + m)Tij (n, m), (2.3)
n= N m= N

v
u N N
uX X
EB (i, j) = t B(i + n, j + m)2 , (2.4)
n= N m= N

N
X N
X
ET ij (i, j) = Tij (n, m)2 . (2.5)
n= N m= N

Para cada pixel de sombra, o PN CC possui valor próximo de 1 (um). Assim, serão eliminados os
pixels escuros na imagem segmentada, se o PN CC do pixel na imagem corrente e o pixel na imagem
de referência (plano de fundo) for maior que o limiar definido para o NCC, lN CC .

O valor obtido após essa operação é, assim, chamado de PN CC e calculado como na equação 2.6:

(
PN CC (i, j), se PN CC (i, j) lN CC
PN CC (i, j) = . (2.6)
0, se PN CC (i, j) < lN CC

Jacques et al. (2005) propõem um método de remoção de sombra baseado na técnica apresentada
em Grest et al. (2003), onde o parâmetro NCC é utilizado para detectar pixels candidatos a sombra.
A técnica apresentada por Jacques et al. (2005) utiliza o NCC como um patamar inicial para detectar
sombra, e refina o processo usando estatísticas locais da razão dos pixels.
2.4. FILTRAGEM DE RUÍDO 16

2.4 Filtragem de Ruído

A saída dos algoritmos de segmentação de imagens em geral apresenta resultados ruidosos: grupos
de pixels espalhados e isolados, buracos e contornos serrilhados (Gonzalez e Woods, 2008). Para
aumentar a qualidade desses resultados, gerando uma saída condizente com aquela esperada pelo
algoritmo, utilizam-se transformações feitas pixel a pixel, chamadas de filtros. Os filtros não consi-
deram apenas a intensidade de um único pixel, mas de uma janela que compõe ele e sua vizinhança.
Nesta Seção, as técnicas de filtragem abordadas as do domínio espacial – lineares e não lineares.

2.4.1 Filtragem Espacial

Considerando a representação da imagem como uma matriz, o processo de filtragem consiste em


aplicar matrizes denominadas máscaras sobre a imagem original. Essas máscaras percorrem todos os
pixels da imagem e seus elementos, chamados de coeficientes, modificam os valores de intensidade
desses pixels e de seus vizinhos.

Filtros Lineares

Filtros espaciais lineares usam máscaras que realizam somas ponderadas das intensidades de pixels
ao longo da imagem. Em geral, são utilizados para suavizar ou realçar detalhes de uma imagem.
Filtros de suavização causam um efeito de “borramento” na imagem original, fazendo com que a
imagem perca detalhes e contraste. Esses filtros substituem o pixel em questão pela média de uma
máscara. Quanto maior a máscara, maior o efeito de suavização. A Figura 2.5 mostra exemplos de
máscaras de suavização.

5x5

3x3 1 1 1 1 1

1 1 1 1 1 1 1 1
1 x 1 x
1 1 1 1 1 1 1 1
9 25
1 1 1 1 1 1 1 1
1 1 1 1 1

Figura 2.5: Máscaras para filtros de suavização.


2.4. FILTRAGEM DE RUÍDO 17

(a) (b) (c) (d)

Figura 2.6: Exemplos de suavização com máscara n x n. (a) Imagem original; (b) Resultado com máscara
3x3; (c) Resultado com máscara 5x5 ; (d) Resultado com máscara 7x7. Fonte: Gonzalez e Woods (2008).

A Figura 2.6 ilustra a aplicação dessa técnica. Esses filtros também são chamados de filtros passa-
baixas, uma vez que as informações de alta frequência, que representam os detalhes dos contornos
da imagem ou ruídos, são descartados.

Filtros de realce são, por sua vez, aqueles que preservam as características dos contornos da imagem
e atenuam ou eliminam as baixas frequências, realçando as altas frequências. Esses filtros destacam
características como bordas, linhas, curvas e manchas e tornam mais nítidas as transições entre
regiões diferentes (como os contornos), realçando o contraste. Um exemplo de filtro de realce é o
Sobel.

O filtro Sobel calcula o gradiente da intensidade da imagem em cada ponto, dando a direção da
maior variação de claro para escuro e a quantidade de variação nessa direção.

Assim, obtém-se uma noção de como varia a luminosidade em cada ponto, de forma mais suave
ou abrupta. Com isto consegue-se estimar a presença de uma transição claro-escuro e de qual sua

(a) (b)

Figura 2.7: Exemplo de aplicação do filtro Sobel. (a) Imagem original; (b) Resultado da aplicação do filtro
Sobel.
2.4. FILTRAGEM DE RUÍDO 18

orientação. Como as variações claro-escuro intensas correspondem a fronteiras bem definidas entre
objetos, obtém-se a detecção de contornos. As máscaras que devem ser aplicadas na imagem original
para aplicar o filtro Sobel são, na forma matricial:
2 3 2 3
1 2 1 1 0 1
6 7 6 7
Zh = 6
40 0 075 Zn = 6
4 2 0 2 7.
5
1 2 1 1 0 1

A Figura 2.7 apresenta uma imagem e a saída da aplicação do filtro de Sobel.

Filtros Não-Lineares

Filtro não-linear é um filtro que não pode ser representado como uma soma ponderada de pixels
(Gonzalez e Woods, 2008). Filtros não-lineares mais comuns são os de mediana. Dentro dos filtros
não lineares, destacam-se também algumas transformações, como a dilatação e a erosão. Em geral,
eles são aplicados para corrigir e diminuir ao máximo os erros de segmentação e ruídos na morfologia
do objeto, completando pequenos buracos e eliminando regiões isoladas. Por isso, são chamados de
filtros morfológicos. Ambos atuam nas bordas internas e externas dos objetos e utilizam um elemento
estruturante, como mostrado na Figura 2.8 que percorre a imagem para realizar a operação.

Filtros morfológicos utilizam elementos estruturantes, uma imagem binária pequena, ou seja, uma
matriz de pixels pequenos, cada um com um valor de zero e possuem as seguintes propriedades: (i)
as dimensões da matriz especificam o tamanho do elemento de estruturação; (ii) o padrão de uns
e zeros especifica a forma do elemento de estruturação; (iii) a origem do elemento de estruturação
é geralmente um dos seus pixels, embora geralmente a origem possa estar fora do elemento de
estruturação (Gonzalez e Woods, 2008).

N4 N8

(a) (b)

Figura 2.8: Principais formas de elementos estruturantes na morfologia matemática. (a) Vizinhança 4 (N4 );
(b) Vizinhança 8 (N8 ).
2.4. FILTRAGEM DE RUÍDO 19

Imagem Original (a) (b)

Elemento estruturante (c) (d)

Figura 2.9: Exemplo de aplicação de filtros morfológicos. (a) Dilatação; (b) Erosão; (c) Abertura; (d)
Dilatação. Fonte: Gonzalez e Woods (2008).

Considerando uma imagem binária, a dilatação insere informações à vizinhança de um ponto através
de um elemento estruturante de forma concêntrica, que se desloca sobre um conjunto de pontos,
dilatando sua vizinhança numa proporção que varia conforme suas dimensões.

Na dilatação, se um ponto de referência faz parte do fundo e tem um vizinho que faz parte do objeto,
então este também passa a fazer parte do objeto, como ilustrado na Figura 2.9a. Esta operação
é utilizada principalmente para preencher intervalos e lacunas indesejáveis na imagem (Gonzalez e
Woods, 2008).

A erosão é o inverso da dilatação. A aplicação do elemento estruturante ocorre de forma semelhante


à operação anterior, porém, ao invés de dilatar a vizinhança do ponto percorrido inserindo indo
informações, o elemento as retira, gerando erosão nas áreas percorridas. Na erosão, se um ponto
faz parte do objeto e tem um vizinho que faz parte do plano de fundo, então este também passa
a fazer parte do fundo, como ilustrado na Figura 2.9b. Esta operação é utilizada principalmente
para eliminar detalhes irrelevantes, como ruídos, remover pontas ou eliminar lacunas em regiões de
conexão indesejada (Gonzalez e Woods, 2008).

A sequência de aplicação dos filtros de dilatação e de erosão determina uma operação de abertura
ou de fechamento:

• A abertura aplica uma erosão seguida de uma dilatação na imagem. Esta sequência de
operações visa eliminar pequenos ruídos na imagem e abrir lacunas em regiões de fraca conexão
entre objetos, através da erosão, e posteriormente tenta restaurar as dimensões reais de objetos
2.5. ATRIBUTOS HUMANOS 20

da imagem através da dilatação. Os ruídos e fracas conexões eliminados com a erosão não
retornam à imagem após a dilatação, como pode ser observado na Figura 2.9c (Gonzalez e
Woods, 2008).

• O fechamento é a operação inversa da abertura, aplicando primeiramente uma dilatação se-


guida de uma erosão. Esta sequência de operações visa restaurar conexões fracas entre objetos
da imagem, como mostra a Figura 2.9d (Gonzalez e Woods, 2008).

2.5 Atributos Humanos

O problema de contar pessoas em uma imagem é uma instância de um problema mais geral, o de
contar objetos (Pádua, 2002). Para tanto, o ideal seria criar um modelo robusto para pessoas em
movimento, o que tornaria mais fácil a identificação e o rastreamento delas ao longo da imagem.
Pessoas, no entanto, constituem objetos complexos que se apresentam em dimensões variadas e que
se deformam aos se deslocarem: a forma de uma pessoa na imagem muda constantemente devido
ao movimento com as pernas, braços e cabeça. Esses fatores tornam difícil criar um modelo para
representar pessoas.

Para minimizar os problemas causados pelas dificuldades apontadas, nesta Seção definem-se quatro
características de pessoas, quais sejam:

• Largura média entre os ombros.

• Altura média.

• Profundidade média do tórax.

• Velocidade média.
2.5. ATRIBUTOS HUMANOS 21

2.5.1 Dimensões corporais humanas

Para que se obtenha um modelo simplificado do humano médio, é necessário definir suas dimensões,
assim como é feito na engenharia, arquitetura e no desenho industrial.

Informações obtidas do HCManual (2000) sugerem o uso de 0,60m para largura entre ombros de
um homem adulto e de 0,50m para profundidade do tórax, como uma elipse envolvendo o corpo
humano.

Como a altura média humana varia muito com o país, adotou-se a altura média de um homem adulto
no Brasil como sendo 1,70m, baseando-se em senso realizado entre 2008 e 2009 (IBGE, 2008).

A Figura 2.10 resume os valores de dimensões adotados.

2.5.2 Velocidade dos Humanos

A velocidade com que os humanos caminham em áreas urbanas sofre influência de diversos fatores,
como: a carga que carregam, sua idade e gênero, o ambiente por onde caminham, o calçado utilizado
e também a quantidade de pessoas que transitam no mesmo local.

0,5m 0,6m

1,70m 1,70m

Figura 2.10: Dimensões humanas adotadas.


2.5. ATRIBUTOS HUMANOS 22

Estudos (HCManual, 2000) sugerem 1,219 m/s como velocidade normal para pessoas em áreas
urbanas. Pesquisas também apontam que humanos mais velhos caminham mais lentamente que
os mais jovens e que mulheres, em geral caminham com velocidade inferior à do homem, entre
0,762m/s e 0,991m/s. Existem diversos outros fatores além dos apresentados que influenciam na
velocidade de uma pessoa, devendo ser feita uma análise mais bem elaborada do movimento em
locais específicos.
3 | Revisão Bibliográfica

A literatura sobre técnicas de contagem de pessoas abrange diversos tipos de soluções, tais como
aquelas baseadas no uso de câmera de vídeo, sensores fotoelétricos e sensores de pressão (Pádua
et al., 2003), como ilustrado na Figura 3.1. Entretanto, tem-se observado a crescente proposição
de abordagens baseadas em técnicas de análise de imagens da cena onde se deseja estimar o fluxo
de pessoas, sobretudo porque essas abordagens tem se mostrado mais eficientes que os sistemas
baseados em técnicas que utilizam somente sensor fotoelétrico ou de pressão (Kim et al., 2002). Tais
abordagens fazem uso de conceitos e ferramentas computacionais comumente associadas à área de
pesquisa conhecida como Visão Computacional. O presente trabalho propõe uma abordagem para
contagem de pessoas que se enquadra no conjunto que utiliza câmeras de vídeo para capturar as
imagens da área que se deseja estimar o fluxo de pessoas.

A seguir, será feita uma breve revisão crítica de alguns dos principais trabalhos encontrados na
literatura que se enquadram especificamente no grupo que se baseia em câmeras de vídeo.

4*45&."41&426*4"%041"3"$0/5"(&.%&1&440"4

(SVQP (SVQP (SVQP


#BTFBEPTFN$ÆNFSBT #BTFBEPTFNTFOTPSFT #BTFBEPTFNTFOTPSFT
EF7ÐEFP GPUPFMÌUSJDPT EFQSFTTÊP

Figura 3.1: Principais grupos de técnicas aplicadas ao problema de contagem de pessoas. Fonte: Pádua
et al. (2003).

23
3.1. MÉTODOS BASEADOS EM VISÃO ESTÉREO 24

3.1 Métodos Baseados em Visão Estéreo

Filipov et al. (2012) apresentam um método rápido e preciso para detecção de cabeças de humanos
em imagens de profundidade (range images), obtidas por uma câmera estéreo que monitora cena
vista de cima (zenital). Os autores mostram, também, como um grid estático de pontos medidos
(chamados por eles de Pylon Grid) pode superar técnica a técnica de busca local da Subida da encosta
(Hill Climbing) e como um filtro de medianas rápido pode ser utilizado para pré-processamento
efetivo dos dados de profundidade. O algoritmo Pylon Grid detecta todos os mínimos locais na
imagem de profundidade e possui complexidade linear em relação ao número de pontos medidos.
Um pré-requisito importante para aplicação do algoritmo Pylon Grid para se detectar as cabeças é que
haja relação um-para-um entre as cabeças na cena e os mínimos locais na imagem de profundidade, o
que é alcançado em uma fase de pré-processamento das imagens, em que uma projeção ortográfica,
uma convexação e uma filtragem de ruído são feitas sobre os dados de profundidade. Os testes
foram feitos com cenas movimentadas, onde vários grupos densos de até seis pessoas moviam-
se em direções aleatórias e realizavam contato físico. Desencontros entre cabeças das pessoas e
mínimos locais ocorreram em 8% das situações, levando a detecções incorretas. Tais erros, em
geral, ocorreram em situações em que pessoas levantaram as mãos ou os braços ou estavam com
mochilas e acessórios muito grandes.

van Oosterhout et al. (2011) propõem um método de detecção de cabeças, usando dados providos
por uma câmera estéreo. Para possibilitar o uso de câmeras estéreo, a técnica proposta é feita (1)
para ser aplicada em dados de profundidade, e (2) para ser robusta no que diz respeito ao ruído e
variação em configurações do ambiente. O método consiste na seleção de primeiro plano, detecção
de cabeças, separação de blobs (contorno ao redor cada objeto detectado) e, para melhorar os
resultados no caso de erros de detecção, incorpora um mecanismo para o rastreamento de pessoas.
Os resultados mostram que o método proposto tem um bom desempenho em testes de precisão e
revocação, atingindo taxas de acerto de 96%, fornecendo uma base sólida para a detecção de cabeça
em aplicações que utilizam câmeras estéreo.

Em Beymer e Konolige (1999), é apresentada uma abordagem baseada em Visão Estéreo para
rastrear e contar pessoas, podendo determinar o volume de objetos no primeiro plano da cena. A
técnica se baseia em detectar, na imagem, volumes que correspondam à cabeça e tronco de uma
pessoa adulta e rastreá-los através da região monitorada, utilizando um modelo de filtro de Gauss
e filtro de Kalman. A utilização de chapéu, mochila, ou qualquer outro acessório pode afetar a
3.2. MÉTODOS QUE UTILIZAM RASTREAMENTO 25

determinação do volume da cabeça ou do tronco das pessoas, provocando erros na contagem de


pessoas. O sistema apresentou em média 98,6% de exatidão na contagem.

3.2 Métodos que Utilizam Rastreamento

Em Antic et al. (2009), apresenta-se uma abordagem eficiente e confiável para segmentação au-
tomática de pessoas, rastreamento e contagem, projetado para um sistema montado com a cena
vista de cima (zenital). Após a subtração do fundo da cena, o método de clusterização K-Means
é utilizado para permitir a segmentação de pessoas sozinhas no cenário. O número de pessoas na
cena é aproximado pelo número máximo de clusters que pertencem a um limite com separação entre
clusters. Resultados experimentais sugerem que o método proposto é capaz de alcançar resultados
aceitáveis em termos de precisão de contagem e velocidade de execução.

Silva (2009) propõe o desenvolvimento de um sistema computacional para contagem automática


de pessoas, em ambientes internos ou externos, baseado em análise de imagens. A abordagem
desenvolvida consiste na detecção de objetos móveis na imagem capturada por uma câmera de
vídeo fixa, aplicando-se técnicas de subtração do plano de fundo, de remoção de sombras e ruídos
e utilizando o filtro preditivo de Kalman, pessoas são rastreadas e contadas ao deixarem a cena.
Experimentos mostraram robustez e eficiência em 96% dos casos.

Em Zhao e Shibasaki (2005) é proposto um sistema de monitoramento e rastreamento de pedestres,


o qual utiliza câmeras de vídeo e uma rede de sensores composta por scanners a laser. Um modelo
de pedestre caminhando na Seção horizontal ao nível do solo é definido para um algoritmo de
rastreamento, desenvolvido para se detectar e traçar o ritmo do movimento dos pés capturados pelo
scanner a laser. Os dados das trajetórias dos pedestres são projetadas em vídeos e atributos como
altura, cor de roupa, faces dos pedestres podem ser extraídas da imagem. Experimentos conduzidos
numa estação de trens mostram que o sistema é eficiente no rastreamento mesmo com aglomerações
de pessoas, atingindo taxas de sucesso de 99%.

Bhuvaneshwar e Mirchandani (2004) propõem um sistema de detecção de pedestres num cruza-


mento, em tempo real, para controle adaptativo do sinal de trânsito, através de uma câmera fixa.
Primeiramente são detectados os objetos móveis na imagem, utilizando a técnica de subtração do
plano de fundo com limiarização da imagem e aplicação de filtros para suprimir ruídos. Para retirar
as sombras dos objetos é utilizado um histograma com a projeção de cada objeto. Em seguida, veí-
culos e outros objetos são diferenciados de pedestres comparando a altura e área de cada retângulo
3.3. MÉTODOS QUE NÃO UTILIZAM RASTREAMENTO 26

gerado envolvendo um objeto detectado. Informações sobre tamanho e coordenadas de cada com-
ponente são utilizadas para computar o número de pessoas na cena. O sistema mostrou eficiência
no monitoramento do fluxo de pedestres e veículos em cruzamentos e aplicações em prevenção de
acidentes de trânsito.

Em Kim et al. (2002), descreve-se um sistema para contagem de pessoas que seguem fluxos unidi-
recionais, usando uma única câmera fixa a uma porta de um edifício. A câmera de vídeo é colocada
ortogonalmente ao piso para minimizar o problema de oclusão. O método consiste em detectar
objetos na área monitorada pela subtração do plano de fundo da cena, binarização da imagem-
diferença e aplicação de filtros de erosão e dilatação, para eliminar ruído. Utiliza a técnica Convex
Hull Approximation para analisar uma área de fronteira retangular, em torno da imagem de cada
pessoa na cena atual. Estima a imagem na área do retângulo na próxima cena e verifica se a pessoa
está na área analisada, permitindo rastrear pessoas mesmo quando suas imagens são parcialmente
sobrepostas. A atualização dinâmica do plano de fundo, quando não há objeto movendo-se na cena,
minimiza problemas de variação de iluminação. Experimentos mostram que o sistema é eficiente no
rastreamento e na contagem de pessoas, obtendo acerto de 96% a uma taxa de amostragem de 10
quadros por segundo.

3.3 Métodos que Não Utilizam Rastreamento

Em Teixeira e Savvides (2007) propõe-se um sistema para localização e contagem de pessoas em


áreas internas, baseando-se no movimento e dimensões de pessoas. O sistema é robusto a flutuações
de intensidade dos pixels, a variações graduais de iluminação e ao reposicionamento de objetos na
cena. O sistema de contagem de pessoas foi implementado com múltiplas câmeras ligadas em rede
e calibradas de acordo com a área de captura de cada câmera. Alterações abruptas de iluminação
causam detecções falsas, mas que desaparecem nos quadros seguintes.

Em Jeon e Rybski (2006) propõe-se um sistema de contagem de pessoas presentes em uma sala.
Em um dado intervalo de tempo as posições das faces de pessoas são localizadas, por um detector
de face, que baseado em dados estatísticos determina o número de pessoas presentes. Experimentos
mostraram que a presença de ruído na detecção das faces resulta em falsas faces, e mesmo uma
imagem de face real com características diferentes pode ser confundida com um ruído, o que torna
as análises das imagens muito difíceis.
3.4. MÉTODOS BASEADOS EM ANÁLISE DE IMAGENS DE VIGILÂNCIA 27

Em Pádua et al. (2003) é proposto um sistema de visão baseado no cálculo de campos de Fluxo
Ótico para se estimar os movimentos de pedestres presentes na cena monitorada e pela comparação
de suas dimensões corporais, tais como distância entre ombros e profundidade do tórax, com os
correspondentes valores médios usados por engenheiros de transporte. O sistema proposto é bastante
susceptível às variações de luminosidade da cena, é incapaz de rastrear os movimentos das pessoas
e possui sua aplicação restrita a fluxos unidirecionais.

3.4 Métodos Baseados em Análise de Imagens de Vigi-


lância

Hou e Pang (2011) desenvolvem um método eficaz para estimar o número de pessoas e localizar
cada indivíduo em imagens de baixa resolução, obtidas através de vídeos de vigilância, com cenas
complexas. O método inclui etapas de subtração de fundo e um método de Maximização da
Expectativa (EM) para localizar pessoas em uma cena de baixa resolução. Os métodos desenvolvidos
foram validados com base em um vídeo de quatro horas, com o número de pessoas na cena variando
de 36 a 222. O melhor resultado resultado obtido apresentou erro médio de 10% na estimativa do
número de pessoas ao longo de 51 casos de teste.

Em Zeng e Ma (2010), propõe-se um método robusto para detecção de cabeça e ombros visando
a contagem de pessoas. Esse método combina o HOG (Histogramas de Gradientes Orientados)
com LBP (Padrão Local Binário) como um conjunto de características para aumentar a robustez
da detecção da cabeça e dos ombros. Para melhorar o desempenho da detecção, foi utilizado PCA
(Principal Components Analysis) para reduzir o conjunto de características HOG-LBP. Para estimar
o fluxo de pessoas, o detector também foi incorporado em um filtro de partículas de rastreamento, o
que aumentou a precisão do método, detectando e rastreando com sucesso 95% dos alvos. Além de
necessitar realizar um treinamento para conseguir detectar as cabeças e ombros, o método necessita
de muito poder computacional e consegue uma taxa relativamente baixa de quadros: 12 quadros/s.

Em Kong et al. (2005) é apresentado um sistema que utiliza redes neurais artificiais para contar
pedestres em uma multidão utilizando uma única câmera. O método é baseado na subtração do plano
de fundo, em seguida detecção do contorno dos objetos e histogramas com o tamanho dos blobs. O
sistema é treinado antes de entrar em operação num campo de visão fixa, para detectar e estimar o
número de pedestres, na área delimitada pelo campo de visão da câmera. Experimentos preparados
em diferentes locais e com câmeras diferentes demonstraram resultados corretos compatíveis com a
3.5. CONSIDERAÇÕES FINAIS 28

realidade do treinamento do sistema. A relação entre o que é mostrado no histograma e o número de


pedestres na multidão, no entanto, é obtida através dos dados armazenados no treinamento da rede
neural, restringindo a sua aplicação a áreas em que foram previamente realizados os treinamentos.

Em Siebel (2003), apresenta-se o desenvolvimento de um sistema visual de segurança para uma


estação de metrô, com rastreamento automático de pessoas, utilizando uma câmera para capturar
as imagens em tempo real. A aplicação Reading People Tracker, que faz parte do projeto ADVISOR,
consiste na combinação de quatro módulos operando em conjunto para detecção e rastreamento
de pessoas. Os módulos Detector de Movimento, Rastreador de Regiões, Detector de Cabeças e
Rastreador de Formas Ativas são interligados de modo a reduzir a complexidade para detecção e
rastreamento das pessoas. Experimentos mostraram que o sistema de rastreamento individual é
robusto em situações de oclusão, não contabilizando o número de pessoas no local.

3.5 Considerações Finais

Este trabalho teve sua metodologia baseada nos conceitos apresentados em Silva (2009), que apre-
sentou desempenho comparável aos demais da bibliografia e que foi desenvolvido na mesma institui-
ção em que este trabalho foi desenvolvido. A escolha foi feita devido ao fato de que nesse trabalho
se lê:

“Como direções futuras, pretende-se:

• Dotar o sistema computacional de contagem automática de pessoas com uma


técnica para obtenção de um plano de fundo adaptativo, o qual contemple, por
exemplo, as variações de luminosidade na cena;

• Estudar e implementar as adaptações necessárias no sistema para que o mesmo


seja utilizado em tempo real;

• Implementar rotinas responsáveis pela geração de gráficos e relatórios exibindo os


resultados de contagem de pessoas por longos períodos de tempo em áreas de
interesse.” (Silva, 2009)

O sistema projetado neste trabalho, diferentemente daquele proposto em Silva (2009), foi concebido
para operar de forma distribuída e embarcada em plataformas móveis ou nós sensores, tais como
smartphones, configurando ao sistema características inovadoras que aumentam sua aplicabilidade,
3.5. CONSIDERAÇÕES FINAIS 29

escalabilidade e eficácia. Além disso, as duas primeiras direções futuras sugeridas por Silva (2009)
foram devidamente implementadas neste trabalho.
4 | Sistema de Contagem de Pessoas
em Tempo Real

Este Capítulo discute a técnica e a metodologia utilizadas na construção do núcleo do Sistema


de Contagem de Pessoas desenvolvido neste trabalho. O sistema desenvolvido realiza a contagem
automática de pessoas que passam pela porta de um estabelecimento em tempo real, baseada em
técnicas de processamento e análise de imagens obtidas por câmeras de vídeo. Especificamente, o
sistema projetado foi concebido para operar de forma distribuída e embarcada em dispositivos móveis,
tais como smartphones, configurando ao sistema características inovadoras que potencializam sua
aplicação em diversos cenários.

Câmera

rta
Po
t1
t2
t3

do to
e r ior men
i
Int elec
t ab
Es

Figura 4.1: Configuração da cena de interesse.

30
4.1. VISÃO GERAL DO SISTEMA 31

4.1 Visão geral do sistema

Para o funcionamento correto do sistema de contagem é necessário que as pessoas sejam detectadas
em uma cena de interesse, representada por uma sequência de imagens obtidas através de uma
câmera de vídeo. A Figura 4.1 mostra uma visão geral da configuração da cena de interesse. O
sistema desenvolvido foi concebido para operar em ambientes internos, fechados e nos quais o fluxo
de pessoas ocorre em uma direção predominante. Assim, as imagens dessa sequência devem ser
obtidas internamente ao estabelecimento, de forma que a câmera que realiza a captura esteja após
sua porta, instalada em seu teto ortogonalmente à cena, e de modo que as pessoas que entram no
estabelecimento realizem o movimento verticalmente na sequência, da base para o topo da imagem
e que pessoas que o deixam realizem o movimento no sentido contrário.

Nas imagens obtidas, a detecção das pessoas é feita relacionando características físicas humanas
previamente definidas no sistema com as características das formas de objetos segmentados na
imagem da cena. Para efetuar essa relação, é necessário converter as dimensões dessas características
físicas humanas para unidades comparáveis às dos objetos segmentados, i.e. pixels. Isso é feito
configurando no sistema o ângulo do campo de visão da câmera e a altura na qual ela se encontra
instalada.

Variações bruscas na iluminação da cena de interesse, bem como a presença de superfícies espe-
culares, reflexos e sombras representam ruídos no sistema e afetam diretamente a identificação de
objetos da cena, uma vez que influenciam na segmentação da imagem. Tais ruídos podem ser
minimizados utilizando filtros sobre a imagem.

De forma geral, a metodologia proposta neste trabalho para contagem de pessoas segue quatro
etapas: (i) detecção de novos objetos; (ii) contagem de pessoas; (iii) estimativa de sentidos de
movimentação e (iv) agregação de dados de contagem, sendo que tais etapas são estruturadas sob
a forma de diferentes algoritmos. Esse processo encontra-se descrito na Figura 4.2.

Basicamente, o sistema proposto inicia o processo de contagem a partir da captura da imagem atual
obtida pela câmera. Esta imagem se torna o plano de fundo da cena, havendo ou não pessoas
na mesma. Para os demais quadros capturados, aplica-se o algoritmo de Subtração Adaptativa de
Plano de Fundo proposto na Seção 4.2.3, que utiliza os fundamentos do NCC, como descrito na
Seção 2.3.2. Os resultados deste algoritmo, por sua vez, apoiam dois algoritmos específicos: um
algoritmo para subtração adaptativa do plano de fundo da cena e um algoritmo de segmentação de
objetos na imagem.
4.1. VISÃO GERAL DO SISTEMA 32

Por meio do algoritmo de Subtração Adaptativa de Plano de Fundo (ABS - Adaptive Background
Subtraction) da cena, atualiza-se o modelo de plano de fundo gradativamente com os valores dos

Captura Buffer de Entrada

Buffer de plano de
Subtração
fundo

Buffer de primeiro
ABS
plano

Segmentação

Imagem segmentada

ii iii

Estimativa
Contagem
de Sentido

Vetor de contagem Vetor de contagem Vetor de pixels Vetor de pixels


atual acumulada subindo descendo

iv

Agregação

Registro de
resultados

Figura 4.2: Etapas do processo de contagem de pessoas. Retângulos denotam dados (entrada ou saída) e
losangos, operações. Legenda: (i) Detecção de novos objetos; (ii) contagem de pessoas; (iii) estimativa de
sentidos de movimentação e (iv) agregação de dados de contagem.
4.2. DETECÇÃO DE NOVOS OBJETOS 33

pixels dos quadros a cada instante de tempo. Os pixels do quadro atual mais bem-correlacionados
com o plano de fundo são atualizados mais rapidamente no plano de fundo. Assim, pequenas
variações luminosas que não produzam alteração significativa no valor do pixel são consideradas
mais rapidamente como parte do plano de fundo.

O algoritmo para segmentação de objetos na imagem percorre todas as linhas da matriz gerada pelo
algoritmo de Subtração Adaptativa de Plano de Fundo transformando em pulsos os valores de pixels
não correlacionados ao plano de fundo. Em seguida, um algoritmo específico para a realização da
contagem de pessoas é aplicado, verificando se os pulsos presentes nas linhas correspondem a uma
ou mais pessoas, tomando por base a largura média entre os ombros de um humano.

Após a contagem ter sido efetuada, um algoritmo de estimativa de sentidos de movimentação é


aplicado, estimando-se qual a proporção das pessoas contadas em um instante que entrou ou saiu
da cena. Neste ponto, cada linha do quadro possui sua contagem de pessoas, mas não há nada
que una as contagens dessas linhas e que assegure que o conjunto delas representa de fato uma ou
mais pessoas ou apenas ruídos. Finalmente, um algoritmo de agregação dos dados de contagem faz
esse papel, descartando contagens de linhas que não reportaram quantidades de pessoas condizentes
com suas vizinhas.

Nas Seções a seguir, são descritas de forma detalhada as etapas ilustradas na Figura 4.2, que
compõem a metodologia proposta neste trabalho para contagem de pessoas.

4.2 Detecção de Novos Objetos

4.2.1 Obtenção da sequência de imagens

O processo de contagem de pessoas se inicia com a captura de imagens pela câmera utilizada. Como
o sistema parte do pressuposto que o algoritmo de contagem está sendo executado em dispositivos
móveis, tais como smartphones, a fonte de imagens é obtida diretamente da câmera de vídeo digital
presente nesses aparelhos.

Esses dispositivos móveis são instalados ortogonalmente à cena de interesse, capturando a imagem
sobre as pessoas. O posicionamento da câmera na posição ortogonal minimiza o problema da
oclusão de pessoas na cena. A Figura 4.1, apresentada na página 28, mostra como a câmera deve
ser instalada na cena de interesse.
4.2. DETECÇÃO DE NOVOS OBJETOS 34

É importante que a câmera instalada não sofra trepidações nem se desloque ao longo do tempo. O
algoritmo é robusto suficiente para permitir que a câmera ajuste automaticamente sua exposição e
foco, minimizando as alterações que tais ajustes possam trazer à imagem nas próximas etapas do
algoritmo.

4.2.2 Subtração de imagens

Obtidos os quadros que representam a cena de interesse, a próxima etapa do algoritmo consiste em
encontrar quais pixels do quadro atual são diferentes do plano de fundo. Para tanto, o procedi-
mento adotado neste trabalho para a subtração de imagens se baseia na utilização do algoritmo de
Correlação Cruzada Normalizada (NCC) combinado com um Fator de Similaridade. O NCC, como
descrito em Grest et al. (2003) e aprimorado em Jacques et al. (2005), é uma técnica que apresenta
bons resultados com custo computacional relativamente baixo (Silva, 2009). Sua fundamentação
teórica foi apresentada na Seção 2.3.2 deste texto.

A técnica de subtração de imagens utilizada neste trabalho presume que há um plano de fundo
na memória e que tal plano é atualizado automaticamente à medida que itens são incorporados ou
descartados permanentemente na cena. O procedimento realizado para se atualizar o plano de fundo
é descrito na Seção 4.2.3.

A sequência de operações realizada neste passo se encontra esquematizada na Figura 4.3. Armazena-
se em um buffer de entrada a imagem capturada. O buffer de plano de fundo, de mesmas dimensões
do buffer de entrada, é constantemente atualizado com o plano de fundo da cena de interesse.
Cada pixel do buffer de entrada é comparado com seu correspondente no buffer de plano de fundo
utilizando o algoritmo de subtração de imagens. A saída desse algoritmo é um número entre 0 e 1,
em que: 0 indica que os pixels comparados são completamente diferentes e 1 indica que os pixels
são idênticos. Após o processamento de todos os pixels do buffer de entrada, obtém se um buffer
de saída, chamado buffer de primeiro plano, contendo todas as saídas obtidas.

Das operações enumeradas anteriormente, a mais importante é a de subtração de imagens. Para


retornar o número entre 0 a 1, resultante da comparação dos pixels, duas outras operações são
realizadas, conforme citado no início da presente Seção: o NCC e o Fator de Similaridade.
4.2. DETECÇÃO DE NOVOS OBJETOS 35

Captura Buffer de Entrada

Buffer de plano de
Subtração
fundo

Buffer de primeiro
ABS
plano

Segmentação

Figura 4.3: Interações entre as etapas do algoritmo de subtração de imagens.

NCC

Considere as matrizes It e B, ambas de mesmas dimensões, representando, respectivamente, o


buffer de entrada e o buffer de plano de fundo. Considere associada a cada pixel (i, j) da matriz
que representa a imagem atual, uma máscara Tij , de dimensões (2N + 1) ⇥ (2N + 1), tal que
Tij (n, m) = It (i + n, j + m), para N  n  N, N  m  N . Ou seja, Tij corresponde a uma
vizinhança do pixel (i, j) da imagem atual.

Com tais parâmetros definidos, calcula-se o parâmetro PN CC do pixel (i, j), como descrito na
Seção 2.3.2:
ER (i, j)
PN CC (i, j) = ,
EB (i, j)ET ij

onde
N
X N
X
ER (i, j) = B(i + n, j + m)Tij (n, m),
n= N m= N

v
u N N
uX X
EB (i, j) = t B(i + n, j + m)2 ,
n= N m= N

N
X N
X
ET ij (i, j) = Tij (n, m)2 .
n= N m= N
4.2. DETECÇÃO DE NOVOS OBJETOS 36

O valor obtido após essa operação é utilizado na função seguinte:

(
PN CC (i, j), se PN CC (i, j) lN CC
PN CC (i, j) = .
0, se PN CC (i, j) < lN CC

Dessa forma, na saída da função PN CC (i, j), a correlação entre os pixels de It e B calculada
em PN CC (i, j) será levada em conta apenas se for maior que um limiar lN CC . Isso faz com que
pixels de It que possuem seu PN CC (i, j) com valores de 0 até um certo limiar lN CC sejam sempre
considerados totalmente não correlacionados ao seu pixel correspondente no plano de fundo. Se
esse limiar lN CC for muito baixo, qualquer pequena variação de iluminação da cena vai gerar ruídos
nas demais fases do algoritmo. Analogamente, caso lN CC seja muito alto, apenas variações muito
fortes entre as imagens serão consideradas, podendo fazer com que alguns objetos em movimento
não sejam detectados.

Uma grande vantagem do uso do NCC para se calcular a subtração de imagens é que as sombras
dos objetos que se movem são removidas automaticamente, pelo fato de os pixels correspondentes
às sombras na imagem It representarem apenas uma variação na luminância do pixel correspondente
na imagem B, como descrito na Seção 2.3.2.

Outra característica importante do NCC é que sua saída é sempre um número entre 0 e 1, pelo fato
de o algoritmo realizar uma normalização em suas operações. Portanto, se a apenas o parâmetro
NCC for considerado na subtração da imagem, dependendo da qualidade e das configurações da
câmera utilizada para a captura, situações de escuridão ou claridade intensas podem gerar muitos
ruídos na saída.

Suponha uma cena escura. Considere duas imagens It e B em tons de cinza nas Figuras 4.4a
e 4.4b. Essas imagens representam, respectivamente, a imagem capturada pela câmera em um
dado momento t e o plano de fundo dessa cena de interesse. Essas imagens são muito semelhantes,
pois não há iluminação alguma na cena. Em teoria, ambas deveriam ser equivalentes, porém,
devido aos ruídos causados pela câmera e, também, à variação de sua exposição em situações de
escuridão intensa em busca da obtenção de mais luz, há pequenas variações nos tons de preto da
imagem obtida a cada instante, e, portanto as imagens It são sempre semelhantes, porém não são
equivalentes.

Considere agora uma representação alternativa de ambas as imagens, em que os tons de cinza
representados por elas são normalizados na escala de 0 a 255, como mostrados nas Figuras 4.4c
4.2. DETECÇÃO DE NOVOS OBJETOS 37

e 4.4d. Verifica-se que as imagens possuem diversas diferenças, apesar de as imagens originais serem
muito semelhantes.

Considere, ainda, uma representação em forma de gráfico, em que o eixo das abcissas representa os
índices dos 50 primeiros pixels de cada imagem, enquanto o eixo das ordenadas representa o valor
de intensidade desses pixels. A Figura 4.4e retrata essa representação.

(a) (b)

(c) (d)

(e) (f)

Figura 4.4: Problema no uso do NCC. (a) Imagem de entrada It . (b) Imagem do plano de fundo B. (c)
Imagem de entrada com cores normalizadas. (d) Imagem do plano de fundo com cores normalizadas. (e)
50 primeiros pixels de ambas as imagens representados em 8 bits. (f) Gráfico da Figura (e) com escala
adequada para visualização da diferença entre os pixels.
4.2. DETECÇÃO DE NOVOS OBJETOS 38

Na escala das 256 possibilidades de valores de intensidade que tais pixels podem assumir, esses valores
de intensidade continuam muito semelhantes. Porém, como todos esses valores de intensidade não
passam de 5, ampliando esse gráfico, como é feito na Figura 4.4f, é possível observar que, na verdade,
há uma grande diferença entre os valores de intensidade em um pequeno espaço de valores. Dessa
forma, ao calcular o NCC com as imagens It e B, obtém-se que as imagens não são semelhantes,
enquanto, na realidade, elas são semelhantes. Essa característica foi apontada para imagens muito
escuras, com intensidade média dos pixels próxima de 0, mas ela ocorre também em outras situações,
como, por exemplo, em cenas em que a luminosidade é intensa.

Fator de similaridade

Apesar de uma das condições iniciais ser a garantia da iluminação suficiente na cena durante o
funcionamento do sistema, alguns mecanismos foram criados para procurar manter sua robustez em
casos que fogem a tais condições. Um desses mecanismos é o Fator de Similaridade, criado para
minimizar o problema descrito ao final da última sessão, em que duas imagens semelhantes eram
classificadas como não semelhantes.

O Fator de Similaridade consiste em uma técnica proposta neste trabalho para gerar um segundo
parâmetro de semelhança para cada pixel, com o objetivo de compará-lo ao NCC ao final do processo
de subtração de imagens.

Considere as matrizes It e B, como descrito na Seção 2.3.2. Considere associadas a cada pixel
(i, j) dessas matrizes, duas matrizes ISij e BSij , de dimensões (2N + 1) ⇥ (2N + 1), tal que
ISij (n, m) = It (i + n, j + m) e BSij (n, m) = B(i + n, j + m), para N  n  N, N  m  N .
Ou seja, ISij corresponde a uma vizinhança do pixel (i, j) na imagem capturada e BSij corresponde
a uma vizinhança do pixel (i, j) no plano de fundo da cena. O Fator de Similaridade FS proposto é
calculado da seguinte forma:

FS (i, j) = 1 max(Dij ), (4.1)

em que:

ISij (n, m) BSij (n, m)


Dij (n, m) = , (4.2)

4.2. DETECÇÃO DE NOVOS OBJETOS 39

sendo:

• ↵ o valor máximo de intensidade que um pixel pode assumir.

• max(X) o maior valor dentre os elementos da matriz X.

Os valores contidos na matriz FS variam de 0 a 1 e, de forma sucinta, representam uma nota


atribuída a um dado pixel de acordo com a diferença absoluta máxima entre ele e seus vizinhos.
Analogamente ao procedimento realizado com o NCC, o valor obtido após essa operação é utilizado
na função seguinte:

(
FS (i, j), se FS (i, j) LF S
FS (i, j) = . (4.3)
0, se FS (i, j) < LFS

Dessa forma, na saída da função FS (i, j) a nota atribuída à similaridade entre os pixels de It e B
calculada em FS (i, j) será levada em conta apenas se for maior que um limiar LFS .

Saída da Subtração de Imagem

Calculadas as matrizes PN CC e FS , obtidas nas operações descritas anteriormente, o algoritmo de


Subtração de Imagem retorna a seguinte matriz ao fim do processo:

S(i, j) = max(PN CC (i, j), FS (i, j)). (4.4)

Lembrando que, na matriz S, estão representados como mais próximos de 1 os pixels mais similares
ao plano de fundo (objetos já existentes) e como mais próximos de 0 aqueles que são considerados
partes de objetos novos na cena. Como nas próximas etapas deseja-se obter a representação do que
há de novo na cena, uma operação simbólica é feita na matriz S para efeito de padronização:

S(i, j) = 1 S(i, j). (4.5)

A matriz S finalmente é copiada para o buffer de primeiro plano, que será utilizado nos próximos
passos do algoritmo.
4.2. DETECÇÃO DE NOVOS OBJETOS 40

4.2.3 Subtração Adaptativa de Plano de Fundo

Na etapa de Subtração de Imagens, um plano de fundo de referência é utilizado para se estimar


quais são os pixels diferentes da imagem atual. Porém esse plano de fundo não é sempre o mesmo.
É comum que novos objetos sejam incorporados na cena e que objetos existentes sejam removidos.
Também podem ocorrer variações na iluminação do ambiente, fazendo com que a imagem do plano
de fundo seja alterada ao longo do tempo. A Figura 4.5 ilustra uma mesma cena com diferentes
planos de fundo, e variações de iluminação.

Para que o sistema não tenha sua robustez enfraquecida por esses fatores, criou-se um algoritmo
de atualização automática de plano de fundo, aqui chamado de Subtração Adaptativa de Plano de
Fundo – ABS. A técnica consiste em sobrescrever no buffer de plano de fundo mais rapidamente os
valores de intensidade dos pixels da imagem capturada que são similares aos do plano de fundo e
mais lentamente os menos semelhantes. Dessa forma, um objeto removido da cena de interesse vai
se esmaecendo no buffer de plano de fundo ao longo do tempo. Analogamente, objetos incorporados
à cena de interesse são gradativamente adicionados a este buffer.

Figura 4.5: Mudanças ocorridas no plano de fundo ao longo do tempo.


4.2. DETECÇÃO DE NOVOS OBJETOS 41

A Figura 4.6 mostra o efeito da incorporação e da remoção de um objeto da cena de interesse no


buffer de plano de fundo: em t1, o plano de fundo representa uma superfície vazia; em t2, dois
objetos foram adicionados na cena, fazendo com que o plano de fundo os absorvesse ao longo do
tempo; em t3, os objetos estão mais nitidamente incorporados ao plano de fundo; em t4, os objetos
encontram-se completamente incorporados ao plano de fundo; em t5 um objeto foi removido da
cena, fazendo com que o plano de fundo começasse a esmaecê-lo aos poucos; finalmente, em t6, o
objeto removido não se encontra mais no plano de fundo.

Considere as matrizes It e B, conforme disposto na Seção 2.3.2. Considere, também, a matriz S,


resultado da Subtração das Imagens das matrizes It e B. No próximo instante de tempo, a matriz
B será:

B 0 (i, j) = (1 ⌧ ) ⇥ B(i, j) + ⌧ ⇥ It (i, j), (4.6)

sendo ⌧ um número real entre 0 e 1 que representa a velocidade de adaptação da imagem capturada
ao plano de fundo. Se ⌧ for muito próximo de 0, a imagem do plano de fundo será alterada muito
lentamente, fazendo com que objetos incorporados sejam considerados como ruído durante um

t1 t2 t3

(a) (b) (c)

t4 t5 t6

(d) (e) (f)

Figura 4.6: Incorporação e remoção de objetos na cena.


4.2. DETECÇÃO DE NOVOS OBJETOS 42

intervalo de tempo maior, por exemplo. Se ⌧ for muito próximo de 1, objetos móveis necessários nas
próximas etapas do algoritmo serão considerados parte do plano de fundo e não serão detectados.

O diagrama da figura 4.7 mostra o funcionamento básico da atualização do plano de fundo.

4.2.4 Segmentação

Após a subtração de imagens, obtém-se uma representação daquilo que há de novo na cena em
forma de matriz, aqui chamada de buffer de primeiro plano . Ao passarem pela cena de interesse, os
objetos móveis deixam picos nas linhas do buffer de primeiro plano, que podem denotar a presença

Captura
Primeira
Imagem

Buffer de plano de fundo

Captura
Próxima
Imagem

Buffer de Entrada

Calcula* Novo
Plano de Fundo

*De acordo com eq. 4.6


B'(i,j) = (1- !) × B(i,j) + !"× It(i,j)

Figura 4.7: Diagrama de atualização do plano de fundo.


4.2. DETECÇÃO DE NOVOS OBJETOS 43

de uma pessoa. Uma linha típica dessa matriz em um determinado instante encontra-se representada
na Figura 4.8a.

(a)

Ts

(b)

Figura 4.8: Aspecto do sinal desejado ao final do algoritmo de segmentação. Suponha os valores das
intensidades de uma linha do buffer de primeiro plano como aqueles representados em (a). Se a média de
um pulso for maior que um limiar Ts , o pulso deve ser possuir o aspecto da figura (b) na saída do algoritmo
de segmentação.

O objetivo dessa etapa é criar uma representação alternativa ao buffer de primeiro plano, classificando
os pixels, e criando, portanto, uma espécie de grupo de pixels que possuam a mesma característica
– a não similaridade ao plano de fundo, no caso – a qual será utilizada nos próximos passos do
algoritmo para determinar se o objeto detectado corresponde a uma pessoa ou não. Na literatura,
esse processo é comumente chamado de segmentação.

No caso deste trabalho, atribui-se nível lógico alto a cada um dos pixels que constituam um novo
objeto e nível lógico baixo a cada pixel que for considerado parte do plano de fundo, fazendo com
que o sinal da Figura 4.8a se transforme no sinal da Figura 4.8b.
4.2. DETECÇÃO DE NOVOS OBJETOS 44

Como foi definido que os objetos os quais se quer contar – no caso, as pessoas – sempre “cruzarão”
a imagem capturada na direção vertical, se deslocando do topo para a base ou da base para o topo,
em suas próximas fases, para estimar a quantidade total de pessoas na cena, o algoritmo verifica as
informações de contagem presentes em cada uma das linhas da imagem segmentada. Dessa forma,
a saída da etapa atual do algoritmo consiste em um vetor de linhas segmentadas.

4.2.5 Algoritmo de segmentação

A segmentação proposta é composta por duas etapas: correção do sinal e filtragem de ruído. A etapa
de correção do sinal é necessária para que flutuações no valor do sinal, como as que ocorrem nos
picos mais à esquerda e mais à direita da Figura 4.8, não influenciem no resultado da segmentação.

O algoritmo de segmentação criado é composto por quatro passos, sendo os dois primeiros passos
referentes à correção do sinal e os dois últimos correspondentes à filtragem de ruído:

Passo 1 – Caminhar do índice menor ao índice maior de cada linha, calculando-se o módulo da
diferença entre o valor da coluna atual do buffer de primeiro plano e a média de valores das colunas
anteriores desse buffer. O valor calculado é atribuído à linha e coluna correspondente na imagem
segmentada, caso ele seja maior que a variável que representa o Limiar de segmentação.

Passo 2 – Caminhar do índice maior ao índice menor de cada linha, calculando-se o módulo da
diferença entre o valor da coluna atual do buffer de primeiro plano e a média de valores das colunas
anteriores desse buffer. Caso o valor calculado seja maior que o Limiar de segmentação e menor que o
valor calculado no Passo 1 para aquela posição, este valor é atribuído à linha e coluna correspondente
na imagem segmentada. Ao final deste passo, o sinal tem o aspecto da Figura 4.9.

Passo 3 – Aplicar a seguinte função à matriz resultante O do passo 2:


(
0, se O(i, j) = 0
O(i, j) = . (4.7)
1, se O(i, j) 6= 0

Passo 4 – Realizar uma operação de fechamento sobre a imagem representada pela matriz O,
conforme descrito na Seção 2.4.1 (Filtros Não-Lineares).

A função que realiza os quatro passos descritos anteriormente é apresentado no Algoritmo 1 em


português estruturado. Os argumentos da função são:
4.2. DETECÇÃO DE NOVOS OBJETOS 45

Figura 4.9: Sinal ao fim do passo 2 do algoritmo de segmentação.

• buffer: buffer de primeiro plano.

• numeroLinhas: número de linhas do buffer de primeiro plano.

• numeroColunas: número de colunas do buffer de primeiro plano.

• limiar: limiar de segmentação, descrito no passo 1.


4.2. DETECÇÃO DE NOVOS OBJETOS 46

Algoritmo 1: Algoritmo de Segmentação.


Entrada: bu↵er : matriz de inteiros;
numeroLinhas, numeroColunas: inteiro;
limiar: real;
Saída: imagemSegmentadaDiscretizada: matriz [1..numeroLinhas, 1..numeroColunas] de
booleanos;
Variáveis: imagemSegmentada: matriz [1..numeroLinhas, 1..numeroColunas] de reais;
linhaAtual, colunaAtual: inteiro;
valorAntigo, valorAtual, media, diferenca: real;
1 início
2 para linhaAtual 1 até numeroLinhas faça
// Passo 1
3 media bu↵er [linhaAtual, 1];
4 valorAntigo 0;
5 para colunaAtual 1 até numeroColunas faça
6 media (media + bu↵er [linhaAtual, colunaAtual])/2;
7 valorAtual media;
8 se valorAtual > limiar então
9 diferenca modulo(valorAtual valorAntigo);
10 valorAntigo valorAntigo + diferenca;
11 imagemSegmentada[linhaAtual, colunaAtual] valorAntigo;
12 senão
13 valorAntigo 0;
14 imagemSegmentada[linhaAtual, colunaAtual] 0;
// Passo 2
15 media bu↵er [linhaAtual, numeroColunas];
16 valorAntigo 0;
17 para colunaAtual numeroColunas até 1 passo 1 faça
18 media (media + bu↵er [linhaAtual, colunaAtual])/2;
19 valorAtual media;
20 se valorAtual > limiar então
21 diferenca modulo(valorAtual valorAntigo);
22 valorAntigo valorAntigo + diferenca;
23 se valorAntigo + diferenca < imagemSegmentada[linhaAtual, colunaAtual]
então
24 imagemSegmentada[linhaAtual, colunaAtual] valorAntigo;
25 senão
26 valorAntigo 0;
27 imagemSegmentada[linhaAtual, colunaAtual] 0;

// Passo 3
28 imagemSegmentadaDiscretizada teto(imagemSegmentada);
// Passo 4
29 realizarFechamento(imagemSegmentadaDiscretizada);
4.3. CONTAGEM DE PESSOAS 47

4.3 Contagem de Pessoas

Feita a segmentação da imagem, a etapa atual do algoritmo consiste em contar, para cada uma de
suas linhas, quantos pulsos detectados num determinado instante correspondem a pessoas. Ao fim
desta etapa, obtém-se um vetor contendo a contagem das possíveis pessoas presentes na cena atual
por linha e um segundo vetor contendo a contagem acumulada de pessoas por linha desde o início
da execução do algoritmo.

Este trabalho visa a contar pessoas na sequência de imagens capturadas, procurando descartar outros
objetos que eventualmente se movam na cena. Assim como definido na Seção 2.5, consideram-se
pessoas como objetos rígidos que possuem 4 características bem definidas:

• Largura média entre os ombros.

• Altura média.

• Profundidade média do tórax.

• Velocidade média.

4.3.1 Cálculo da largura humana em pixels

Suponha uma câmera instalada como na Figura 4.10.

De posse dos valores do ângulo correspondente ao campo de visão da câmera (Field of View - fov),
representado pela variável ✓, da altura h em metros na qual ela se encontra afixada, é possível
calcular sua janela de visualização ! em metros:

! = 2h tan(✓/2). (4.8)

A largura média humana em pixels m é calculada a partir da largura média lm em metros entre os
ombros humanos, da janela de visualização ! e da largura do quadro capturado w em pixels:

wlm
m = . (4.9)
!
4.3. CONTAGEM DE PESSOAS 48

hm

Figura 4.10: Projeção em perspectiva do corpo humano e as variáveis ligadas à cena.

4.3.2 Algoritmo de Contagem

O procedimento que realiza a contagem é dividido em três passos:

Passo 1 – determina-se o valor em pixels da largura média entre os ombros de um humano, conforme
calculado na Seção 4.3.1.

Passo 2 – obtém-se o somatório da largura dos pulsos de cada linha e estima-se quantos humanos
devem estar presentes em cada uma delas.

Passo 3 - compara-se a contagem de pessoas obtida em cada linha da cena atual com a da cena
anterior. Caso tenha ocorrido a mudança desse valor, significa que a pessoa que estava naquela
linha no quadro anterior se moveu e, desta forma, o valor da diferença de contagem entre os dois
quadros é acumulado em um vetor que concentra as contagens de todas as linhas desde o início do
algoritmo.
4.3. CONTAGEM DE PESSOAS 49

O procedimento que realiza os três passos descritos anteriormente é apresentado no Algoritmo 2 em


português estruturado. Os argumentos da função são:

• imagemSegmentada: representa a matriz obtida após a segmentação do quadro atual.

• numeroLinhas: número de linhas da matriz contendo o quadro atual segmentado.

• numeroColunas: número de colunas da matriz contendo o quadro atual segmentado.

• fator: fator de detecção mínima de uma pessoa. A multiplicação deste fator pela largura
média humana em pixels fornece a largura mínima em pixels que o pulso de uma linha deve
possuir, para que ele seja considerado como a presença de uma pessoa.

O diagrama da figura 4.11 descreve as funcionalidades da segmentação das imagens e da contagem


por linha.
4.3. CONTAGEM DE PESSOAS 50

Algoritmo 2: Algoritmo de contagem.


Entrada: imagemSegmentada: matriz de booleanos;
numeroLinhas, numeroColunas: inteiro;
fator : real;
vetorContagemAtual, vetorContagemAcumulado: vetor de inteiros;
Saída: vetorContagemAtual, vetorContagemAcumulado
Variáveis: numeroP essoasP ulso, larguraP ulso, contadorLinha, larguraHumanaP ixel:
inteiro;
subidaDetectada: booleano;
1 início
// Passo 1
2 larguraHumanaP ixel obterLarguraHumanaEmPixels();
3 para linhaAtual 1 até numeroLinhas faça
4 numeroP essoasP ulso, larguraP ulso, contadorLinha 0;
5 subidaDetectada FALSO;
// Passo 2
6 para colunaAtual 1 até numeroColunas + 1 faça
7 se colunaAtual < numeroColunas então
8 se imagemSegmentada[linhaAtual, colunaAtual] 1 então
9 larguraP ulso larguraP ulso + 1;
10 subidaDetectada VERDADEIRO;
11 senão
12 se subidaDetectada VERDADEIRO então
13 se larguraP ulso > larguraHumanaP ixel ⇤ fator então
14 numeroP essoasP ulso arredondar(larguraP ulso/larguraHumanaP ixel);

15 contadorLinha contadorLinha + numeroP essoasP ulso;


16 larguraP ulso 0;
17 subidaDetectada FALSO;

// Passo 3
18 se contadorLinha < vetorContagemAtual[linhaAtual] então
19 vetorContagemAcumulado[linhaAtual]
vetorContagemAcumulado[linhaAtual] + vetorContagemAtual[linhaAtual]
contadorLinha;
20 vetorContagemAtual[linhaAtual] contadorLinha;
4.3. CONTAGEM DE PESSOAS 51

Sinal Original da Linha Métricas de Largura


do Pedestre
(Média µ(L) e desvio padrão σ(L))
Preenchimento de
Lacunas

Transformação
Sinal com Orificios Geométrica do Espaço do
Preenchidos Mundo para o Espaço da Linha

Filtro de
Limiar
Métricas no Sistema
de Coordenadas da
Linha
Sinal Binarizado
(Média µt(L) e desvio padrão σt(L))

Medição
de Segmentos Segmentos Menores
Contíguos no Sinal que
µt(L) - 2σ(L)
Comparação
dos Comprimentos com as Descarte
Comprimentos Métricas
dos Segmentos de
Linha
{ ℓ1, ℓ2, ℓ3 }
Segmentos Maiores que
Segmentação µt(L) + 2σ(L)

Segmentos Entre
Divisão em ℓn / µt(L)
µt(L) - 2σ(L)
Segmentos
e
µt(L) + 2σ(L)

Acúmulo da
Contagem da Linha Contagem

Figura 4.11: Diagrama que resume as funcionalidades da segmentação das imagens e da contagem por
linha.
4.4. ESTIMATIVA DE SENTIDOS DE MOVIMENTAÇÃO 52

4.4 Estimativa de Sentidos de Movimentação

Até a etapa atual do algoritmo, foram contabilizadas quantas prováveis pessoas existem atualmente
ou já existiram no quadro, mas não o valor da proporção dessa contagem que representa pessoas
que entraram ou saíram da cena (subiram ou desceram, na imagem capturada). A presente etapa
consiste em um mecanismo para possibilitar o cálculo dessa proporção após um intervalo de tempo.

O método descrito nesta etapa não utiliza o conceito de rastreamento e considera que as pessoas que
se movimentam na cena de interesse o fazem predominantemente em uma direção. Essa decisão,
que simplifica consideravelmente o problema de contagem, restringe o tipo de ambiente no qual
o sistema de contagem pode ser instalado: apenas ambientes internos e fechados. Dessa forma,
para atender a esta restrição, é recomendado que a cena de interesse compreenda a entrada de
um estabelecimento, por exemplo, em que, geralmente, o fluxo de pessoas ocorre apenas em uma
direção, mas em ambos os sentidos (entrando ou saindo pela porta).

Considerando os objetos móveis como massas de pixels em deslocamento na cena, a proporção de


pessoas que entram ou saem da cena será computada como o fluxo de pixels para um dos dois
sentidos. A cada quadro, verifica-se se o pulso de uma linha se deslocou para cima ou para baixo,
tomando por base o quadro anterior. Uma ilustração na qual essa situação pode ser observada se
encontra na Figura 4.12. A Figura 4.12a mostra um quadro contendo duas massas de pixels que
representam pessoas, a Figura 4.12b mostra o próximo quadro, capturado alguns instantes após o
primeiro, em que as duas massas se deslocaram.

Ao fim de um intervalo de tempo, o somatório de massa de pixels que se deslocou para cada sentido
será proporcional ao número de pessoas que entrou ou saiu da cena.

As saídas do algoritmo de Estimativa de Sentidos de Movimentação são: (i) um vetor contendo o


somatório acumulado por linha dos pixels associados a objetos que desceram na imagem; (ii) um
vetor contendo o somatório acumulado por linha dos pixels associados a objetos que subiram na
imagem.
4.4. ESTIMATIVA DE SENTIDOS DE MOVIMENTAÇÃO 53

(a) (b)

(c) (d)

Figura 4.12: Deslocamento das massas de pixel. As áreas verdes das figuras (c) e (d) representam pessoas
que se deslocam para cima nas figuras (a) e (b), respectivamente; a massa vermelha, pessoas que se
deslocam para baixo.

4.4.1 Algoritmo de Estimativa de Sentidos de Movimentação

O procedimento que realiza a Estimativa de Sentidos de Movimentação é feito para cada linha da
imagem e é composto de cinco passos:

Passo 1 – Obtêm-se os vetores da linha atual, da linha logo acima e da linha logo abaixo à atual na
imagem segmentada do quadro atual.

Passo 2 – Obtém-se o vetor da linha atual na imagem segmentada do quadro anterior.

Passo 3 – Armazenam-se, em um vetor, os novos pixels da linha atual, detectados por meio da
aplicação de uma função “E” (conjunção lógica) entre cada elemento do vetor da linha atual do
quadro atual e do quadro anterior.
4.4. ESTIMATIVA DE SENTIDOS DE MOVIMENTAÇÃO 54

Passo 4 – Os pixels considerados como aqueles associados a objetos que desceram na sequência de
imagens (ou que saíram da cena de interesse) são considerados os novos pixels da linha atual que
estão presentes na linha acima e não estão presentes na linha abaixo. Essa quantidade de pixels é
somada à posição da linha atual em um vetor que acumula pixels que se deslocaram para baixo.

Passo 5 – Os pixels considerados como aqueles associados a objetos que subiram na imagem (ou que
entraram na cena de interesse) são considerados os novos pixels da linha atual que estão presentes
na linha abaixo e não estão presentes na linha acima. Essa quantidade de pixels é somada à posição
da linha atual em um vetor que acumula pixels que se deslocaram para cima.

O procedimento que realiza os cinco passos descritos anteriormente é apresentado no Algoritmo 3


em português estruturado. Os argumentos do procedimento são:

• imagemSegmentadaAtual: matriz obtida após a segmentação do quadro atual.

• imagemSegmentadaAnterior: matriz obtida após a segmentação do quadro anterior.

• numeroLinhas: número de linhas da matriz contendo o quadro atual segmentado.

• vetorPixelsSubindoAcumulados: vetor contendo, para cada linha, quantos pixels subiram


na imagem capturada durante um intervalo de tempo.

• vetorPixelsDescendoAcumulados: vetor contendo, para cada linha, quantos pixels desce-


ram na imagem capturada durante um intervalo de tempo.

O diagrama da figura 4.13 ilustra a funcionalidade do algoritmo de estimativa do sentido de movi-


mentação de uma única linha.
4.4. ESTIMATIVA DE SENTIDOS DE MOVIMENTAÇÃO 55

Algoritmo 3: Algoritmo de Estimativa de Sentidos de Movimentação.


Entrada: imagemSegmentadaAtual, imagemSegmentadaAnterior: matriz de booleanos;
numeroLinhas: inteiro;
vetorP ixelsSubindoAcumulados, vetorP ixelsDescendoAcumulados: vetor de
inteiros;
Saída: vetorP ixelsSubindoAcumulados, vetorP ixelsDescendoAcumulados;
Variáveis: vetorLinhaAtual, vetorLinhaU ltimoQuadro: vetor [1..numeroColunas] de
inteiros;
vetorN ovosP ixels, vetorLinhaAbaixo, vetorLinhaAcima: vetor
[1..numeroColunas] de inteiros;
pixelsSubindo, pixelsDescendo: inteiro;
1 início
2 para linhaAtual 2 até numeroLinhas 1 faça
// Passo 1
3 vetorLinhaAcima obterLinha(imagemSegmentadaAtual, linhaAtual 1);
4 vetorLinhaAtual obterLinha(imagemSegmentadaAtual, linhaAtual);
5 vetorLinhaAbaixo obterLinha(imagemSegmentadaAtual, linhaAtual + 1);
// Passo 2
6 vetorLinhaU ltimoQuadro obterLinha(imagemSegmentadaAnterior, linhaAtual);
7 pixelsSubindo, pixelsDescendo 0;
// Passo 3
8 vetorN ovosP ixels vetorLinhaAtual ^ ¬vetorLinhaU ltimoQuadro;
// Passo 4
9 pixelsDescendo
somar(vetorN ovosP ixels ^ vetorLinhaAcima ^ ¬vetorLinhaAbaixo);
10 vetorP ixelsDescendoAcumulados[linhaAtual]
vetorP ixelsDescendoAcumulados[linhaAtual] + pixelsDescendo;
// Passo 5
11 pixelsSubindo
somar(vetorN ovosP ixels ^ ¬vetorLinhaAcima ^ vetorLinhaAbaixo);
12 vetorP ixelsSubindoAcumulados[linhaAtual]
vetorP ixelsSubindoAcumulados[linhaAtual] + pixelsSubindo;
4.5. AGREGAÇÃO DE DADOS DE CONTAGEM 56

Sinal da Linha Sinal da Linha


n no instante t - 1 n no instante t

Detecção de novos
pontos
desde o instante anterior

Novos pontos
na linha

Sinal da Linha Comparação dos novos pontos Sinal da Linha


n+1 no instante t-1 com os pontos antigos das linhas n-1 no instante t-1
superior e inferior

Pontos Originários Pontos Originários


da Linha Inferior da Linha Superior

Contagem
dos Pontos

Proporção entre Pontos


Originários das Linhas
Superior e Inferior

Figura 4.13: Diagrama que ilustra a funcionalidade do algoritmo de estimativa do sentido de movimentação
por linha.

4.5 Agregação de Dados de Contagem

Após a Contagem e a Estimativa de Sentidos de Movimentação, a cada quadro já se têm computado


(i) quantas possíveis pessoas estão presentes em cada linha e (ii) o valor da massa de pixels que se
deslocou em cada sentido.

A etapa atual visa a agrupar e armazenar os dados de contagem e sentidos de movimentação


reportados pelas linhas a cada quadro desde o início da execução do algoritmo. Agrupados esses
dados, será possível estimar quantas pessoas passaram pela cena e qual a proporção delas entrou
ou saiu durante o período de execução do algoritmo.
4.5. AGREGAÇÃO DE DADOS DE CONTAGEM 57

4.5.1 Algoritmo de agregação de dados de contagem

O procedimento que realiza a Agregação é composto por cinco passos:

Passo 1 – Ordena-se o vetor com as contagens acumuladas, obtido ao fim do procedimento de


contagem.

Passo 2 – Calcula-se a média dos valores de contagem presentes em cada linha, excluindo-se aquelas
que possuem valores discrepantes em relação às demais. O número de linhas a se desconsiderar é
um dos parâmetros da função de agregação.

Passo 3 – Calcula-se a proporção dos pixels associados aos objetos que subiram e aos objetos que
desceram na imagem em relação à massa total de pixels, representando, respectivamente, os objetos
que entraram e que saíram da cena ao longo do intervalo de tempo aferido.

Passo 4 – Somam-se os valores de contagem do quadro atual. O valor obtido é dividido pela profun-
didade média do corpo humano em pixels, obtida através de cálculos análogos aos da Seção 4.3.1.
Esse valor é uma estimativa de quantas pessoas estão presentes na cena atualmente.

Algoritmo 4: Representação do registro “Resultado”


registro resultado{
contagemAcumulada: inteiro;
proporcaoEntrada, proporcaoSaida: real;
contagemQuadroAtual: inteiro;
};

Passo 5 – Um registro contendo os cálculos realizados nessa etapa é preenchido e retornado pela
função. A estrutura desse registro é apresentada no Algoritmo 4.

O procedimento que realiza os cinco passos descritos anteriormente é apresentado no Algoritmo 5


em português estruturado. Os argumentos do procedimento são:

• vetorContagemAtual: vetor contendo a contagem (quantidade estimada) de pessoas pre-


sentes no quadro atual em cada linha.

• vetorContagemAcumulada: vetor contendo a contagem de pessoas acumulada em cada linha.

• numeroLinhas: número de linhas da matriz contendo o quadro atual segmentado.


4.5. AGREGAÇÃO DE DADOS DE CONTAGEM 58

• vetorPixelsSubindoAcumulados: vetor contendo, para cada linha, quantos pixels subiram


na imagem capturada durante um intervalo de tempo.

• vetorPixelsDescendoAcumulados: vetor contendo, para cada linha, quantos pixels desce-


ram na imagem capturada durante um intervalo de tempo.

O diagrama da figura 4.14 ilustra o funcionamento do algoritmo de agregação de dados de contagem.


4.5. AGREGAÇÃO DE DADOS DE CONTAGEM 59

Algoritmo 5: Algoritmo de Agregação de Dados de Contagem.


Entrada: vetorContagemAtual, vetorContagemAcumulado: vetor de inteiros;
vetorP ixelsSubindoAcumulados, vetorP ixelsDescendoAcumulados: vetor de
inteiros;
numeroLinhas, margemDiscrepancia: inteiro;
Saída: resultadoContagem: resultado;
Variáveis: prof undidadeHumanaP ixels, indicesConsiderados: inteiro;
contagemAgregada, contagemQuadroAtual, massaP ixels: inteiro;
prof undidadeHumanaP ixels, indicesConsiderados: inteiro;
vetorContagemAcumuladaOrdenado: vetor [1..numeroLinhas] de inteiros;
1 início
2 entraramAgregado, sairamAgregado 0;
3 contagemAgregada, contagemQuadroAtual 0;
// Passo 1
4 vetorContagemAcumuladaOrdenado ordenar(vetorContagemAcumulada);
// Passo 2
5 para linhaAtual margemDiscrepancia até (numeroLinhas margemDiscrepancia)
faça
6 contagemAgregada
contagemAgregada + vetorContagemAcumuladaOrdenado[linhaAtual];
7 contagemAgregada
arredondar(contagemAgregada/(numeroLinhas 2 ⇤ margemDiscrepancia));
// Passo 3
8 entraramAgregado somar(vetorP ixelsSubindoAcumulados);
9 sairamAgregado somar(vetorP ixelsDescendoAcumulados);
10 massaP ixels entraramAgregado + sairamAgregado;
11 se massaP ixels > 0 então
12 entraramAgregado entraramAgregado/massaP ixels;
13 sairamAgregado sairamAgregado/massaP ixels;
14 senão
15 entraramAgregado 0;
16 sairamAgregado 0;
// Passo 4
17 prof undidadeHumanaP ixels obterProfundidadeHumanaEmPixels();
18 contagemQuadroAtual somar(vetorContagemAtual);
19 contagemQuadroAtual arredondar(contagemQuadroAtual/profundidadeHumanaPixels);
// Passo 5
20 resultadoContagem.contagemAcumulada contagemAgregada;
21 resultadoContagem.proporcaoEntrada entraramAgregado;
22 resultadoContagem.proporcaoSaida sairamAgregado;
23 resultadoContagem.contagemQuadroAtual contagemQuadroAtual;
4.5. AGREGAÇÃO DE DADOS DE CONTAGEM 60

Proporções de Movimento Valores Individuais


Para Baixo/Para Cima das Contagens
de Cada Linha de cada Linha

... ...

Temporizador Acúmulo Valores Temporizador Acúmulo Valores


no Tempo (Soma) no Tempo (Soma)

Proporções Individuais Valores Individuais


de cada Linha ... de cada Linha ...
Agregadas no Tempo Agregados no Tempo

Ordenação
dos Valores
Média
Agregados
no Tempo

Lista Ordenada de
Valores de Contagem
Agregados no Tempo

Valores
Maiores Filtragem de
Proporção de Movimento
Descarte Valores
Para Baixo / Para Cima Discrepantes
Agregado no Tempo e no Espaço Valores
da Imagem Menores

Lista Ordenada de
Valores de Contagem
Agregados no Tempo,
Com Outliers Removidos

Valor de Contagem
Agregado no Tempo e
Multiplicação no Espaço da Imagem
das Porções
Média
Para Cima / Para
Baixo

Contagem de Contagem de
Pedestres Pedestres
Para Cima Para Baixo

Figura 4.14: Diagrama que ilustra a funcionalidade do algoritmo de agregação dos dados de contagem.
4.6. ARQUITETURA E OUTRAS CARACTERÍSTICAS DO SISTEMA 61

4.6 Arquitetura e outras características do sistema

4.6.1 Considerações sobre os algoritmos utilizados

Todos os algoritmos utilizados neste trabalho foram projetados levando-se em consideração que
seriam executados em dispositivos móveis, que, em sua grande maioria, não dispõem de poder de
processamento elevado.

O algoritmo de complexidade computacional mais custosa é o NCC, cujo tempo de execução é


subquadrático (o(n2 )) em relação ao número de pixels da imagem de entrada. Dessa forma, é
importante que seus parâmetros sejam dimensionados, não só levando em conta as condições do
ambiente onde o sistema será utilizado, mas também a capacidade de processamento do dispositivo.

4.6.2 Controle da operação

Como a complexidade computacional do sistema o torna adequado para ser utilizado em dispositivos
móveis, é interessante que a contagem de pessoas possa ser acompanhada em tempo real. Para que
isso possa ocorrer, o sistema deve enviar os resultados da contagem de pessoas para um servidor,
onde os dados ficarão gravados em um banco de dados para, por exemplo, acompanhamento do
fluxo de pessoas em um estabelecimento ou para a geração de relatórios estratégicos.

Uma possível estratégia de envio desses resultados seria remetê-los ao servidor sempre que o quadro
atual não apresentar pessoas (e isso é possível verificar através do campo contagemQuadroAtual
do registroResultado, obtido após a fase de agregação) e se houver dados acumulados não-nulos
disponíveis para envio. Após o envio para o servidor, o algoritmo pode zerar os valores acumulados
das variáveis e reiniciar a contagem. Esse ciclo é descrito na figura 4.15.

4.6.3 Arquitetura do sistema

Considerando, mais uma vez, que o sistema será executado em dispositivos móveis, assume-se que
sua comunicação com o servidor se dará através de comunicação sem fio. Uma possível solução
de arquitetura que possibilitará funcionamento do sistema é sugerida na Figura 4.16. No bloco
(i) dessa Figura, dispositivos móveis realizam a contagem e se conectam com um roteador Wi-Fi,
que provê comunicação com um servidor na Web. No bloco (ii) dessa mesma Figura, um servidor
4.6. ARQUITETURA E OUTRAS CARACTERÍSTICAS DO SISTEMA 62

Realiza ciclo de
contagem de pessoas

Não Quadro
atual está
vazio?

Sim

Envia dados de contagem


para o servidor

Zera dados de contagem

Figura 4.15: Diagrama que ilustra quando os dados devem ser enviados para o servidor.

ii iii

Web

Figura 4.16: Arquitetura da solução de comunicação.

na Web provê um meio de comunicação com os dispositivos móveis e disponibiliza interface para
4.7. CONTAGEM DE PESSOAS EM PORTAS LARGAS 63

acessar relatórios gerados através dos resultados de contagem armazenados em seu banco de dados.
No bloco (iii), computadores com acesso à Web acessam os relatórios através de um navegador de
internet.

4.7 Contagem de pessoas em portas largas

Os procedimentos descritos até a presente Seção são válidos para funcionamento em um único ponto
de contagem, em que as portas nas quais as pessoas passam possuem dimensão compatível com o
campo de visão da câmera do dispositivo móvel.

Em situações em que as portas onde os dispositivos estão instalados tem largura inferior à do campo
de visão de suas câmeras, o sistema funciona como esperado, desde que as condições impostas na
Seção 1.1 sejam satisfeitas.

Para casos em que o dispositivo esteja instalado em portas de largura superior a seu campo de visão,
propõe-se o seguinte método para agrupamento dos dados de contagem:

Passo 1 – Define-se a altura e a largura ⇡ da porta em que o dispositivo será instalado (observando
a restrição de que a altura não seja inferior a 2 metros e superior a 5 metros).

Passo 2 – Calcula-se o campo de visão da câmera em metros ⇢, dada a altura em que será realizada
a instalação.

Passo 3 – A quantidade de dispositivos que devem ser instalados sobre a porta será o número /⇡
arredondado para cima.

Passo 4 – A contagem reportada pelos dispositivos ao longo de um período é dividida pelo número
/⇡.

Para que o método proposto funcione conforme esperado, ao instalar os dispositivos sobre a porta, é
fundamental que eles estejam igualmente espaçados, mesmo que haja uma área de interseção entre
seus campos de visão.
4.8. CONSIDERAÇÕES FINAIS 64

4.8 Considerações finais

Com a restrição da direção do fluxo de pessoas na cena, várias facilidades foram obtidas e os algo-
ritmos utilizados foram desenvolvidos com ordem de complexidade relativamente baixa, tornando-os
utilizáveis em dispositivos móveis. O sistema desenvolvido apresenta robustez em diversas situações,
como: pequenas variações na iluminação; transporte de objetos pelas pessoas; casais ou grupos de
pessoas se deslocando na cena.
5 | Resultados Experimentais

Neste Capítulo, os resultados obtidos são apresentados e a metodologia proposta no Capítulo 4 é


avaliada através de experimentos realizados em condições reais de aplicação do sistema.

5.1 O Protótipo Desenvolvido

Para testar a metodologia proposta, um protótipo inicial foi desenvolvido para o sistema operacional
iOS 5, da empresa Apple, e instalado em um iPod Touch de Quarta Geração. Essa plataforma foi
escolhida devido ao ferramental de qualidade oferecido pela empresa para apoiar o desenvolvimento
de aplicativos e pelo fato de não haver, na época da escolha, um dispositivo que oferecesse o mesmo
poder computacional e especificações por um preço similar.

Visando a que o algoritmo de contagem de pessoas proposto fosse compatível com outros sistemas e
dispositivos, optou-se por utilizar a linguagem C (ANSI C) em seu desenvolvimento. Essa linguagem
é compatível com a Objective-C, necessária para se escrever aplicativos para iOS. Além disso, a
linguagem C é universalmente adotada, sendo compatível com uma gama de outros dispositivos,
sistemas e arquiteturas, tornando o algoritmo de contagem portável e minimizando recursos de
desenvolvimento, caso outro hardware ou sistema para realizar a contagem seja adotado.

O desenvolvimento por meio dessa linguagem, contudo, requer conhecer minuciosamente o ciclo de
vida das rotinas implementadas, pois todo o gerenciamento de memória passa a ficar a cargo do
desenvolvedor. Isso não acontece na linguagem Objective-C, uma vez que ela oferece mecanismos
como a Contagem Automática de Referências, que realiza todo o gerenciamento de apontadores e
desalocação de memória para o desenvolvedor. Dessa forma, para detectar eventuais vazamentos de
memória durante o desenvolvimento com a linguagem C, foram utilizadas ferramentas de profiling
disponíveis entre o conjunto de ferramentas oferecidas na plataforma de desenvolvimento da Apple.

Escrito na linguagem C, após ser testado e validado para dispositivos da plataforma Apple, o sistema
pode ser portado para outros dispositivos de custo mais baixo existentes no mercado.

65
5.1. O PROTÓTIPO DESENVOLVIDO 66

Para que seja possível testar um aplicativo em um dispositivo da plataforma iOS durante seu desen-
volvimento, é necessário obter uma licença de desenvolvedor em um dos programas disponíveis. A
empresa disponibiliza três programas para que a comunidade possa se ingressar: (i) como desenvol-
vedor individual; (ii) como universidade; (iii) como empresa. Empresas e desenvolvedores individuais
devem pagar uma taxa para se inscreverem no programa. No caso de universidades, aplicativos
podem ser desenvolvidos apenas para fins acadêmicos – em cursos ou em atividades de pesquisa –
e a licença é gratuita. O CEFET-MG se ingressou no programa de desenvolvedor Apple como uma
universidade a fim de suprir a demanda deste trabalho e atualmente possui uma conta que pode ser
utilizada por estudantes.

5.1.1 Características do protótipo desenvolvido

A Tabela 5.1 reúne as especificações técnicas do iPod Touch de Quarta Geração, dispositivo para o
qual o protótipo foi construído.

Tabela 5.1: Especificações técnicas do iPod Touch de Quarta Geração.

Clock 800MHz
Memória 256MB
Capacidade 8GB
Conexão de dados 802.11b/g/n (WiFi)
Resolução da câmera 640x480 px
Resolução da tela 960x640 px
Campo de visão ⇡ 53,3
Temperatura de operação -2 C a 45 C
Carga elétrica da bateria 930mAh

O protótipo desenvolvido conseguiu atingir uma velocidade média de processamento de aproxima-


damente 23 quadros por segundo no processamento em tempo real das imagens, utilizando como
recursos, além de sua capacidade de processamento: (i) sua câmera para obter as imagens; (ii) a
conexão WiFi para enviar os dados de contagem ao servidor; e (iii) sua tela para exibir as imagens
processadas.

Assim, o aplicativo de contagem instalado no dispositivo foi mantido ligado ininterruptamente du-
rante três meses. Durante esse período, o aplicativo desenvolvido não foi encerrado sozinho, mini-
mizando suspeitas de vazamento de memória. Vazamentos de memória devem ser sempre evitados,
pois, em geral, representam bugs de um sistema e podem causar encerramento inesperado em
softwares.
5.1. O PROTÓTIPO DESENVOLVIDO 67

Além disso, foi verificado que, mesmo utilizando massivamente as unidades central e gráfica de
processamento e o barramento de entrada e saída – com a câmera, a comunicação e com a atuali-
zação da tela – o dispositivo encontrou-se dentro de sua faixa operacional de temperatura a todo
momento: a temperatura manteve-se suficientemente baixa, uma vez que o sistema operacional
não exibiu alertas de temperatura, nem suspendeu o processo do aplicativo devido a problemas com
temperatura.

No entanto, ao se desligar por qualquer motivo (falta de energia, por exemplo), devido às restrições
impostas ao lançamento dos aplicativos pela Apple, o iPod é incapaz de inicializar automaticamente
o software que rodava antes de se desligar. Sendo necessário intervir no dispositivo para que o
aplicativo volte a funcionar. Isso é possível através de intervenção humana ou através de um
procedimento conhecido como Jailbreak.

O Jailbreak é um procedimento não suportado pela fabricante, que, após realizado, garante ao usuário
direitos de administrador sobre o dispositivo. Com esses direitos, o usuário é capaz, por exemplo,
de executar serviços e processos que garantam que o aplicativo será iniciado automaticamente após
o reinício do aplicativo.

Por ser não suportado pela fabricante, a dependência desse procedimento torna o uso do iPod
uma alternativa não interessante comercialmente, uma vez que a venda da solução para um cliente
pode ser comprometida, caso uma ferramenta para realizar o Jailbreak de determinada versão do
dispositivo não esteja disponível.

Sendo assim, decidiu-se por portar todo código para um nova plataforma móvel que permitisse
explorar mais recursos do aparelho e que pudesse oferecer dispositivos que já garantiriam direitos de
administrador ao desenvolvedor, sem que para consegui-los fosse necessário utilizar ferramentas não
suportadas pela fabricante.

5.1.2 Portando o código existente para outra plataforma

A nova plataforma utilizada foi a Android, um outro sistema operacional para dispositivos móveis
baseado no núcleo do Linux. Diferentemente do iOS, da fabricante Apple, o Android é utilizado em
uma gama muito maior de aparelhos, envolvendo grandes fabricantes da atualidade - como HTC,
Samsung, Sony, Motorola, LG - o que abre ainda mais o leque de possibilidades de dispositivos
capazes de rodar o sistema. Além disso, o Android possui código aberto. Caso seja necessário
5.1. O PROTÓTIPO DESENVOLVIDO 68

desenvolver um hardware customizado futuramente para abrigar o software de contagem de pessoas,


essa plataforma pode ser um interessante alternativa de sistema operacional.

Definida a plataforma, escolheu-se o dispositivo Galaxy S WiFi 5.0 (YP-G70), da Samsung, como
substituto do iPod Touch Quarta Geração. Vale enfatizar que um aplicativo desenvolvido para
um dispositivo Android não necessariamente funcionará em qualquer dispositivo Android. Cada
dispositivo Android no mercado possui sua própria implementação ou versão do Sistema Operacional
(oGalaxy S WiFi 5.0 (YP-G70), por exemplo, possui o Android GingerBread customizado pela
Samsung). É necessário realizar testes antes de se adotar outro dispositivo Android, mas ainda
que haja algum problema, resolvê-lo será naturalmente menos custoso que rescrever o sistema por
completo.

A Tabela 5.2 reúne as especificações técnicas do Galaxy S WiFi 5.0 (YP-G70).

Tabela 5.2: Especificações técnicas do Galaxy S WiFi 5.0 (YP-G70).

Clock 1GHz
Memória 512MB
Capacidade 8GB
Conexão de dados 802.11b/g/n (WiFi)
Resolução da câmera 640x480 px
Resolução da tela 800x480 px
Campo de visão ⇡ 49,0
Carga elétrica da bateria 2500mAh

A Figura 5.1 ilustra em um diagrama a divisão de responsabilidades dos módulos do primeiro pro-
tótipo desenvolvido para dispositivos móveis.

Com o uso da linguagem C, o esquema de divisão de responsabilidades e a organização realizada na


fase de desenvolvimento do primeiro protótipo, foi possível portar todo o algoritmo de contagem de
pessoas para Android sem realizar nenhuma alteração no código responsável pelo processamento das
imagens, uma vez que somente as camadas de ponte e as interações com as APIs Nativas (conjunto
funcionalidades oferecidas nativamente pelo sistema operacional) necessitavam de serem rescritas
para a nova plataforma.

É interessante ressaltar que o algoritmo de contagem de pessoas não representa todo o sistema, mas
consiste no núcleo do processo de contagem de pessoas, não incluindo, por exemplo, a lógica de
comunicação com o servidor, de obtenção das imagens da câmera, nem a interface com o usuário
que envolvem as APIs Nativas da plataforma.
5.2. SERVIDOR DE ACOMPANHAMENTO DOS DISPOSITIVOS 69

Camada
Contagem
Multiplataforma
(ANSI C)
Buffer de Imagem
Configurações Subtração Segmentação Agregação
primeiro plano segmentada

Buffer de plano
de fundo Estimativa
de Sentido
Buffer de Registro de
ABS
Entrada resultados

Camada
de Ponte
Inicial. do Envio ao
Inicialização Captura servidor
OpenGL

APIs
Nativas
Registro API da API de API de
do sistema câmera gráficos rede

Figura 5.1: Diagrama com a divisão de responsabilidades dos módulos do protótipo desenvolvido para
dispositivos móveis. Retângulos denotam dados (entrada ou saída), losangos, operações e formas ovais re-
presentam serviços ou APIs (Application Programming Interfaces) disponibilizadas pelo Sistema Operacional
do dispositivo em questão.

O manual de utilização do dispositivo encontra-se no Anexo C.

5.2 Servidor de acompanhamento dos dispositivos

Foi desenvolvido, também, um servidor para abrigar os dados de contagem enviados pelos dispositivos
e para acompanhá-los em tempo real. Os dados de contagem e os eventuais logs são enviados via
protocolo HTTP (método POST) pelo dispositivo. A comunicação com o servidor é feita para
concentrar os dados de contagem enviados pelos dispositivos, conforme discutido na Seção 4.6.3.

A especificação das funcionalidades do servidor web encontram-se no Anexo A. A figura 5.2 mostra
uma captura de tela de sua interface.
5.3. EXPERIMENTOS 70

Figura 5.2: Captura de tela do servidor Web criado para acompanhar os dispositivos de contagem.

No servidor foram incluídas funcionalidades para cadastrar vários dispositivos para realizar contagem
em portas largas, conforme descrito na Seção 4.7. A Figura 5.3 mostra a interface criada para
cadastrar vários dispositivos para uma porta.

5.3 Experimentos

5.3.1 Calibrando o Algoritmo Desenvolvido

Conforme discutido ao longo do Capítulo 4, o algoritmo depende de uma série de parâmetros que
devem ser definidos para seu funcionamento. A mudança de tais parâmetros influenciam direta-
mente a contagem de pessoas, uma vez que modificam as imagens que serão utilizadas nas últimas
etapas do processo de contagem, fazendo com que mais ou menos pessoas possam ser detectadas
e devidamente contabilizadas.

Os parâmetros relacionados às dimensões humanas foram definidos com base na Seção 2.5.1 deste
trabalho. Os valores adotados foram: 1,70m para a altura média humana; 0,50m para a profundidade
5.3. EXPERIMENTOS 71

média do tórax humano e 0,60m para a distância média entre os ombros humanos. A Tabela 5.3
reúne os demais parâmetros citados no Capítulo 4.

(a)

(b)

(c)
Figura 5.3: Captura de tela da interface para cadastrar dispositivos em portas largas. (a)Porta sem dis-
positivos. (b)Porta com quantidade insuficiente de dispositivos. (c)Porta com quantidade adequada de
dispositivos.
5.3. EXPERIMENTOS 72

A calibração pixel/mm foi feita medindo-se, em pixel, objetos de tamanhos conhecidos a priori na
imagem de entrada, com o dispositivo afixado em alturas conhecidas.

Tabela 5.3: Parâmetros a serem definido segundo a metodologia proposta.

Etapa do algoritmo Parâmetros necessários


Subtração de Imagens Tamanho da Janela do NCC; Limiar NCC; Tamanho da Janela do Algo-
ritmo de Similaridade; Limiar de Similaridade; Fator de Adaptação
Segmentação Limiar de segmentação
Contagem Fator de detecção mínima de uma pessoa

Na etapa de subtração de imagens, os parâmetros foram definidos da seguinte forma:

• Tamanho da Janela do NCC e da Janela do Algoritmo de Similaridade: aproximadamente


8% da matriz que representa a imagem de entrada. Esse valor foi determinado após vários
experimentos realizados, observando-se sobretudo a qualidade da imagem com as pessoas
segmentadas correspondente e levando-se em conta as dimensões da imagem de entrada, do
campo de visão da câmera e da calibração pixel/mm obtidas.

• Limiar NCC e de Similaridade: 0,95 e 0,80, respectivamente, determinados analisando-se a


imagem produzida com as pessoas segmentadas.

• Fator de Adaptação: 0,05, calculado através da taxa de quadros do algoritmo e da qualidade


da imagem que representa o plano de fundo.

Os parâmetros das etapas de segmentação e contagem, no entanto, são subjetivos demais para serem
definidos sem um estudo mais aprofundado de suas mudanças, já que o algoritmo de contagem
é ainda mais sensível a esses parâmetros e não é possível determinar se o valor escolhido é o
ótimo apenas através de imagens. Dessa forma, para determinar esses valores de forma mais bem
fundamentada, foi necessário realizar experimentos controlados. O Anexo B mostra como esses
valores foram determinados. Seus valores foram:

• Limiar de segmentação: 0,31, levando em conta que, como definido na Seção 4.2.3, os valores
que os elementos da matriz B, resultante da subtração do plano de fundo, podem assumir
estão entre 0 e 1.

• Fator de detecção mínima de uma pessoa: 70% do valor da largura média entre os ombros.

Os experimentos controlados são fundamentais para que a taxa de acerto geral do sistema seja
determinada, dado um conjunto de parâmetros ótimos. Para realizá-los, é fundamental que a mesma
5.3. EXPERIMENTOS 73

sequência de imagens seja processada. Para tanto, decidiu-se por utilizar sequências de imagens de
arquivos de vídeos, gravados pelos mesmos dispositivos que executam o protótipo desenvolvido,
garantindo que tais sequências estariam submetidas às mesmas condições das imagens obtidas em
tempo real, uma vez que o mesmo sensor é utilizado.

O protótipo construído, no entanto, era capaz de processar imagens em tempo real obtidas apenas
através da câmera. Além disso, os vídeos, para apresentarem quantidade suficiente de amostra,
seriam longos demais em comprimento (cada duas horas e meia de vídeo correspondem a um arquivo
de aproximadamente 4GB de dados). O dispositivo utilizado no desenvolvimento do protótipo não
dispõe de poder computacional adequado para ler arquivos tão grandes e realizar, ao mesmo tempo,
o processamento das imagens, o que comprometeria a realização dos experimentos controlados.
Decidiu-se, portanto, por criar um novo protótipo capaz de utilizar as sequências de vídeo gravadas
como entrada de forma eficiente.

Devido à facilidade de se portar o código para o Mac OS X, um sistema operacional também criado
pela Apple, destinado exclusivamente a computadores Macintosh e que dispõe de ferramentas para
compilar códigos na linguagem C e Objective-C, optou-se por também rescrever o código para esse
sistema operacional. Com os recursos computacionais presentes em computadores Macintosh, o
algoritmo de contagem de pessoas iria processar facilmente grandes arquivos de vídeo, tornando a
realização dos experimentos controlados mais rápida.

Com a organização realizada na fase de desenvolvimento do primeiro protótipo, foi possível portar o
código para Mac OS X sem realizar nenhuma alteração no código responsável pelo processamento
das imagens, uma vez que somente as camadas de de ponte e as interações com as APIs Nativas
(conjunto funcionalidades oferecidas nativamente pelo sistema operacional) necessitavam de serem
rescritas para a nova plataforma.

A Figura 5.4 mostra a interface do protótipo desenvolvido para Mac OS X ao processar um ví-
deo. Com o protótipo capaz de processar vídeos construído, procedeu-se com o planejamento dos
experimentos.

5.3.2 Captura dos vídeos

No total, foram gravados 3 vídeos de aproximadamente 2h e 25min de duração. Os vídeos visavam


a refletir amostras reais de situações nas quais o sistema de contagem pudesse ser instalado. Assim,
as gravações foram realizadas como segue abaixo:
5.3. EXPERIMENTOS 74

Figura 5.4: Captura de tela do protótipo desenvolvido sendo executado em Mac OS X.

• Vídeo 1: gravado em um estabelecimento comercial. Nessa cena, há iluminação artificial apro-


priada para o bom funcionamento do algoritmo. No entanto, apesar de não ser significativa,
há influência de luz natural. No estabelecimento há duas portas. Este vídeo foi gravado em
uma porta onde ocorre predominantemente entradas de pessoas.

• Vídeos 2 e 3: gravados durante a manhã e tarde, respectivamente, na porta do prédio 17, onde
se localiza o Departamento de Computação (DECOM) do CEFET-MG. A cena recebe forte
influência da iluminação natural uma vez que o dispositivo foi instalado na porta do prédio.

Em todas as cenas, os dispositivos foram instalados no teto, em ângulo ortogonal ao chão, de modo
que a câmera frontal ficasse responsável por realizar a captura e a imagem obtida representasse uma
vista em planta da cena. A Figura 5.5 mostra como os dispositivos foram instalados.
5.4. CRIAÇÃO DO GABARITO DA CONTAGEM 75

5.4 Criação do Gabarito da Contagem

Os vídeos gravados foram analisados, visando a obter o instante aproximado em que cada evento
de contagem ocorria ao longo da sequência. Um evento de contagem ocorre no momento em que
uma pessoa atravessa completamente a cena, entrando ou saindo dela.

O algoritmo de contagem foi desenvolvido de forma a operar melhor no caso em que uma única pessoa
passa pela cena em uma velocidade considerada normal para humanos em áreas urbanas, como visto
na Seção 2.5.2. Em todos os vídeos, porém, houve cenários desafiadores, envolvendo situações tais
como: mudanças no plano de fundo; presença de casais, pessoas abraçadas ou portando acessórios
grandes; várias pessoas passando em fila; forte iluminação externa, formando sombras na cena.

(a) (b)

(c) (d)

Figura 5.5: Instalação do dispositivo: (a) e (b) na cena do vídeo 1; (c) e (d) na cena dos vídeos 2 e 3.
5.4. CRIAÇÃO DO GABARITO DA CONTAGEM 76

Assim, para cada evento, classificaram-se as pessoas envolvidas de acordo com sua forma vista no
vídeo. Além de possibilitar testar a sensibilidade do algoritmo proposto à ocorrência de eventos
com características ligadas à forma das pessoas vista de cima, essa classificação foi feita para tornar
possível uma posterior análise estatística. Em caso de problemas detectados, a análise seria feita
para auxiliar na descoberta do tipo de evento associado ao erro. A Tabela 5.4 reúne as classificações
realizadas empiricamente para as pessoas vistas em cada evento.

Tabela 5.4: Classificação das pessoas quanto à forma (considerando vista em planta)

Tipo de forma Descrição


Pessoas comuns Pessoas de dimensões comuns (próximas às dimensões médias
adotadas)
Pessoas com acessórios pequenos Pessoas com bolsas, mochilas, pastas ou objeto pequenos,
que não tornem sua área muito maior, mas que as tornem
diferentes de pessoas comuns, vistas em planta
Pessoas com acessórios grandes Pessoas com acessórios grandes, que tornam sua aparência
na vista em planta completamente diferente
Pessoas obesas Pessoas com dimensões grandes demais, apresentando formas
muito diferentes daquelas de pessoas comuns
Casais Duas pessoas abraçadas ou muito próximas
Crianças Pessoas com dimensões pequenas demais, apresentando for-
mas muito diferentes daquelas de pessoas comuns
Crianças com pais Pessoas pequenas acompanhadas de pessoas comuns

Ao analisar os vídeos, foram identificadas outras classificações possíveis para as pessoas (como duas
crianças juntas, ou duas pessoas com acessórios abraçadas), mas elas não ocorreram em quantidade
suficiente para se tornarem relevantes para análise.

À medida que eram identificados, os eventos eram registrados em um banco de dados, aqui denomi-
nado de Gabarito, em uma tupla contendo o nome do vídeo, o número do quadro em que o evento
ocorreu, o tipo de evento (entrada ou saída de pessoas) e a quantidade referente a cada uma das
classificações possíveis para as pessoas, como enumerado na Tabela 5.4.
5.5. EXPERIMENTOS E ANÁLISE DOS RESULTADOS 77

A Figura 5.6 mostra a interface do sistema construído para auxiliar a criação do Gabarito.

Figura 5.6: Sistema construído para apoiar a criação do gabarito de contagem.

Finalmente, após a criação do Gabarito, os vídeos gravados foram processados pelo protótipo cons-
truído para Mac OS X.

5.5 Experimentos e Análise dos Resultados

5.5.1 Vídeo 1

Neste vídeo, 48% das pessoas que passaram pela cena foram classificadas (de acordo com a Ta-
bela 5.4) como comuns; 20%, como pessoas com acessórios pequenos; e 15%, como casais. A
Figura 5.7 apresenta alguns dos quadros desse vídeo.

A tabela abaixo resume os dados da contagem obtidos do processamento do vídeo 1 para as confi-
gurações estabelecidas.

Na cena representada pelo vídeo 1, por se tratar de um estabelecimento comercial, houve diversas
vezes em que seguranças ou vigias permaneceram parados na imagem. Como esses eventos não
5.5. EXPERIMENTOS E ANÁLISE DOS RESULTADOS 78

Figura 5.7: Quadros do vídeo 1.

Tabela 5.5: Resultados obtidos no vídeo 1.

Pessoas Entrando Pessoas Saindo


Protótipo 427 263
Gabarito 457 252
Acurácia 96,72% 90,84%

Evolução da taxa de acerto


100,00%!

90,00%!

80,00%!

70,00%!
Taxa de acerto!

60,00%!

50,00%!

40,00%!

30,00%!

20,00%!

10,00%!

0,00%!
0" 20" 40" 60" 80" 100" 120" 140"

Tempo (min)!

Figura 5.8: Resultado do vídeo 1.

ocorreram em número significante em relação à quantidade total de eventos de contagem, sua


influência praticamente não pode ser percebida no resultado final. Além disso, foi verificado que a
maioria dos erros ocorridos nesse vídeo estavam em eventos em que muitas pessoas entravam e/ou
saíam simultaneamente. A forma das pessoas vistas de cima influenciou pouco no resultado final.
5.5. EXPERIMENTOS E ANÁLISE DOS RESULTADOS 79

A taxa de acerto geral para este vídeo leva em conta a evolução da taxa de acerto ao longo do
tempo, como pode ser visto na Figura 5.8. Nessa Figura é possível notar que, ao longo do tempo,
a taxa de acerto do sistema se torna maior e mais estável. Quanto maior o intervalo da agregação
feita (seção 4.5), menos erros de arredondamento são produzidos. Dessa forma, quanto mais curto
for o intervalo de agregação dos dados, o método sugerido neste trabalho pode cometer um erro
maior, sendo importante, portanto, que a agregação seja feita em tempo suficiente para que um
fluxo suficiente de pessoas seja atingido e o arredondamento não gere ruído grande na saída. Para
todos os vídeos, o intervalo de agregação foi fixado em um minuto.

Em relação aos demais vídeos gravados, neste foi registrada uma taxa relativamente alta de pessoas
passando pela cena, o que também não influenciou o resultado final.

5.5.2 Vídeo 2

Neste vídeo, 71% das pessoas que passaram pela cena foram classificadas como pessoas com aces-
sórios pequenos e 24%, como pessoas comuns. A Figura 5.9 apresenta alguns dos quadros desse
vídeo.

Figura 5.9: Quadros do vídeo 2.

A Tabela 5.6 resume os dados da contagem obtidos do processamento do vídeo 2 para as configu-
rações estabelecidas.

Tabela 5.6: Resultados obtidos no vídeo 2.

Pessoas Entrando Pessoas Saindo


Protótipo 72 92
Gabarito 81 84
Acurácia 98,77% 80,25%
5.5. EXPERIMENTOS E ANÁLISE DOS RESULTADOS 80

Na cena registrada no vídeo 2, foi possível verificar que a maior parte das pessoas que passaram pela
cena portavam acessórios, o que é compreensível, uma vez que no local de gravação havia vários
estudantes com mochilas e bolsas.

Evolução da taxa de acerto


100,00%!

90,00%!

80,00%!

70,00%!
Taxa de acerto!

60,00%!

50,00%!

40,00%!

30,00%!

20,00%!

10,00%!

0,00%!
0! 20! 40! 60! 80! 100! 120! 140!
Tempo (min)!

Figura 5.10: Resultado do vídeo 2.

A maior parte dos erros, porém, ocorreu: nas situações em que as pessoas realizaram movimentos
muito sinuosos ao atravessar a cena; nas que muitas pessoas passaram juntas e com objetos grandes;
e nas que pessoas passaram numa região em que a câmera não as capturava inteiramente como
mostram os quadros da Figura 5.11.

Neste vídeo, a estabilização observada próximo aos 30 minutos do vídeo 1 começa a ocorrer aos 80
minutos do vídeo 2. Isso ocorre pois no vídeo 2 há um fluxo muito menor de pessoas (comparado ao

(a) (b) (c) (d)

Figura 5.11: Situações desafiadoras no vídeo 2: (a) e (b) - pessoas passando fora do campo de visão da
câmera. (c) e (d) - pessoas portando objetos muito grandes.
5.5. EXPERIMENTOS E ANÁLISE DOS RESULTADOS 81

vídeo 1), o que faz com que o erro de arredondamento seja minimizado somente após um intervalo
de tempo maior.

A forma das pessoas vistas de cima também influenciou pouco no resultado final.

5.5.3 Vídeo 3

Neste vídeo, 64% das pessoas que passaram pela cena foram classificadas como pessoas com aces-
sórios pequenos; e 34%, como pessoas comuns. A Figura 5.12 apresenta alguns dos quadros desse
vídeo.

Figura 5.12: Quadros do vídeo 3.

A tabela 5.7 resume os dados da contagem obtidos do processamento do vídeo 3 para as configu-
rações estabelecidas.
Tabela 5.7: Resultados obtidos no vídeo 3.

Pessoas Entrando Pessoas Saindo


Protótipo 40 40
Gabarito 44 41
Acurácia 90,91% 97,56%

Na primeira hora da cena registrada no vídeo 3, houve grande influência da luz externa. Com isso,
em grande parte do vídeo foi possível verificar sombras e reflexos. Além disso, como o vídeo foi
gravado no mesmo local do vídeo 2, a maior parte das pessoas que passaram pela cena portavam
acessórios e várias delas e, também, várias pessoas passaram numa região em que a câmera não
as capturava inteiramente. Os vários erros cometidos ao longo da contagem estão ligados a esses
fatores. No entanto, como foi previsto na Seção 1.1 ( Caracterização do Problema de Pesquisa),
situações em que há reflexos e pessoas que não aparecem inteiramente na cena não compreendem
situações que devem ser cobertas pelo método desenvolvido. As fortes variações na iluminação,
5.6. CONSIDERAÇÕES FINAIS 82

contudo, não produziram erro na contagem, mostrando a eficácia do método criado para se adaptar
a tais situações.

Assim como no vídeo 2, foi registrada uma taxa baixa de pessoas que passaram pela cena no vídeo
3. Assim, a estabilidade na taxa de acerto observada nos outros vídeos pode não ter sido alcançada
até o fim deste vídeo.

5.6 Considerações Finais

O método desenvolvido se mostrou eficiente e robusto, atingindo uma taxa média de 94,10% de
acerto. Situações desafiadoras, como pessoas com acessórios, casais, variações na iluminação, forma-
ção de sombras e incorporação de objetos à cena são toleradas com sucesso no sistema desenvolvido,
possibilitando que seu uso seja feito nos mais diversos locais em que tais situações ocorrem, tais
como: estabelecimentos e centros comerciais diversos; universidades e escolas; órgãos governamen-
tais; prédios residenciais e comerciais; etc. Uma grande vantagem do método proposto é que ele
não impõe restrição de fluxo, como faixas, cancelas e catracas, e realiza a contagem sem que haja

Evolução da taxa de acerto


100,00%!

90,00%!

80,00%!

70,00%!
Taxa de acerto!

60,00%!

50,00%!

40,00%!

30,00%!

20,00%!

10,00%!

0,00%!
0! 20! 40! 60! 80! 100! 120! 140!
Tempo (min)!

Figura 5.13: Resultado do vídeo 3.


5.6. CONSIDERAÇÕES FINAIS 83

problemas de oclusão entre as pessoas, uma vez que as imagens são obtidas da vista em planta da
cena.
6 | Conclusões e Trabalhos Futuros

Neste trabalho, foi desenvolvida uma metodologia capaz de contar pessoas em uma cena que se
deslocam em uma direção predominante, como indicado na Seção 1.1. Dois protótipos foram criados
com a metodologia proposta, ambos possuindo o mesmo código que realiza o processo de contar
pessoas: (i) o primeiro, desenvolvido para operar em dispositivos móveis, tais como smartphones,
capaz de realizar a contagem em tempo real, utilizando uma câmera integrada para realizar a
captura; e (ii) o segundo, capaz de ser executado em estações de trabalho com sequências de vídeo.
A metodologia proposta obteve uma taxa média de acerto de 94,10%, demonstrando robustez a
variações no plano de fundo da cena e na iluminação; a sombras; e a eventuais acessórios portados
pelas pessoas, atingindo os objetivos e resultados esperados.

Estimar o fluxo de pessoas que passam por um local de interesse constitui uma tarefa de grande
relevância para diversos processos decisórios. A utilização de dispositivos móveis com capacidade
de capturar imagens, munidos de poder computacional e que oferecem capacidade de comunicação
representa a tendência atual. Esses dispositivos podem apresentar baixo custo oferecem várias
facilidades na instalação, sobretudo devido a seu tamanho reduzido.

Comparada a outras propostas da literatura, a metodologia deste trabalho se revela como uma
atraente alternativa, visto que é capaz de ser executada em equipamentos de baixo custo e grande
facilidade de instalação, não necessitando restringir as áreas por onde as pessoas passam.

6.1 Trabalhos Futuros

Finalizado este trabalho, espera-se que futuramente sejam desenvolvidas mais funcionalidades, tais
como:

• Elaboração de técnica para rastreamento de pessoas, considerando novos dispositivos de cap-


tura e processamento de imagem.

• Evolução da técnica de segmentação utilizada, facilitando a separação dos objetos não relaci-
onados com o plano de fundo.

84
6.1. TRABALHOS FUTUROS 85

• Criação de novos módulos que permitirão o aumento da precisão e exatidão do sistema.

• Utilização de técnicas e dispositivos de visão estéreo, para criar uma estrutura 3D da cena,
aumentando a precisão de contagem e detecção.

• Ampliação da aplicação do sistema, para que ele possa ser utilizado, por exemplo, em ônibus
e nas ruas.

• Implementar rotinas responsáveis pela geração de gráficos e relatórios exibindo os resultados


de contagem de pessoas por longos períodos de tempo em áreas de interesse.
7 | Referências Bibliográficas

B. Antic, D. Letic, D. Culibrk, e V. Crnojevic. K-means based segmentation for real-time zenithal
people counting. ICIP, 2009 16th IEEE International Conference on Image Processing, pages
2565–2568, 11 2009.

D. Beymer e K. Konolige. Real-Time Tracking of Multiple People Using Stereo. In IEEE Frame
Rate Workshop, 1999.

V. Bhuvaneshwar e P. B. Mirchandani. Real-Time Detection of Crossing Pedestrians for Traffic-


Adaptive Signal Control. In IEEE Intelligent Transportation Systems, 2004.

Rusi Antonov Filipov, Flávio Luis Cardeal Pádua, e Marco Aurélio Buono Carone. Pylon grid: A
fast method for human head detection in range images. Neurocomputing, (0):–, 2012. ISSN
0925-2312. doi: 10.1016/j.neucom.2011.12.040.

David Forsyth. Computer vision: a modern approach. Prentice Hall, Upper Saddle River, N.J.
London, 2003. ISBN 0130851981.

R. C. Gonzalez e R. E. Woods. Digital Image Processing. Prentice Hall, third edition, 2008.

Daniel Grest, Jan michael Frahm, e Reinhard Koch. A color similarity measure for robust shadow
removal in real time. In In Vision, Modeling and Visualization, pages 253–260, 2003.

I. Haritaoglu, D. Harwood, e L. Davis. Ghost: A Human Body Part Labeling System Using Silhou-
ettes. In International Conference on Pattern Recognition, pages 77–82, 1998.

HCManual. Pedestrian Concepts, Chapter 11 of the North-American Highway Capacity Manual.


Transportation Research Board - National Research Council, 2000.

Ya-Li Hou e Grantham K. H. Pang. People Counting and Human Detection in a Challenging
Situation. IEEE Transactions on Systems, Man, and Cybernetics - Part A: Systems and Humans,
41(1):24–33, 1 2011.

IBGE. Dados amostrais e estimativas populacionais das medianas de altura e peso, por si-
tuação do domicílio e sexo, segundo a idade e os grupos de idade. Brasil - período 2008-

86
87

2009. http://www.ibge.gov.br/home/estatistica/populacao/condicaodevida/pof/
2008_2009_encaa/tabelas_pdf/tab1_1.pdf, 2008. [Online; Acesado em maio de 2012].

Julio Cezar Silveira Jacques, Cláudio Rosito Jung, e Soraia Raupp Musse. Background subtraction
and shadow detection in grayscale video sequences. In SIBGRAPI, pages 189–196. IEEE Computer
Society, 2005. URL http://dblp.uni-trier.de/db/conf/sibgrapi/sibgrapi2005.html#
JacquesJM05.

Y. Jeon e P. Rybski. Analysis of a Spatio-Temporal Clustering Algorithm for Counting People in


a Meeting. Technical Report CMU-RI-TR-06-04, Robotics Institute, Carnegie Mellon University,
USA, 2006.

V. Kettnaker e R. Zabih. Counting People From Multiple Cameras. In International Conference on


Multimidia computing and Systems, pages 267–271, 1999.

J. W. Kim, K. S. Choi, B. D. Choi, e S. J. Ko. Real-Time Vision-based People Counting System for
the Security Door. Technical report, Korea Unversity, Seoul, Korea, 2002.

D. Kong, D. Gray, e H. Tao. Counting Pedestrians in Crowds Using Viewpoint Invariant Training.
In British Machine Vision conference, 2005.

W. Lu e Y. Tan. A Color Histogram Based People Tracking System. In IEEE International Symposium
on Circuits and Systems, pages 137–140, 2001.

O. Masoud e N. P. Papanikolopoulos. A Novel Method for Tracking and Counting Pedestrian in


Real-time Using a Single Camera. IEEE Transactions on Vehicular Technology, 50(5):1267–1278,
2001.

F. L. C. Pádua. Real-time Pedestrian Counting Based on Computer Vision. Master’s thesis, De-
partamento de Ciência da Computação (DCC) da Univerdade Federal de Minas Gerais (UFMG),
Belo Horizonte, MG, Brasil, 2002.

F. L. C. Pádua, M. F. M. Campos, e R. L. Carceroni. Real-Time Pedestrian Counting Based on


Computer Vision. In Brazilian Symposium on Intelligent Automation, pages 88–95, 2003.

A. J. Schofield, T. J. Stonham, e P. A. Mehta. Automated People Counting to Aid Lift Control.


Automation in Construction, 6(5):437–445, 1997.

N. Siebel. Design and Implementation of People Tracking Algorithms for Visual Surveillance Appli-
cations. PhD thesis, Department of Computer Science, The University of Reading, Reading, UK,
2003.
88

L. S. Silva. Sistema Computacional para Contagem Automática de Pessoas Baseado em Análise de


Sequências de Imagens. Master’s thesis, Programa de Mestrado em Modelagem Matemática e
Computacional do Centro Federal de Educação Tecnológica de Minas Gerais (CEFET-MG), Belo
Horizonte, MG, Brasil, 2009.

L. S. Silva, F. L. C. Pádua, e M. A. B. Carone. Estimação Automática de Fluxos de Pessoas Baseada


em Análise de Sequência de Imagens. In IX Simpósio Brasileiro de Automação Inteligente, 2009.

T. Teixeira e A. Savvides. Lightweight People Counting and Localizing in Indoor Spaces Using
Camera Sensor Nodes. In ACM/IEEE International Conference on Distributed Smart Cameras,
pages 36–43, 2007.

Tim van Oosterhout, Sander Bakkes, e Ben J. A. Kröse. Head detection in stereo data for people
counting and segmentation. In Leonid Mestetskiy e José Braz, editors, VISAPP, pages 620–
625. SciTePress, 2011. ISBN 978-989-8425-47-8. URL http://dblp.uni-trier.de/db/conf/
visapp/visapp2011.html#OosterhoutBK11.

Chengbin Zeng e Huadong Ma. Robust Head-Shoulder Detection by PCA-Based Multilevel HOG-
LBP Detector for People Counting. ICPR, 2010 20th International Conference on Image Proces-
sing, pages 2069 – 2072, 8 2010.

H. Zhao e R. Shibasaki. A Novel System for Tracking Pedestrians Using Multiple Single-row Laser
Range Scanners. IEEE Transactions on Systems, Man and Cybernetics, 35(2):283–291, 2005.
A | Especificação de requisitos

89
ESPECIFICAÇÃO
E ANÁLISE DE
REQUISITOS
CEFET-MG/PIIM-LAB

ABRIL/2012
página 2

1 Introdução
Este documento tem como objetivo listar os requisitos do sistema de contagem de pessoas
desenvolvido pelo Laboratório de Pesquisas Interdisciplinares em Informação Multimídica (Piim-Lab) do
CEFET-MG em parceria com a empresa J2M, que o utilizará comercialmente. O conteúdo deste
documento pretende estabelecer um melhor alinhamento das expectativas com a proposta de
desenvolvimento. Ao longo do tempo de desenvolvimento, havendo a percepção de requisitos a
serem adicionados, removidos ou alterados, o presente documento poderá sofrer alterações, desde
que haja conformidade entre as partes envolvidas quanto às consequências inerentes à mudança,
como o aumento do tempo de desenvolvimento ou do custo total do sistema final, entre diversas
outras possibilidades.

Esse sistema deve realizar a contagem automática de pessoas que passam pela porta de um
estabelecimento em tempo real, baseado em técnicas de processamento e análise de imagens,
obtidas por câmeras de vídeo. O sistema também deve ser capaz de criar uma espécie de mapa de
calor do estabelecimento, caso essas câmeras cubram a imagem de seu interior. Nesse mapa, regiões
representadas como mais quentes sofreram, em um determinado período de tempo, maior visita de
pessoas. Especificamente, o sistema projetado deve ser concebido para operar de forma distribuída e
embarcada em dispositivos móveis, tais como smartphones, configurando ao sistema características
inovadoras que potencializam sua aplicação em diversos cenários.

Cada dispositivo é responsável por monitorar o campo de visão por ele coberto, aplicando algoritmos
de Visão Computacional para detectar e contar objetos móveis que representem eventualmente
pessoas. As informações estimadas pelo sistema, por sua vez, são enviadas via rede para um servidor
central, o qual se responsabiliza pela geração de relatórios estratégicos e cálculos de indicadores.

Dessa forma o sistema completo pode ser dividido basicamente em dois subsistemas:

O que é executado no dispositivo, podendo este ser um dispositivo que realiza contagens
(instalados nas portas dos estabelecimentos) ou que contribui para a construção do mapa de
calor dos estabelecimentos (espalhados por toda a área dos estabelecimentos).
O que é executado em um servidor, que armazena as informações de contagem, fornecendo
uma forma de visualizá-las além de possibilitar a configuração de cada dispositivo e a
verificação de seu estado.

1.1 Definições e abreviações


Cena de interesse: área coberta pela câmera de um dispositivo.

Pessoa (na cena de interesse): qualquer objeto na cena de interesse que possua as dimensões médias
de um ser humano adulto.

Mapa de calor: Planta do estabelecimento contendo regiões coloridas que representam áreas
quentes e áreas frias. No caso, regiões representadas como mais quentes sofreram, em um
página 3

determinado período de tempo, maior visita de pessoas.

Aplicativo: programa capaz de processar dados e executar determinada tarefa.

Dispositivo móvel elegível: equipamento que possui câmera, capacidade de executar aplicativos,
poder de processamento gráfico e capacidade de se comunicar à internet via Wi-Fi.

Smartphone: Dispositivo móvel elegível que possui funções de telefone.

Servidor: equipamento ou conjunto de equipamentos que possui uma porção do aplicativo em


execução. É capaz de concentrar os dados processados pelos dispositivos móveis elegíveis e de
fornecer um portal para interface com os usuários.

Sistema: Conjunto de elementos que contribuem para o funcionamento da solução, incluindo os


aplicativos desenvolvidos, dispositivos móveis elegíveis e seus respectivos acessórios utilizados e o
servidor.

Aplicativo de contagem: aplicativo que realiza a contagem de pessoas em uma determinada cena
de interesse.

Aplicativo sensor de calor: aplicativo que processa dados para a construção do mapa de calor em
uma determinada cena de interesse.

Dispositivo de contagem: Dispositivo móvel elegível que possui o aplicativo de contagem


devidamente instalado.

Dispositivo sensor de calor: Dispositivo móvel elegível que possui o aplicativo sensor de calor
devidamente instalado.

Sistema de contagem: conjunto composto por todos os dispositivos de contagem e pelo aplicativo
presente no servidor para fazer interface com os usuários.

Sistema sensor de calor: conjunto composto por todos os dispositivos sensores de calor e pelo
aplicativo presente no servidor para fazer interface com os usuários.

Infraestrutura de rede: Conjunto de elementos que fornecem acesso à Internet através de conexão Wi-
Fi.

1.2 Premissas básicas do desenvolvimento


Visando a uma definição consistente dos requisitos do sistema e da arquitetura sugerida para
funcionamento, algumas premissas básicas foram adotas:

Os dispositivos serão afixados no teto em ângulo ortogonal ao chão, para se minimizar a


oclusão de pessoas na cena.

Poderão ser instalados vários dispositivos em um mesmo ambiente com o objetivo de (i)
preencher toda a área que compreende uma porta, no caso do dispositivo de contagem, e (ii)
preencher toda a área interior ao estabelecimento, no caso dos dispositivos sensores de calor.
página 4

Nestes casos, deverão ser utilizadas ferramentas que auxiliem na determinação dos
espaçamentos mais adequados, que permitam um melhor aproveitamento dos equipamentos,
tomando por base suas características e especificações técnicas. Pode ser necessária a
utilização de suportes, caixas ou estojos especiais, criação de furos nas paredes entre outros
detalhes para a instalação de cada dispositivo. Maiores detalhes da instalação deverão ser
estudados para cada cliente e fogem do escopo deste projeto.

Os dispositivos serão sempre instalados em ambientes internos.

Os locais onde os dispositivos serão instalados terão sempre iluminação adequada


(luminosidade controlada) para o funcionamento do sistema.

O sistema deste trabalho prevê que os serviços associados ao mesmo sejam acessíveis pela
Internet. Assume-se, portanto, que nos estabelecimentos onde os dispositivos forem instalados
haverá conexão Wi-Fi adequada ao funcionamento da solução, em termos de disponibilidade
e de largura de banda. Assume-se, também, que as configurações da rede Wi-Fi presente nos
estabelecimentos irão sempre atender aos requisitos dos dispositivos utilizados,
independentemente se a infraestrutura de rede do local será provida pelo estabelecimento ou
pelo fornecedor do sistema.

Os dispositivos poderão ser instaladas em locais onde o pé direito seja maior que 2m (dois
metros) e menor que 5m (cinco metros).

A superfície do solo da cena de interesse deve ser fosca, sem reflexos. A presença de
superfícies especulares na cena de interesse ou qualquer outra superfície lisa que apresente
reflexos das pessoas que passam reduzirão a exatidão dos dispositivos de contagem.

Na cena capturada pela câmera não deve haver outros objetos que se movam com
frequência, como vitrines, caixas, portas deslizantes ou de abertura “em L”, entre outros.
Objetos móveis com dimensões próximas às de um humano podem ser contados como
pessoas e reduzirão a exatidão do sistema.

O sistema deverá ser concebido para contar pessoas que se movem em velocidades normais
(próximas a 5km/h). Pessoas paradas ou correndo na cena de interesse podem não ser
contadas e reduzirão a exatidão do sistema.

1.3 Características gerais do sistema


Alguns pontos são necessários para apoiar o entendimento do funcionamento geral do sistema e
tornar os requisitos mais claros, tais como:

Para o sistema de contagem, o ato de contar deve ser realizado pelo dispositivo quando uma
pessoa cruzar verticalmente (ou em uma direção predominantemente vertical) a cena de
interesse.
O dispositivo deve ser capaz de registrar quantas pessoas entram e quantas pessoas saem do
estabelecimento em um determinado intervalo de tempo.
página 5

Não está no escopo do sistema identificar quais pessoas passam pela cena. Apenas a
informação de quantas pessoas passam será computada.
As duas extremidades verticais da cena capturada pelo dispositivo de contagem devem ser
bem conhecidas e identificadas no dispositivo de contagem como entrada ou saída do
estabelecimento.
O dispositivo de contagem deve ser utilizado somente nas portas do estabelecimento.
O sistema de mapa de calor deve ter seus dispositivos instalados somente no interior do
estabelecimento.
No caso dos dispositivos que cobrem o estabelecimento para realizar o que se chama de
mapa de calor, o sistema deve gerar, sobre a planta de um estabelecimento, um mapa de
calor que corresponde aos diversos trajetos dos clientes. A área se torna mais quente quanto
maior for o número de pessoas que por ali passam.
O sistema deve ter seus dispositivos operando (coletando dados) por tempo indeterminado.
Os detalhes de instalação dos dispositivos (suportes ideais, alimentação, sistema de ventilação
necessários) serão definidos de acordo com o estabelecimento e com as características
técnicas dos mesmos, como suas dimensões, temperatura máxima, alimentação, protocolo de
comunicação disponível, entre outros detalhes.

1.4 Visão geral do sistema

Figura 1 - Visão geral do sistema.


página 6

2 Elicitação de requisitos
2.1 Requisitos Funcionais
Os requisitos funcionais foram agrupados em dois grupos de requisitos: o primeiro, com requisitos
ligados aos dispositivos de contagem móveis e o segundo, com requisitos do portal/servidor.

1 Dispositivos de contagem e sensores de calor

Código Nome Detalhe


No caso de o dispositivo ser de contagem, devem ser providos os
seguintes requisitos:

Realização da contagem de pessoas baseada nas imagens


Dispositivo de capturadas;
1.1
contagem Emissão de relatório de contagem de um determinado período
para um servidor;
Criação de lógica para detectar problemas na iluminação (a
contagem de pessoas deve ser interrompida nesses casos).

No caso de o dispositivo ser do tipo sensor de calor, devem ser


providos os seguintes requisitos:
Dispositivo sensor de
Criação do mapa de calor da cena, baseado nas imagens
1.2 calor
capturadas;
Emissão de relatório de um determinado período para um servidor;
Criação de lógica para detectar problemas na iluminação (o
funcionamento do sensor deve ser interrompido nesses casos).

O dispositivo deve fornecer interface para ajuste dos parâmetros de


Ajuste de parâmetros
1.3 funcionamento, como altura do dispositivo, horário de funcionamento
no dispositivo
e brilho da tela.

O dispositivo deve permitir buscar parâmetros remotamente


Ajuste de parâmetros (localizados em um servidor) para ajuste dos parâmetros de
1.4
via WEB funcionamento, como altura do dispositivo, horário de funcionamento
e brilho da tela.

O dispositivo deve possibilitar o envio para um servidor das seguintes


informações:
Relatórios de
1.5 Seu estado atual;
funcionamento
Imagem atual da câmera;
Logs de erro.
página 7

Recepção de O dispositivo deve checar no servidor, em períodos configurados,


comandos pré- eventuais comandos que ele deverá executar, podendo ser scripts
1.6
determinados via shell ou comandos pré-determinados (como reiniciar o dispositivo, por
servidor exemplo).

2 Servidor/Portal de acompanhamento dos dispositivos

Código Nome Detalhe

Banco de dados de O servidor deve fornecer uma interface para envio dos relatórios de
2.1
contagem contagem para um banco de dados.

Deve haver uma tela para Cadastro, Exclusão e Alteração dos


campos das seguintes entidades:

- Dispositivos;
- Modelos de dispositivos;
- Estabelecimentos.

Nas páginas devem ser listados os campos dessas entidades.


Dispositivos são unicamente identificados através de seu número de
Gerenciamento de série. O modelo de um dispositivo nunca pode ser excluído até que
2.2 todos os dispositivos cadastrados como tal sejam também excluídos.
entidades
Um estabelecimento nunca pode ser excluído até que todos os
dispositivos cadastrados como pertencentes a tal sejam também
excluídos.

Apenas exclusões lógicas são permitidas através do portal. Os


registros das entidades nunca podem ser excluídos fisicamente do
banco. Em cada registro deve haver um campo contendo a data de
cadastro e a data de exclusão, ainda que este último campo fique
vazio na maior parte dos registros.

Recepção de logs dos O servidor deve permitir receber logs dos dispositivos, quando estes
2.3
dispositivos enviarem.

Mudança de
O sistema deve permitir realizar, quando necessário, ações sobre
2.4 parâmetros do
determinado dispositivo: reiniciar, atualização direcionada, script shell.
dispositivo
página 8

Deve ser disponibilizada uma página no portal para cada


estabelecimento, fornecendo as seguintes informações:

Contagens gravadas no banco de dados por período


Página do especificado;
2.5 Quantidade de pessoas na loja naquele momento;
estabelecimento
Mapa do estabelecimento mostrando o posicionamento dos
dispositivos instalados;
Mapa de calor do estabelecimento, no caso de o
estabelecimento possuir o sistema que constrói o mapa de calor.

Deve ser disponibilizada uma página para cada dispositivo de


contagem, contendo:

O estado atual do dispositivo (no caso, exibe-se a última vez que


foi feito contato ou que o dispositivo reportou dados de
2.6 Página do dispositivo contagem). Pode ser requisitada uma atualização do estado, o
que vai fazer com que o dispositivo responda depois de algum
tempo qual é seu estado;
Interface para realizar mudanças no dispositivo;
Logs do dispositivo.

Listagem de dispositivos
2.7 O portal deve possibilitar listar os dispositivos por estabelecimento.
por estabelecimento

Localização de
2.8 dispositivos por número O portal deve permitir a listagem de dispositivos por número de série.
de série

O portal deve apresentar notificações em sua página inicial,


informando:

2.9 Notificações Quantos (e quais) dispositivos estão há mais de um determinado


período sem reportar contagens;
Quantos (e quais) dispositivos estão desatualizados;
Quantos (e quais) dispositivos reportaram logs de erro.
página 9

2.2 Requisitos Não Funcionais


No que se refere à parte do sistema que opera nos dispositivos, os seguintes requisitos não funcionais
devem ser atendidos:

Código Nome Detalhe

Relançamento O aplicativo deve ser reiniciado automaticamente após um


1
automático período de tempo, caso seja fechado por qualquer motivo.

Comunicação Deve ser feito armazenamento local de pacotes, caso não haja
2
confiável conexão com a internet disponível, para posterior envio.

3 Prioridade dos Requisitos Funcionais


Seguem abaixo as prioridades de implementação de cada requisito, onde 1 e 5 denotam,
respectivamente, o maior nível de prioridade e o menor nível de prioridade.

Código Nome Prioridade


1.1 Dispositivo de contagem 1"
1.2 Dispositivo sensor de calor 5"
1.3 Ajuste de parâmetros no dispositivo 2"
1.4 Ajuste de parâmetros via WEB 2"
1.5 Relatórios de funcionamento 3"
1.6 Recepção de comandos pré-determinados via servidor 3"
2.1 Banco de dados de contagem 1"
2.2 Gerenciamento de entidades 5"
2.3 Recepção de logs dos nós 3"
2.4 Mudança de parâmetros do dispositivo 3"
2.5 Página do estabelecimento 4"
2.6 Página do dispositivo 4"
2.7 Listagem de dispositivos por estabelecimento 5"
2.8 Localização de dispositivos por número de série 5"
2.9 Notificações 5"
página 10

4 Riscos e planos de mitigação


Código Risco Identificação Mitigação

Dispositivo incapaz de Procurar na bibliografia algoritmos


Taxa de quadros baixa e com operações menos complexas
1 processar todas as
dispositivo esquentando demais e buscar formas de otimizar o
imagens da cena
código
Ruídos causados pela Criar filtros para que sejam
Dispositivo reportando contagens
iluminação baixa ou detectados ruídos e situações em
quando não há pessoas no
2 pela falta de que não há iluminação,
ambiente ou quando não há
iluminação trazem desabilitando a contagem nesses
iluminação
contagens incorretas casos
Criar mecanismos para que o
Relatórios sendo sempre dispositivo consiga se reconectar à
Comunicação com a entregues com atraso ou rede Wi-Fi de tempos em tempos e
3
internet muito falha dispositivos desconectados (sem armazenar localmente os relatórios
comunicação com o servidor) que não forem entregues para que
sejam enviados posteriormente
Considerar o uso de outras
Impossibilidade de plataformas móveis. Para tanto, o
fazer o dispositivo Dispositivos desconectados com código do sistema deve ser
4 minimamente dependente da
funcionar de forma frequência
ininterrupta plataforma, possibilitando portar o
código pra dispositivos com outros
sistemas operacionais
página 11

5 Esboço da interface
Para demonstrar o comportamento do sistema, foram criadas imagens que ilustram as principais telas
que irão compor a interface.

Figura 2 - Requisito 2.9, Notificações


página 12

Figura 3 - Busca de estabelecimento

Figura 4 - Página do estabelecimento, requisito 2.5.


página 13

Figura 5 - Relatórios do estabelecimento.

Figura 6 - Mapa do estabelecimento.


página 14

Figura 7 - Busca de dispositivos por número de série, requisito 2.8.

Figura 8 - Página do dispositivo, requisito 2.6.


página 15

Figura 9 - Página de ações com o dispositivo.

Figura 10 - Logs do dispositivo.


página 16

Figura 11 - Gerenciamento de entidades.

Figura 12 - Tela principal do programa que roda nos dispositivos.


página 17

Figura 13 - Tela de configurações do dispositivo.

As telas apresentadas aqui refletem apenas em um esboço do que foi definido como requisitos. O
sistema real poderá trazer mudanças na organização dos itens presentes nas telas.
B | Determinação do Conjunto Ótimo
de Parâmetros do Sistema

Assim como foi discutido no Capítulo 4, há um determinado número de parâmetros que devem
ser definidos para o funcionamento do sistema. Como discutido na Seção 5.3.1, a mudança desses
parâmetros influenciam diretamente a contagem de pessoas, fazendo com que mais ou menos pessoas
sejam contabilizadas. Os parâmetros que foram citados no Capítulo 4 foram resumidas abaixo, na
tabela B.1:

Na Seção 5.3.1 também foi discutido como os parâmetros Tamanho da Matriz do NCC, Limiar NCC;
Tamanho da Janela do Algoritmo de Similaridade; Limiar de Similaridade; e Fator de Adaptação
foram determinados, assim como os das dimensões humanas.

Os valores dos parâmetros das etapas de segmentação e contagem, no entanto, foram muito mais
subjetivos de serem determinados que os demais e necessitaram de um estudo mais aprofundado
para tanto: a realização de experimentos controlados. Como descrito na Seção 5.3.2, os vídeos
utilizados nos experimentos controlados foram gravados e seus gabaritos criados conforme indicado
na Seção 5.4.

B.1 Análise dos parâmetros

B.1.1 Limiar de Segmentação

O parâmetro Limiar de Segmentação, como definido na Seção 4.2.3, deve ser definido numa faixa
de valores que varia entre 0 e 1, uma vez que este é o domínio dos elementos da matriz B, também
definida naquela Seção. Para determinar os valores elegíveis para este parâmetro, foram analisados os
valores produzidos pelo sistema à medida que as pessoas passavam nas imagens dos vídeos gravados.

Suponha o gráfico da Figura B.1, em que o eixo das abcissas representa o índice do pixel e, o das
ordenadas, o valor da não-similaridade do pixel com o plano de fundo. Considerando o sinal tratado,

107
B.1. ANÁLISE DOS PARÂMETROS 108

Tabela B.1: Parâmetros citados ao longo da metodologia proposta.

Etapa do algoritmo Parâmetros necessários


Subtração de Imagens Tamanho da Janela do NCC; Limiar NCC; Tamanho da Janela do Algo-
ritmo de Similaridade; Limiar de Similaridade; Fator de Adaptação
Segmentação Limiar de segmentação
Contagem Fator de detecção mínima de uma pessoa

o limiar de segmentação deve ser escolhido de modo que os pulsos tratados tenham valores próximos
ao valor em pixel da largura dos ombros humanos, caso representem, de fato, pessoas passando na
cena.

Assim, para determinar os valores elegíveis do limiar de segmentação, à medida que as pessoas
passavam nos vídeos de teste, identificaram-se os valores típicos que produziam boas imagens seg-
mentadas. Os valores que produziram bons resultados variavam em torno de 0, 31 e 0, 47.

Utilizar um valor muito baixo para esse parâmetro fará com que ruídos possam vir a ser contabilizados
como pessoas, ao passo que um valor muito alto poderá fazer com que algumas pessoas deixem de
ser contabilizadas.

Figura B.1: Sinal ao fim do passo 2 do algoritmo de segmentação.


B.1. ANÁLISE DOS PARÂMETROS 109

B.1.2 Fator de Detecção Mínima de uma Pessoa

O fator de detecção mínima de uma pessoa determina qual o valor mínimo da largura entre os
ombros de um humano será considerado no sistema. Em outras palavras, este valor, multiplicado
pelo valor médio da largura entre os ombros de um humano fornece qual tamanho mínimo do pulso
obtido da etapa de segmentação será considerado o de um provável humano.

De forma similar ao limiar de segmentação, utilizar um valor muito baixo para esse parâmetro fará
com que pequenos objetos ou ruídos possam vir a ser contabilizados como pessoas, ao passo que
um valor muito alto fará com que pessoas comuns possam deixar de ser contabilizadas.

Através de testes feitos empiricamente, concluiu-se que os valores típicos de largura entre ombros
pequenos estavam entre 70% e 80% do valor médio estabelecido.

B.1.3 Configurações Elegíveis

Foram definidas 6 configurações elegíveis para os parâmetros do sistema, baseando-se nos limites
observados e na análise feita para cada um, conforme resumido na Tabela B.2.

Tabela B.2: Parâmetros utilizado para cada confiuração.

Configuração Fator mínimo de detecção Limiar de segmentação


Configuração 1 70% 0,39
Configuração 2 70% 0,47
Configuração 3 70% 0,31
Configuração 4 80% 0,39
Configuração 5 80% 0,47
Configuração 6 80% 0,31

Dessa forma, cada vídeo foi executado pelo sistema utilizando cada configuração estabelecida e, em
seguida, seus resultados foram confrontados com aqueles obtidos pelo gabarito de contagem. Os
valores de entrada e saída obtidos pelo gabarito de contagem para cada vídeo estão resumidos na
Tabela B.3.
B.2. ANÁLISE DAS CONFIGURAÇÕES 110

Tabela B.3: Valores de contagem obtidos com o gabarito.

Vídeo Contagem da Entrada Contagem da Saída


Vídeo 1 457 252
Vídeo 2 81 48
Vídeo 3 44 41

B.2 Análise das Configurações

Para cada vídeo, foram confrontados os valores reportados pelo sistema desenvolvido com aqueles
obtidos pelo gabarito, tanto para os eventos de entrada de pessoas, quanto para os de saída de
pessoas, obtendo a acurácia para cada tipo de evento. Além disso, obteve-se a acurácia geral
ponderada por configuração e por vídeo, considerando-se as devidas proporções de entrada e saída
de pessoas obtidas pelo gabarito em cada vídeo, como resume a Tabela B.4

Tabela B.4: Proporção do número de pessoas que entraram e saíram sobre o total de pessoas contadas em
cada vídeo.

Vídeo Proporção da Entrada Proporção da Saída


Vídeo 1 64,46% 35,54%
Vídeo 2 62,79% 37,21%
Vídeo 3 51,76% 48,24%

B.2.1 Vídeo 1

Para o vídeo 1, os valores obtidos foram resumidos na Tabela B.5.

Tabela B.5: Contagem realizada pelo sistema com o vídeo 1.

Configuração Contagem da Entrada Contagem da Saída


Configuração 1 407 245
Configuração 2 378 234
Configuração 3 472 276
Configuração 4 382 238
Configuração 5 366 228
Configuração 6 427 263

Assim, os valores de acurácia para o vídeo 1 são mostrados na Tabela B.6


B.2. ANÁLISE DAS CONFIGURAÇÕES 111

Tabela B.6: Valores de acurácia obtidos com o vídeo 1.

Configuração Acurácia da Entrada Acurácia da Saída Acurácia geral


Configuração 1 89,06% 97,22% 91,96%
Configuração 2 82,71% 92,86% 86,32%
Configuração 3 96,72% 90,48% 94,50%
Configuração 4 83,59% 94,44% 87,45%
Configuração 5 80,09% 90,48% 83,78%
Configuração 6 93,44% 95,63% 94,22%

Dessa forma, para o vídeo 1, a melhor configuração obtida foi a 3, com uma taxa de acurácia
(ponderada de acordo com a representatividade do número de pessoas que saíram e entraram) de
94,50%.

B.2.2 Vídeo 2

Os valores obtidos para o vídeo 2 foram resumidos na Tabela B.7.

Tabela B.7: Contagem realizada pelo sistema com o vídeo 2.

Configuração Contagem da Entrada Contagem da Saída


Configuração 1 66 78
Configuração 2 60 72
Configuração 3 80 97
Configuração 4 63 82
Configuração 5 64 75
Configuração 6 72 92

Assim, os valores de acurácia para o vídeo 2 são mostrados na Tabela B.8

Tabela B.8: Valores de acurácia obtidos com o vídeo 2.

Configuração Acurácia da Entrada Acurácia da Saída Acurácia geral


Configuração 1 81,48% 96,30% 86,99%
Configuração 2 74,07% 88,89% 79,59%
Configuração 3 98,77% 80,25% 91,87%
Configuração 4 77,78% 98,77% 85,59%
Configuração 5 79,01% 92,59% 84,07%
Configuração 6 88,89% 86,42% 87,97%
B.2. ANÁLISE DAS CONFIGURAÇÕES 112

Dessa forma, para o vídeo 2, a melhor configuração obtida também foi a 3, com uma taxa de acurácia
(ponderada de acordo com a representatividade do número de pessoas que saíram e entraram) de
91,87%.

B.2.3 Vídeo 3

Os valores obtidos para o vídeo 3 foram resumidos na Tabela B.9.

Tabela B.9: Contagem realizada pelo sistema com o vídeo 3.

Configuração Contagem da Entrada Contagem da Saída


Configuração 1 33 34
Configuração 2 30 26
Configuração 3 40 40
Configuração 4 30 31
Configuração 5 22 25
Configuração 6 36 42

Assim, os valores de acurácia para o vídeo 3 são mostrados na Tabela B.10

Tabela B.10: Valores de acurácia obtidos com o vídeo 3.

Configuração Acurácia da Entrada Acurácia da Saída Acurácia geral


Configuração 1 75,00% 82,93% 78,82%
Configuração 2 68,18% 63,41% 65,88%
Configuração 3 90,91% 97,56% 94,12%
Configuração 4 68,18% 75,61% 71,76%
Configuração 5 50,00% 60,98% 55,29%
Configuração 6 81,82% 97,56% 89,41%

Dessa forma, também para o vídeo 3, a melhor configuração obtida foi a 3, com uma taxa de acurácia
(ponderada de acordo com a representatividade do número de pessoas que saíram e entraram) de
94,12%.

B.2.4 Resultado da Análise

Considerando que cada vídeo possui uma quantidade diferente de eventos de contagem (tanto de
entrada, quanto de saída), para se determinar a acurácia geral do sistema, obteve-se a represen-
B.2. ANÁLISE DAS CONFIGURAÇÕES 113

tatividade de cada conjunto de amostras dos vídeos sobre o total de amostras, como aponta a
Tabela B.11.
Tabela B.11: Representatividade do número de pessoas que passaram no vídeo sobre o total.

Vídeo Representatividade sobre Total


Vídeo 1 76,81%
Vídeo 2 13,98%
Vídeo 3 9,21%

Finalmente, considerando a distribuição de pessoas para cada vídeo, obteve-se a acurácia média
geral (ponderada) obtida por configuração, como mostra a Tabela B.12.

Tabela B.12: Acurácia média geral obtida por configuração.

Configuração Acurácia geral


Configuração 1 90,06%
Configuração 2 83,50%
Configuração 3 94,10%
Configuração 4 85,74%
Configuração 5 81,20%
Configuração 6 92,90%

Acurácia Geral por Configuração


100%!

95%!
Configuração 3!
Configuração 6!
Acurácia Geral

90%! Configuração 1!
Fator em 70%!

Fator em 80%!
Configuração 4!
85%!

Configuração 2!

Configuração 5!
80%!
0,25! 0,3! 0,35! 0,4! 0,45! 0,5! 0,55! 0,6!
Limiar de segmentação

Figura B.2: Gráfico da acurácia geral obtida por configuração.


B.3. CONSIDERAÇÕES FINAIS 114

O gráfico da Figura B.2 mostra os valores de acurácia obtidos por configuração, detalhando os
valores fixados para o Fator de Detecção Mínima de uma Pessoa e para o Limiar de Segmentação.

B.3 Considerações Finais

Concluiu-se, portanto, que para o conjunto de parâmetros elegíveis (configurações) escolhidos, o


que reproduziu melhores resultados, atingindo 94,10% de acurácia, foi o conjunto 3, em que o
Fator de Detecção Mínima de uma Pessoa vale 70% e o Limiar de Segmentação vale 0, 31.
C | Manual de utilização do disposi-
tivo

115
People Counter
Versão para dispositivos Android

Plataforma Móvel para Análise e


Dimensionamento de Fluxos de
Pessoas em Tempo Real

Manual de Instalação
Pré-Requisitos para Instalação
!  Dispositivo
Galaxy S WiFi 5.0 com o
Firmware 2.3.5.
A versão atual do Firmware do dispositivo pode ser
verificada através do aplicativo Configurações, no
menu Sobre o Dispositivo > Versão de firmware.

!  RedeWiFi com acesso ao site:


PeopleCounter.PredictBr.com.br

2
Passos da Instalação
Configurando a rede WiFi

1.  Configure a rede sem fio no dispositivo:


Possível a partir de Config. > Conexões sem fio e rede
> Configurações Wi-Fi.
2.  Desmarque a opção Notificação de Rede.
3.  Caso seja necessário configurar um
endereço de IP estático, clique em

- Em seguida, clique
em Avançado

- Configure o IP

3
Passos da Instalação
Configurando a fonte de instalação

4.  No menu Config. > Aplicações, marcar a


opção Fontes Desconhecidas.

4
Passos da Instalação
Carregando e instalando o aplicativo (1)

5.  Abrir o navegador e entrar no seguinte


endereço:
PeopleCounter.PredictBr.com.br

6.  Clicar em Instalar Aplicação


Nesse momento, o aplicativo será descarregado do
servidor.

5
Passos da Instalação
Carregando e instalando o aplicativo (2)

7.  Para instalá-lo, basta abrir a Central do


Notificações (deslizando o dedo na parte
superior da tela) e clicar sobre o arquivo
descarregado.

8.  Na tela seguinte, clicar em Instalar.

9.  Em seguida, concluída a instalação,


clicar em Abrir.

6
Passos da Instalação
Instalando o dispositivo

10.  Fixe o dispositivo no topo da entrada do


estabelecimento, com a tela virada para
baixo, e com o carregador devidamente
conectado a uma tomada.
A câmera do dispositivo tem um campo de visão de
49º. Mantenha a região imaginária coberta por esse
ângulo sem obstruções.

Para maior segurança do dispositivo e para evitar que


pedestres que não entram na loja sejam contados, 49º
instale o dispositivo no lado interno da entrada,
sempre que possível.

7
Passos da Instalação
Configurando os parâmetros do aplicativo

11.  Para configurar os parâmetros do aplicativo, clicar no


botão e, no menu exibido, clicar em Configurações.
Certifique-se de que o dispositivo
está na orientação correta com
o uso da seta.

12.  Forneça a altura do dispositivo,


bem como os horários de início
e de término diário da operação.

13.  Anote o número de série para uso


posterior.

14.  Feche a tela apertando

Para obter auxílio no posicionamento do dispositivo, acesse a ferramenta


disponível em http://www.predictbr.com.br/PeopleCounter/CameraCalculator