ALISON AKIO PAULO MIAZAKI FILIPE MORGADO SIMÕES DE CAMPOS RAFAEL BARBOLO LOPES RAFAEL IVAN GARCIA ALEPH: SISTEMA DE MONITORAMENTO VISUAL DE PESSOAS

Tamanho: px
Começar a partir da página:

Download "ALISON AKIO PAULO MIAZAKI FILIPE MORGADO SIMÕES DE CAMPOS RAFAEL BARBOLO LOPES RAFAEL IVAN GARCIA ALEPH: SISTEMA DE MONITORAMENTO VISUAL DE PESSOAS"

Transcrição

1 ALISON AKIO PAULO MIAZAKI FILIPE MORGADO SIMÕES DE CAMPOS RAFAEL BARBOLO LOPES RAFAEL IVAN GARCIA ALEPH: SISTEMA DE MONITORAMENTO VISUAL DE PESSOAS São Paulo 2010

2 ALISON AKIO PAULO MIAZAKI FILIPE MORGADO SIMÕES DE CAMPOS RAFAEL BARBOLO LOPES RAFAEL IVAN GARCIA ALEPH: SISTEMA DE MONITORAMENTO VISUAL DE PESSOAS Trabalho apresentado à Escola Politécnica da Universidade de São Paulo para a Graduação em Engenharia de Computação. São Paulo 2010

3 ALISON AKIO PAULO MIAZAKI FILIPE MORGADO SIMÕES DE CAMPOS RAFAEL BARBOLO LOPES RAFAEL IVAN GARCIA ALEPH: SISTEMA DE MONITORAMENTO VISUAL DE PESSOAS Trabalho apresentado à Escola Politécnica da Universidade de São Paulo para a Graduação em Engenharia de Computação. Área de concentração: Engenharia da Computação Orientador: Profa. Anna Helena Reali Costa São Paulo 2010

4 FICHA CATALOGRÁFICA Miazaki, Alison Akio Paulo. ALEPH: sistema de monitoramento visual de pessoas / A. A. P. Miazaki, F. M. S. Campos, R. B. Lopes, R. I. Garcia. -- São Paulo, p. Trabalho de Conclusão de Curso Escola Politécnica da Universidade de São Paulo. Departamento de Engenharia de Computação e Sistemas Digitais. 1. Visão computacional. I. Campos, Filipe Morgado Simões II. Lopes, Rafael Barbolo III. Garcia, Rafael Ivan IV. Universidade de São Paulo. Escola Politécnica. Departamento de Engenharia de Computação e Sistemas Digitais. V. t.

5 DEDICATÓRIA Este projeto conclui cinco anos de trabalhos e estudos árduos dentro da Escola Politécnica. Mas esse esforço direcionado à nossa formação como Engenheiros não começou na faculdade; na verdade, vem desde muito antes. A forma como cada um de nós foi criado, as experiências vividas e trocadas com outras pessoas, os sucessos e fracassos nos planejamentos de nossas vidas, incluindo os imprevistos a que todos estamos sujeitos, tudo isso definiu as pessoas que somos. Por isso é justo dedicarmos este trabalho a todos que conviveram conosco, amigos, inimigos, desconhecidos, figurantes de nossas vidas, mas principalmente às nossas famílias. Sem aqueles que nos apoiaram desde o dia do nosso nascimento, incutindo valores e qualidades em nós, não estaríamos perto do que nos tornamos no final deste curso de Engenharia. Graças aos nossos provisores tivemos condições de estudos, que possibilitaram a entrada na Escola Politécnica. A discussão se prolongaria por muitas páginas se fossemos agradecer cada ponto em que nossas famílias nos ajudaram, então resumimos essa dissertação com um enfático muito obrigado, nós os amamos! Dedicamos este trabalho àqueles que estiveram conosco na nossa formação superior: os colegas e os professores. Aos colegas, que sentiram as mesmas alegrias, tristezas, pressões, e estresse, podemos dizer com orgulho: conseguimos! Desejamos a todos sucesso em suas carreiras profissionais e pessoais, e que possamos compartilhar muito mais alegrias juntos, sem deixarmos de nos apoiar nos momentos ruins, como já temos feito por anos. Aos professores desejamos sucesso em suas pesquisas, mas lembramos que as aulas são tão importantes quanto elas. Agradecemos a estes pelo conhecimento que nos foi passado, além da experiência que cada um pôde compartilhar conosco. Também dedicamos este trabalho às nossas namoradas e noivas (até para não perdê-las), que sempre estiveram ao nosso lado, apoiaram-nos incondicionalmente e suportaram ter nos dividido com as responsabilidades trazidas pela Escola.

6 E, por fim, não podemos esquecer de mencionar nosso grupo, por estarmos unidos desde o primeiro ano de faculdade, em empreitadas vitoriosas ou não, mas unidos. Que assim possamos permanecer. Dedicamos este trabalho a todos, até àqueles que esquecemos. Agora seremos Engenheiros!

7 AGRADECIMENTOS Alguém que merece destaque no grupo dos professores é nossa orientadora professora Anna Helena Reali Costa, que aceitou nos orientar sem ao menos nos conhecer previamente, e que esteve disposta desde o primeiro dia a nos direcionar neste projeto. Agradecemos enormemente por ter nos acompanhado nesta jornada.

8 O que a eternidade é para o tempo, o Aleph é para o espaço. (Jorge Luis Borges)

9 RESUMO Um sistema de monitoramento é um sistema capaz de observar e interpretar acontecimentos. Esses acontecimentos podem ser capturados em vídeos, imagens, textos ou em qualquer meio de troca de informações. O uso de um sistema dessa natureza permite que ações sejam monitoradas, previsões sobre futuras ações sejam realizadas e decisões sejam tomadas com maior assertividade. O sistema de monitoramento visual proposto é focado em monitorar ações através de vídeos, sendo capaz de detectar e rastrear pessoas em ambientes. Ele funciona para ambientes fechados com pouca variação de luz, com uma câmera de vídeo estacionada, e com imagens em que corpos inteiros de pessoas aparecem. Como resultado do monitoramento, o sistema gera mapas de calor e é capaz de identificar e reproduzir rotas realizadas com maior frequência. Para construir este sistema, foram utilizadas tecnologias de visão computacional, que é uma ciência que estuda meios que possibilitam que máquinas possam enxergar. Através de técnicas e métodos dessa ciência, sistemas artificiais podem extrair informações de imagens capturadas por câmeras e traduzi-las para serem compreendidas por seres humanos ou utilizá-las em sistemas de controle. As principais técnicas de visão computacional utilizadas neste trabalho foram: modelagem e subtração de fundo, operações morfológicas, suavização de imagens, análises de histogramas e aplicações do filtro de partículas condensation. Serão apresentados resultados e discussões a respeito de melhorias e possibilidades de extensão e uso do projeto. Palavra-chaves: visão computacional, detecção, rastreamento, monitoramento

10 ABSTRACT A surveillance system is a system that is able to observe and interpret events. These events can be captured in videos, images, texts, or in any other way of representing information. This kind of system allows actions to be tracked and forecasted, and also makes the process of taking decisions more assertive. The proposed system is focused in monitoring actions captured in videos, being able to detect and track people inside environments. It works for videos of indoor environments with low light variation, recorded with a fixed camera and with full bodies of people appearing. The system generates heatmaps as output and is able to reproduce most frequent routes made by people. It was built on top of computer vision technology, which is a science that studies means of enabling machines to see. It is able to extract information from images and translate them into comprehensive data for humans or to be used in control systems. The most used computing vision techniques in this work are: background modeling and subtraction, morphological operations, image smoothing, histograms analysis and the usage of the condensation particle filter. Results and discussions about improvements and possibilities of extending this project will be presented. Key-words: computer vision, detection, tracking, surveillance

11 LISTA DE FIGURAS 2.1 Dois módulos principais do sistema: detecção e rastreamento Submódulos presentes na detecção (bg modeler, bg subtractor, filters e heads detector) e no rastreamento (controller e condensation), além de submódulos de entrada (input e config), saída (output) e apresentação (Track printer e Heatmap creator) Fluxo em alto nível do processamento de um vídeo Fluxo de criação de modelo de fundo de um vídeo Fluxo de segmentação (subtração) e filtragem de modelo de fundo Fluxo de detecção de pessoas e extração de cabeças Fluxo de rastreamento em que é aplicado o condensation Fluxo de rastreamento em que são aplicados filtros sobre valores previstos para posições de cabeças no quadro seguinte Fluxo de criação de meios de visualização a partir de rotas armazenadas em banco de dados Exemplo de subtração de fundo, onde é apresentado um quadro e seu foreground. (MCHUGH JANUSZ KONRAD; JODOIN, 2009) Operações de filtragem de blobs Exemplo de erosão usado em (PETERLIN, 1996): esquerda, imagem binária original; direita, imagem erodida Exemplo de dilatação usado em (PETERLIN, 1996): esquerda, imagem binária original; direita, imagem dilatada Exemplos de aplicação de operações morfológicas de fechamento (dilatação seguida de erosão) usados em (BAUERMANN, 2008) Exemplos de aplicação de operações morfológicas de abertura (erosão seguida de dilatação) usados em (BAUERMANN, 2008)

12 2.16 Exemplo de aplicação de filtro Gaussiano em uma imagem usado em (ATKINS, 2010) Arquitetura do OpenCV. (BRADSKI; KAEHLER, 2008, p. 13) PETS Quadro da câmera Vídeo 1, filmado pelo grupo Quadro original do vídeo Modelo de fundo do vídeo Resultado da subtração de Fundo do vídeo Resultado da operação morfológica de fechamento do vídeo Resultado da operação morfológica de abertura do vídeo Resultado da remoção de blobs muito pequenos do vídeo Resultado da suavização do vídeo Resultado da busca por cabeças (histograma) do vídeo Resultado final do vídeo Rota impressa do vídeo Mapa de calor do vídeo Resultado final do vídeo PETS câmera Rota impressa do vídeo PETS câmera Mapa de calor do vídeo PETS câmera

13 LISTA DE TABELAS 2.1 Representação de pixels de uma imagem I Representação de pixels de uma imagem I Representação de pixels de uma imagem I Representação de pixels de um modelo de fundo obtido a partir das imagens I1, I2 e I Representação de intensidade mínima de cada pixel de uma imagem Representação de intensidade máxima de cada pixel de uma imagem Representação de um quadro de vídeo que sofrerá análise de subtração de fundo Descrição do vídeo da câmera 3 do PETS Descrição do vídeo 1, filmado pelo grupo Descrição de cada parâmetro de configuração do sistema de monitoramento visual de pessoas

14 SUMÁRIO 1 Introdução Apresentação Objetivo Organização do texto Estado da arte Aleph Arquitetura Funcionalidades Imagem digital Detecção Modelo de cena de fundo Subtração de fundo Blob Filtragem de blobs Histograma Detecção de cabeças Rastreamento Filtro de partículas: condensation Considerações técnicas Materiais e métodos OpenCV

15 3.2 Linguagens de programação Bases de vídeos Características dos vídeos PETS Câmera de vídeo Implementação Entrada Detecção Rastreamento Saída Apresentação Experimentos e resultados Vídeo PETS câmera Conclusões e trabalhos futuros Referências Bibliográficas 69

16 15 1 INTRODUÇÃO O Aleph é um sistema de monitoramento visual de pessoas que utiliza tecnologias de visão computacional. Neste capítulo, serão apresentados os conceitos básicos desse sistema, seu objetivo e a organização deste texto. 1.1 Apresentação Um sistema de monitoramento é um sistema capaz de observar e interpretar acontecimentos presentes em vídeos, imagens, textos ou em qualquer sistema de informação. O papel de interpretar os acontecimentos tem especial importância na otimização dos processos envolvidos no ambiente de onde eles foram extraídos. Sistemas de monitoramento baseados em visão computacional têm surgido com grande importância em empresas e indústrias que precisam monitorar e analisar seus processos de negócio. Esses sistemas capturam vídeos de ambientes e realizam processamentos que detectam e processam ações relacionadas a pessoas e objetos. A visão computacional é uma ciência que estuda e desenvolve técnicas para possibilitar que máquinas enxerguem. Através dessa tecnologia, sistemas artificiais podem extrair informações de imagens capturadas por câmeras e traduzi-las para serem compreendidas por seres humanos. A loja de moda feminina Marisa é uma empresa interessada nessa tecnologia; ela possui câmeras que registram entradas e saídas de pessoas de suas lojas, além de sistemas que identificam vitrines e setores das lojas mais atrativos para os consumidores. Outra aplicação seria com empresas de vigilância que necessitam de sistemas inteligentes para processar vídeos e identificar presença de pessoas em áreas restritas de determinados ambientes. O Aleph é um sistema capaz de monitorar ações de pessoas em ambientes fe-

17 16 chados. Como muitas tecnologias de visão computacional são pouco maduras, este sistema se posiciona como uma alternativa rápida de implantação em empresas e indústrias. Este projeto recebeu o nome de Aleph devido à obra El Aleph publicada em 1949 pelo autor argentino Jorge Luis Borges (BORGES, 1979), em que ele descreve um ponto do universo, denominado Aleph, a partir do qual é possível visualizar qualquer outro ponto. Este nome simboliza a capacidade do sistema de monitoramento visual de pessoas Aleph detectar e rastrear totalmente o ambiente no qual ele é aplicado. 1.2 Objetivo O objetivo deste projeto é desenvolver um sistema de monitoramento visual capaz de detectar e rastrear pessoas em ambientes fechados, através do uso da tecnologia de visão computacional, produzindo, ao final do processamento de um vídeo, mapas de calor com áreas de maior movimentação e reprodução da rota percorrida por cada indivíduo. O projeto é uma alternativa opensource e pronta para usar de um sistema com funcionalidades muito específicas, mas extremamente relevantes para empresas e indústrias. 1.3 Organização do texto A monografia está dividida em quatro partes principais. A primeira, Introdução, é uma apresentação que explica a motivação e o objetivo de desenvolvimento do projeto, fornecendo ao leitor um panorama do estado da arte das tecnologias de monitoramento visual de pessoas. A segunda parte, Aleph, apresenta a arquitetura e as funcionalidades do sistema de monitoramento visual de pessoas desenvolvido. É nesta parte também que são apresentados os conceitos teóricos do projeto referentes a processamento de imagens e visão computacional. A terceira parte apresenta os materiais e métodos utilizados no desenvolvimento do projeto, de maneira que o leitor possa recriar o ambiente em que o projeto foi desenvolvido e testado. Além disso, apresenta detalhes da implementação de cada

18 17 módulo do sistema. Por fim, a quarta parte discute experimentos com a solução proposta para o monitoramento de pessoas e as possíveis extensões e melhorias que podem ser implementadas. 1.4 Estado da arte O trabalho tem como base teórica principal a visão computacional, logo, deve-se entender qual é o estado da arte tanto na tecnologia, como em aplicações existentes, e os problemas não resolvidos desta área, para que os esforços no desenvolvimento do trabalho sejam bem direcionados. Considerando um filme como uma sequência de imagens (ou quadros), desejase detectar um objeto em cada um dos quadros do vídeo para que o rastreamento seja feito. O método mais intuitivo e utilizado no mercado para detectar movimento em um filme é a subtração de fundo. Com esse método, é possível destacar regiões da imagem que apresentam movimento em comparação a regiões estáticas (o fundo da cena). Mas, este método é limitado pelo nível de ruído introduzido no ambiente filmado, por exemplo, variações na iluminação do ambiente podem ser identificadas como movimento. Outro limitador do método de subtração de fundo é a dificuldade de distinguir dois objetos que se cruzam durante seus movimentos, a chamada oclusão. Para contornar essas limitações da subtração de fundo, é necessária a utilização de algoritmos robustos de rastreamento. Alguns algoritmos são bem difundidos e já utilizados em sistemas comerciais, como o rastreamento de objetos com filtragem estocástica, como o filtro de Kalman e os filtros de partículas, como o condensation. A filtragem estocástica é um método estatístico utilizado para prever o comportamento de séries modeladas por variáveis aleatórias. Este método é utilizado para prever estatisticamente e em tempo real a localização do objeto rastreado. Para estimar a posição de um objeto em um dado instante, utiliza-se o Teorema de Bayes para construir a probabilidade a posteriori da localização do objeto iterativamente e, assim, calcular o valor esperado da sua posição. O filtro de Kalman (FK) é um filtro estocástico utilizado para estimar a posição de objetos que apresentam uma trajetória suave e bem comportada, descrita por um modelo de espaço linear com ruído gaussiano, onde a solução para o modelo seja

19 18 ótima. Considerando as aplicações existentes no mercado, é perceptível que a maioria é proprietária, o que se justifica dado o alto investimento inicial para desenvolver aplicações neste ramo da computação. Um forte agravante no custo de produção e manutenção de um sistema de visão computacional é a forma de armazenamento de dados. Sistemas inteligentes, que aprendem por meio de observações, necessitam de uma grande base de dados, que basicamente são vídeos, cuja resolução e formato podem fazer um vídeo de dez minutos ter o tamanho de alguns gigabytes. Algo que vale destacar, e também foi produzido por iniciativa privada, é o framework OpenCV, utilizado para processamento de imagens em tempo real, que foi desenvolvido originalmente pela Intel. É livre para ser usado sob os termos das licença de código aberto BSD. A Intel produziu o OpenCV para funcionar em mais de uma plataforma, de sistema operacional ou arquitetura de hardware. Porém, se o framework detectar que a arquitetura do computador, em que o código será compilado, é uma arquitetura Intel, existe a possibilidade de otimizar o código para esta arquitetura. O OpenCV, lançado em 1999, teve como grandes contribuidores para o projeto, além do time de desenvolvimento da Intel, especialistas da Intel Russa para otimizar o framework. Os principais objetivos do OpenCV eram: avançar a pesquisa em visão computacional, não só por prover um projeto de código aberto, mas também com uma infraestrutura básica de visão otimizada; disseminar o conhecimento de visão computacional por prover uma infraestrutura comum, na qual desenvolvedores pudessem se basear, tornando o código mais legível e transferível; e promover soluções comerciais portáteis, com desempenho otimizado gratuitamente, sob uma licensa que liberasse o uso do framework, mas não forçasse a liberação das aplicação feitas sobre este. Atualmente, o OpenCV está na versão 2.1. Desde a versão 2.0 existe a possibilidade de sua utilização por várias linguagens de programação. Além de poder ser usado na linguagem C, na qual foi desenvolvido, pode ser portado para C++, e também existem os chamados wrappers, que permitem o uso por outras linguagens como C#, Python, Ruby, Visual Basic e Java. O OpenCV cumpre até hoje seu própósito inicial, de padronizar a forma como programas de visão computacional são escritos, pois atualmente é o framework de visão mais conhecido, e de fomentar a pesquisa na área. Existem também outras iniciativas, além das privadas, para o desenvolvimento de

20 19 técnicas em visão computacional, como eventos. Um evento que se destaca internacionalmente é o PETS (IEEE International Workshop on Performance Evaluation of Tracking and Surveillance), um workshop internacional, em parceria com o IEEE, sobre avaliação de desempenho de sistemas de monitoramento e vigilância que usam visão computacional. Anualmente, o PETS, que já está na décima primeira edição, lança um desafio em visão computacional, que os inscritos no evento devem resolver e escrever um artigo, explicando a teoria do projeto. A área de visão computacional está em constante evolução, e cada vez mais existem soluções no mercado que se utilizam de visão. Porém, as soluções propostas são para casos específicos, pois aplicam, até por uma questão de desempenho, o algoritmo que for mais apropriado para a situação, e apenas este. Aparentemente, a visão animal, em especial a humana, tem a capacidade de utilizar mais de um algoritmo para reconhecer e identificar objetos em imagens. A capacidade dos animais de escolher o algoritmo mais apropriado para cada caso é que torna a visão animal mais geral que a visão computacional. Além disso, existe a contextualização que o cérebro faz com a imagem reconhecida, podendo atribuir significados não explícitos na imagem por si só. A meta da visão computacional é ser igual ou melhor que a visão humana, porém se a implementação de um único algoritmo já é custosa, a implementação de vários deles, inclusive a tomada de decisão sobre qual algoritmo usar, seria muito mais custosa, ou talvez, impossível para a capacidade de hardware existente atualmente. Também, se pensarmos na contextualização feita pelo cérebro, valendo-se de situações vividas por um indivíduo, o volume de armazenamento de dados seria exorbitante, e como já discutido, este é um entrave para desenvolvimento na área de visão computacional. Assim, vê-se que muito já foi desenvolvido na área de visão computacional, mas ainda há possibilidade de muito desenvolvimento de técnicas e soluções gerais, que deverão levar em conta o compromisso com desempenho e armazenamento de dados.

21 20 2 ALEPH Para entender os conceitos usados no desenvolvimento do Aleph, é necessário absorver alguns fundamentos teóricos. O sistema tem como base dois subsistemas: detecção e rastreamento de pessoas em imagens. O subsistema de detecção de pessoas baseia-se em técnicas e algoritmos que são capazes de encontrar pessoas em vídeos. Já o subsistema de rastreamento de pessoas, que tem o papel de associar pessoas detectadas em diferentes instantes a um identificador, é baseado em técnicas capazes de prever o movimento de uma pessoa dadas suas posições conhecidas em diferentes instantes de tempo. 2.1 Arquitetura O sistema de monitoramento visual de pessoas é capaz de detectar e rastrear pessoas em vídeos, utilizando tecnologias de visão computacional e processamento de imagens. Ele é um sistema que utiliza apenas uma câmera e foi projetado para processar imagens em lote, não funcionando em tempo-real. Sistemas de monitoramento de câmera única embasados em técnicas de visão computacional, geralmente, podem ser divididos em dois grandes módulos: o primeiro, detecção, é responsável por detectar a presença de objetos de interesse (neste caso, pessoas) nas imagens capturadas e definir as posições deles nas cenas; o segundo, rastreamento, conhecendo tais informações, deve executar o rastreamento dos alvos e manter o controle de suas trajetórias no decorrer da cena. A organização dos dois módulos está representada na figura 2.1. Para extrair o máximo de qualidade do sistema de monitoramento, é essencial que a arquitetura estabeleça uma forma para que estes módulos operem em sincronia. Assim como o módulo de rastreamento utiliza as informações geradas pelo detector de pessoas, os dados de rastreamento gerados pelo rastreador são realimenta-

22 21 dos no módulo de detecção de pessoas, para que este tenha uma fonte adicional de informação e possa ajustar a sua forma de trabalho. Figura 2.1: Dois módulos principais do sistema: detecção e rastreamento Em linhas gerais, a interface entre os dois módulos principais são as posições das pessoas existentes na cena em análise. O detector de pessoas envia as posições medidas para o rastreador, que, após executar as rotinas de rastreamento e calcular as previsões de movimento, responde com as posições previstas para a cena seguinte. Cada módulo principal, de detecção e de rastreamento, possui submódulos que são apresentados na figura 2.2 juntamente com os outros módulos e submódulos que compõem o projeto como um todo. Figura 2.2: Submódulos presentes na detecção (bg modeler, bg subtractor, filters e heads detector) e no rastreamento (controller e condensation), além de submódulos de entrada (input e config), saída (output) e apresentação (Track printer e Heatmap creator) A entrada do sistema é composta pelo submódulo input, que captura quadros do vídeo em análise, e pelo submódulo config, que acessa um arquivo de configuração do Aleph específico para o vídeo em análise. O sistema de detecção é composto dos submódulos: bg modeler, responsável por modelar a cena de fundo; bg subtractor, responsável por subtrair o quadro em análise do modelo de fundo; filters, responsável por aplicar filtros de limpeza de blobs; e heads detector, responsável por detectar cabeças em blobs. O sistema de rastreamento é formado pelo controller, que realiza a lógica de con-

23 22 trole do rastreamento, e pelo condensation que é responsável pelo filtro de partículas chamado condensation. A saída do sistema é um submódulo genérico que pode gravar os resultados, por exemplo, em bancos de dados ou em arquivos de texto. A apresentação dos dados colhidos durante a execução do sistema é desempenhada pelos submódulos Track printer e Heatmap creator de duas formas, imprimindo as rotas das pessoas rastreadas pelo sistema nos quadros do vídeo em execução e pela criação de um mapa de calor para cada vídeo analisado. Como observado nos diagramas a seguir, o fluxo de processamento de um vídeo consiste de: 1. Leitura do arquivo de configuração do vídeo que contém parâmetros de processamento do sistema e a localização do vídeo a ser processado; 2. Criação do modelo de fundo do vídeo; 3. Leitura e processamento de cada quadro do vídeo, executando os passos: (a) Subtração do quadro do modelo de fundo, obtendo blobs candidatos a pessoas; (b) Filtragem de blobs candidatos a pessoas através de execução de operações morfológicas e eliminação de blobs pequenos; (c) Obtenção do histograma de cada blob e cálculo dos máximos locais candidatos a cabeças de pessoas; (d) Predição das posições das pessoas através do filtro de partículas condensation; (e) Obtenção de posições das pessoas no quadro utilizando as posições previstas das pessoas e os pontos de máximos locais candidatos a cabeças de pessoas; (f) Associação de cada pessoa do quadro atual com uma pessoa do quadro anterior, de forma que seja possível traçar sua trajetória; (g) Criação, se necessário, de novas pessoas e tratamento de pessoas sob oclusão. (h) Atualização das amostras do condensation para cada uma das pessoas sendo rastreadas;

24 23 (i) Filtragem de pessoas que deixaram a imagem da câmera ou que sofreram algum problema de rastreamento. (j) Cópia das posições e dos identificadores das pessoas não mais presentes na imagem para o banco de dados. Figura 2.3: Fluxo em alto nível do processamento de um vídeo. Figura 2.4: Fluxo de criação de modelo de fundo de um vídeo.

25 24 Figura 2.5: Fluxo de segmentação (subtração) e filtragem de modelo de fundo. Figura 2.6: Fluxo de detecção de pessoas e extração de cabeças.

26 25 Figura 2.7: Fluxo de rastreamento em que é aplicado o condensation. Figura 2.8: Fluxo de rastreamento em que são aplicados filtros sobre valores previstos para posições de cabeças no quadro seguinte.

27 26 Figura 2.9: Fluxo de criação de meios de visualização a partir de rotas armazenadas em banco de dados. 2.2 Funcionalidades O Sistema de Monitoramento Visual de Pessoas é capaz de detectar pessoas em imagens de câmeras de vídeos e rastreá-las, ou seja, ele consegue mapear o trajeto percorrido por cada pessoa dentro de um ambiente filmado. A seguir estão listadas as características e funcionalidades do sistema: É capaz de extrair imagens diretamente de câmeras; É capaz de extrair imagens de vídeos armazenados; É capaz de ler imagens armazenadas; Consegue processar múltiplos vídeos simultaneamente, gerando análises isoladas para cada um deles; Para cada vídeo, deve receber um modelo do ambiente capturado sem pessoas para criar o modelo de cena de fundo; Detecta pessoas em ambientes; Rastreia movimentação de cada pessoa presente em um ambiente;

28 27 Identifica áreas de um ambiente onde as pessoas passam mais tempo, gerando mapas de calor; Identifica caminhos mais percorridos por pessoas em um ambiente; Reproduz caminhos realizados por pessoas. 2.3 Imagem digital Uma imagem digital é composta por um conjunto de pixels, na forma de uma matriz. Uma imagem em resolução Full HD (1920x1080), por exemplo, possui 1920 linhas com 1080 pixels cada uma. Cada um desses pixels possui uma coloração específica, que pode ser representada por algum sistema de cores, como o RGB. Este sistema de cores tem característica aditiva, isto é, representa uma cor como uma composição de três cores básicas: vermelho (Red), verde (Green) e azul (Blue). Cada uma dessas componentes possui uma determinada intensidade na composição de cada cor, que varia de 0 a 255. No RGB, a cor branca, por exemplo, é representada como a adição das três cores básicas em intensidade máxima, ou seja, é equivalente a (255, 255, 255); a representação do preto é exatamente o inverso: (0, 0, 0). Assim, neste trabalho, as imagens são constituídas por pixels, os quais possuem uma representação RGB. 2.4 Detecção A tarefa de detecção de pessoas em vídeos se apóia em técnicas diversas e consolidadas de visão computacional, as quais permitem que imagens sejam analisadas em busca da presença de seres humanos. A ideia básica por trás deste processamento é a criação de um modelo de cena de fundo com base em uma sequência de quadros capturados nos quais não exista nenhum tipo de movimentação. Estando este modelo bem definido, é possível praticar um processo de subtração da cena de fundo de outros quadros e verificar a existência de regiões de movimentação. Finalmente, a tarefa do detector é analisar estas regiões buscando a existência de pessoas.

29 28 Todas as etapas deste processamento são descritas em detalhes nas seções que seguem Modelo de cena de fundo Em visão computacional, técnicas de subtração de fundo visam criar um modelo de cena de fundo para uma determinada sequência de imagens obtidas a partir de uma mesma câmera em um mesmo local e, através dele, detectar em outras imagens da mesma sequência áreas em que haja qualquer espécie de modificação em relação ao modelo. O objetivo do modelo de cena de fundo é mapear o valor RGB médio de cada pixel da imagem de fundo, uma vez que é natural a existência de uma ligeira alteração no valor de um pixel entre quadros consecutivos, seja por imprecisão da câmera ou por algum fator externo que altera características do ambiente. A criação deste modelo é feita em cima de uma sequência de quadros nos quais não existe a presença de objetos ou pessoas em movimento. Deste modo, esta técnica se apóia na hipótese de que não existem no ambiente elementos que tendem a se mover e alterar drasticamente o modelo de fundo. Para ambientes em que há elementos móveis pertencentes à cena de fundo, como, por exemplo, uma árvore que balança com o vento, existem técnicas para a criação de um modelo de fundo adaptativo que continuamente se atualiza e mantém uma representação da cena de fundo. Em (BRADSKI; KAEHLER, 2008, p. 278) pode ser encontrado um exemplo de implementação desta técnica. O primeiro passo para a criação do modelo de cena de fundo é a soma de uma série consecutiva de quadros, isto é, o valor de cada pixel de um quadro é somado com o valor do pixel correspondente de um outro quadro. Ao final desta sequência de somas, o que se obtém é uma imagem na qual cada pixel representa o total da soma dos valores dos pixels cujas posições são iguais as deste em todos os quadros considerados. Por fim, basta dividir o valor de cada pixel desta nova imagem pelo número de quadros considerados para a geração do modelo de fundo, extraindo, portanto, o valor médio para cada pixel. Sendo p i x,y o valor RGB do pixel de coordenadas (x, y) no quadro i, o valor médio M x,y (2.1)

30 29 do pixel (x, y) no modelo de cena de fundo para n quadros é dado por: M x,y = ni=1 p i x,y. (2.2) n Para visualizar como um modelo de fundo estático é determinado, são apresentadas as tabelas 2.1, 2.2 e 2.3, de 4 células cada uma. Deve-se supor que cada tabela representa uma imagem e cada célula representa um pixel. A partir das três tabelas, é obtida a tabela 2.4 que guarda em suas células os valores médios de cada célula das tabelas, representando o modelo de fundo. Tabela 2.1: Representação de pixels de uma imagem I Tabela 2.2: Representação de pixels de uma imagem I Tabela 2.3: Representação de pixels de uma imagem I Tabela 2.4: Representação de pixels de um modelo de fundo obtido a partir das imagens I1, I2 e I3 ( )/3 = 10 ( )/3 = 30 ( )/3 = 21 ( )/3 = Subtração de fundo A etapa de subtração da cena de fundo visa essencialmente detectar qualquer espécie de movimento existente em uma imagem. Para constatar movimentação em um determinado quadro, o que se faz é analisar os valores de cada pixel da imagem e compará-los com os valores correspondentes no modelo de cena de fundo previamente criado.

31 30 Para cada pixel (x, y) no modelo de cena de fundo, são definidos limiares (em inglês, thresholds) máximo e mínimo com base no seu valor RGB: M x,y. Logo, para cada pixel (x, y) em um determinado quadro k, p k x,y (2.3), é estabelecida uma faixa de valores aceitáveis que ele pode assumir nos demais quadros do vídeo, conforme indicado a seguir: l min p k x,y l max (2.4) onde l min é o limiar mínimo e l max é o limiar máximo. Com estes limiares definidos, a detecção de movimento em um quadro em processamento é realizada através da verificação se o valor RGB de cada um de seus pixels está dentro dos limiares determinados para este pixel. Caso o valor não esteja dentro da faixa estabelecida, o pixel representa parte de um elemento que não está no modelo de cena de fundo, e possivelmente é uma pessoa se movimentando. Realizando esta operação de subtração de fundo para toda a imagem, é possível gerar um mapeamento dos pixels que pertencem e dos que não pertencem ao modelo da cena. Normalmente, a forma mais simples de representação deste mapeamento é através de uma imagem em preto e branco, denominada foreground, na qual áreas brancas correspondem a elementos que não estão no modelo de cena de fundo, e o restante (áreas pretas) são referentes ao fundo. Como exemplo de como essa técnica funciona, novamente serão usadas tabelas. Suponha que as tabelas 2.5 e 2.6 representam, respectivamente, as intensidades mínimas e máximas de pixels de um modelo de fundo. Para um quadro de vídeo representado pela tabela 2.7, as células de valor 5 e 10, que estão fora do intervalo de limiares, fariam parte da região da imagem candidata a constituir uma pessoa, enquanto as células de valor 8 e 28, que estão dentro do intervalo de limiares, fariam parte da cena de fundo e seriam ignorados para posteriores análises. Tabela 2.5: Representação de intensidade mínima de cada pixel de uma imagem

32 31 Tabela 2.6: Representação de intensidade máxima de cada pixel de uma imagem Tabela 2.7: Representação de um quadro de vídeo que sofrerá análise de subtração de fundo Um exemplo de subtração de fundo é apresentado por (MCHUGH JANUSZ KONRAD; JODOIN, 2009), e pode ser observado na figura Figura 2.10: Exemplo de subtração de fundo, onde é apresentado um quadro e seu foreground. (MCHUGH JANUSZ KONRAD; JODOIN, 2009) Blob Define-se como blob cada uma das áreas brancas existentes em um foreground gerado ao final do processo de subtração de fundo. Estes elementos, como mencionado, apontam áreas em que a coloração dos pixels do quadro analisado está suficientemente distante dos pixels do modelo de cena de fundo e, portanto, são áreas em que há evidência de movimentação na cena.

33 32 Na figura 2.10, pode-se notar os blobs no foreground que evidenciam o movimento de pessoas pelo local da imagem Filtragem de blobs A grande meta dos sistemas de detecção de pessoas é identificar as posições nas quais existem pessoas nas cenas de um vídeo, detecção esta que é realizada no foreground gerado para cada quadro. Na grande maioria dos casos, é necessário realizar filtragens nos blobs de um foreground de modo a torná-los mais limpos e adequados para a detecção de pessoas. O fluxo de filtragem que pode ser executado para tornar os blobs de cada foreground mais aptos ao processo de detecção de pessoas é apresentado na figura 2.11, onde são executadas sequencialmente as operações morfológicas de fechamento e de abertura, seguidas por remoção de blobs pequenos e suavização. Figura 2.11: Operações de filtragem de blobs Operações morfológicas As operações morfológicas de fechamento e abertura são construídas a partir das operações morfológicas básicas de erosão e dilatação. O efeito principal da erosão em uma imagem binária, como um foreground, é erodir as fronteiras dos blobs, de modo que tais áreas sejam encolhidas e eventuais buracos no interior delas sejam expandidos. A dilatação é oposta à erosão e, assim, causa uma expansão dos blobs e reduz buracos existentes no seu interior. Para aplicar estas operações morfológicas, é necessário definir um elemento estruturante que define o modo como a operação afetará a imagem binária, como pode

34 33 ser estudado em mais detalhes em (BRADSKI; KAEHLER, 2008, p. 115). No caso do projeto, sempre são utilizadas elipses como elementos estruturais pois estas produzem contornos mais suaves e próximos ao corpo de seres humanos, os quais são os objetos de interesse do sistema de monitoramento aqui descrito. A figura 2.12 apresenta um exemplo de operação morfológica de erosão e a figura 2.13 apresenta um exemplo de operação morfológica de dilatação. Figura 2.12: Exemplo de erosão usado em (PETERLIN, 1996): esquerda, imagem binária original; direita, imagem erodida. Figura 2.13: Exemplo de dilatação usado em (PETERLIN, 1996): esquerda, imagem binária original; direita, imagem dilatada. Operação morfológica de fechamento A operação morfológica de fechamento é uma composição das operações básicas, ou seja, é a aplicação sequencial das operações de dilatação e erosão, nesta ordem. Aplicar este filtro ao foreground é importante para que a quantidade de buracos existentes nos blobs seja reduzida e para que blobs próximos separados por regiões muito estreitas possam ser conectados, pois isto torna a imagem final mais limpa e definida, facilitando o processo de detecção de pessoas.

35 34 A figura 2.14 apresenta exemplos de operações morfológicas de fechamento aplicadas. Figura 2.14: Exemplos de aplicação de operações morfológicas de fechamento (dilatação seguida de erosão) usados em (BAUERMANN, 2008) Operação morfológica de abertura A operação morfológica de abertura é equivalente à aplicação de uma operação de erosão seguida da aplicação de uma operação de dilatação. A realização desta filtragem no foreground torna os contornos dos blobs menos irregulares, devido à sua ação sobre as rebarbas existentes. Além disso, esta operação tem um efeito positivo para reduzir a área do foreground referente à sombra das pessoas no chão. A figura 2.15 apresenta exemplos de operações morfológicas de fechamento aplicadas.

36 35 Figura 2.15: Exemplos de aplicação de operações morfológicas de abertura (erosão seguida de dilatação) usados em (BAUERMANN, 2008) Remoção de blobs muito pequenos O processo de remover blobs pequenos consiste em identificar blobs que não possuem área de tamanho mínimo equivalente à área esperada de uma pessoa em uma imagem. É uma etapa importante da filtragem de blobs porque elimina ruídos. O tamanho da área mínima (em pixels) deve ser definida experimentalmente Suavização A etapa final do processo de filtragem de blobs é a suavização do foreground, a qual é realizada com a aplicação de um filtro Gaussiano à imagem original. O objetivo da aplicação do filtro de suavização é contribuir para que os blobs obtidos após o processo de filtragem estejam aptos a gerar histogramas com curvas mais suaves, com poucos picos de oscilação. A figura 2.16 apresenta um exemplo de aplicação de filtro Gaussiano a uma imagem e o efeito da suavização, que corresponde a um borramento da imagem.

37 36 Figura 2.16: Exemplo de aplicação de filtro Gaussiano em uma imagem usado em (ATKINS, 2010) Histograma Um histograma é uma representação gráfica da distribuição de frequência de um conjunto de medições. No contexto deste projeto, os histogramas são utilizados para mapear as ocorrências de pixels brancos em áreas retangulares que circundam os blobs existentes no foreground. Em outras palavras, para cada coluna da área delimitada pelo retângulo ao redor de um blob, o histograma apresentará o número de pixels de cor branca Detecção de cabeças Assim como em (SIEBEL, 2010), o módulo de detecção de pessoas implementado neste projeto busca a existência de pessoas somente nas áreas em que foi registrado algum tipo de movimento, ou seja, nos blobs do foreground filtrado. Existem muitas técnicas para detecção de pessoas, cada uma delas se apoiando em alguma base teórica específica. Como descrito em (ZHAO; NEVATIA, 2004) e em (SI- EBEL, 2010), as pessoas podem ser detectadas nas imagens através de um algoritmo capaz de identificar as cabeças existentes. Este método apresenta um dos melhores resultados entre todos os que foram avaliados para o desenvolvimento deste sistema, além de possuir um comprometimento bastante relevante com o gasto de recursos computacionais. A forma de detectar cabeças depende fortemente do tipo de imagem que será adotado como entrada do sistema de monitoramento. Por exemplo, em uma câmera posicionada no teto de um ambiente que foca o solo perpendicularmente, o foreground gerado pela presença de uma pessoa tende a ser próximo de uma elipse, de modo que é possível implementar um algoritmo que busque por esta forma geométrica na

38 37 imagem e, portanto, detecte as pessoas existentes. Por outro lado, as imagens de uma câmera cujo foco está paralelo ao solo, isto é, perpendicular às pessoas em movimento, deverão gerar foregrounds em que as pessoas são representadas pela sua forma real; neste tipo de situação, a forma de detecção de pessoas sofre alterações. O Aleph utiliza um algoritmo de detecção de cabeças personalizado e apropriado para o tipo de imagem definido como objetivo deste projeto, isto é, imagens em que as pessoas aparecem de corpo inteiro geradas por câmeras posicionadas há aproximadamente 4 metros do solo. Inicialmente, para cada blob do foreground, é definida uma área retangular que o circunda; estas serão as regiões de interesse para análise e possível detecção de pessoas. Em seguida, para cada uma dessas áreas de interesse, é realizado o cálculo de um histograma de acordo com o que foi exposto na seção É importante notar que a posição das cabeças nos foregrounds correspondem às colunas dos histogramas em que existe um máximo local. A tarefa de detecção de cabeças resume-se, portanto, na identificação dos máximos locais nas curvas descritas pelos histogramas. A forma mais precisa de determinar os máximos locais de uma curva consiste na aplicação de conceitos de cálculo diferencial e integral à função que a descreve. Porém, para a resolução do problema neste projeto, é adotada uma técnica mais simples e de menor custo computacional, uma vez que a curva do histograma está representada por um conjunto de pares ordenados, e não pela sua equação matemática. Para estimar se um determinado ponto (x, y) da curva descrita pelo histograma é um máximo local, percorre-se a curva, da esquerda para a direita, verificando para cada ponto se existe um determinado número mínimo de pontos vizinhos que o antecedem e possuem ordenada menor do que a dele, bem como um número mínimo de vizinhos que o sucedem e também tenham ordenada inferior. 2.5 Rastreamento O processo de determinação da posição de certos objetos ao longo do tempo em uma sequência de imagens denomina-se rastreamento. O rastreamente é comumente confundido com reconhecimento, que caracteriza-se pela classificação de objetos com algum rótulo pré-estabelecido. Pode-se apresentar um exemplo para elucidar a questão: se uma imagem que contém pessoas é entrada de um processo que ao final determina a posição dessas pessoas num determinado sistema de coordenadas,

39 38 então este é um processo de rastreamento; porém, se a mesma imagem também for entrada de outro processo que ao final relacione cada pessoa a seu respectivo nome (rótulo), este será um processo de reconhecimento. O processo de rastreamento em imagens é uma tarefa laboriosa, devido tanto às características inerentes aos elementos de imagens a serem analisados, como também pelo grau de complexidade que os elementos nas imagens podem apresentar. Dois grandes desafios para o rastreamento de pessoas são: a oclusão, e a imprevisibilidade do movimento das pessoas nas imagens. A oclusão ocorre quando os atributos de uma pessoa, que são utilizados no rastreamento, não podem ser vistos por inteiro em uma imagem. Por exemplo, caso sejam utilizadas as cabeças dos indivíduos para o rastreamento e, por algum motivo qualquer, a cabeça de uma pessoa não estiver bem definida na imagem, então houve a ocorrência de uma oclusão. Oclusões são comuns em vídeos que contém uma massa de pessoas se movimentando muito próximas umas da outras, ou em ambientes onde existem muitos obstáculos que podem se antepor às pessoas durante a captura de imagens. A imprevisibilidade do movimento, por sua vez, é algo inerente ao ser humano e não vem ao caso discorrer sobre sua natureza, e sim, como tratá-la. Para tanto, são introduzidos filtros probabilísticos, também chamados bayesianos, que tentam prever, utilizando métodos estocásticos, o movimento das pessoas entre quadros consecutivos de um vídeo. Existem vários tipos de filtros dentro desta categoria, sendo os mais famosos o filtro de Kalman (FK), o filtro de Kalman-Extendido (FKE) e os filtros de partículas, como o condensation. O filtro escolhido para este projeto foi o filtro de partículas condensation, que será explicado a seguir, pois o mesmo permite representações de distribuições de probabilidades mais genétricas do que o FK e o FKE Filtro de partículas: condensation Em um ambiente dinâmico, ou seja, no qual além dos objetos alvos do rastreamento, os elementos que compõem o ambiente também podem mudar, o rastreamento é desafiador. Se os objetos alvos de rastreamento tiverem um movimento aleatório, o nível de dificuldade do rastreamento também aumenta. Dessa necessidade, desenvolveram-se os filtros de partículas, para tratar dados trazidos por senso-

40 39 res - que podem estar atrasados no tempo, ou mesmo com ruído - em tempo real. Os filtros de partículas utilizam um espaço de estados mais flexível quando comparados ao FK e ao FKE, e possibilitam a representação de mais distribuições probabilísticas além da Gaussiana. Entre os filtros de partículas, um que ficou famoso na comunidade de visão computacional e de inteligência artificial é o condensation. Conditional Density Propagation (condensation) foi o nome utilizado por Isard e Blake (1998) ao introduzir seu algoritmo na comunidade de visão computacional. O condensation é capaz de lidar com sistemas que tanto o modelo de movimento, quanto o modelo de observação são não-lineares, além de permitir que as funções densidade de probabilidade, que representam os estados e as observações, sejam nãogaussianas, como descrito por Isard e Blake (1998). Para fazer uma aproximação discreta da função densidade de probabilidade do estado do sistema, constrói-se um conjunto de amostras de estado, que podem ser chamadas de partículas. Quanto maior a dimensão do vetor de estados, mais partículas são necessárias para uma boa representação da densidade de probabilidade e, logo, o custo computacional é maior. Assim, existe um compromisso na escolha da dimensão do vetor de estado, de maneira que este não se mostre como uma desvantagem técnica. O modelo dinâmico do sistema é dado por: x t x = A(x t 1 x) + Bw t (2.5) Onde x representa o valor médio do estado; A é a matriz que representa a componente determinística do modelo dinâmico; B é a matriz que representa a componente estocástica do modelo dinâmico; e w t representa o ruído da observação. Pode-se dividir cada iteração da estimação em três etapas principais: reamostragem, predição e cálculo dos pesos; contudo, todas as operações, de ambas as fases, são executadas sobre as amostras que representam a função densidade de probabilidade do sistema. A seguir, segue explicação sobre o processo e suas etapas: Para o conjunto de amostras do instante de tempo anterior, {s (n) t 1, π (n) t 1, c (n) t 1, n = 1,..., N}, deve-se construir um novo conjunto {s (n) t o instante atual de tempo., π (n) t, c (n) t }, n = 1,..., N para Onde, s representa a amostra, π os pesos e c o peso acumulado. Para construir a enésima nova amostra de N:

41 40 1.Reamostragem: Selecionar uma amostra s (n) t, da seguinte forma: 1. Gerar um número randômico r [0, 1], uniformemente distribuído. 2. Achar, por subdivisão binária, o menor j para o qual c (j) t 1 r. 3. Realizar s (n) t = s (j) t 1. 2.Predição: Realizar a predição por amostragem de p(x t x t 1 = s (n) t ) (2.6) para escolher cada s (n) t. Para o caso do sistema dinâmico estar sendo modelado por uma equação diferencial estocástica linear, o novo valor da amostra pode ser encontrado de acordo com a seguinte expressão: s (n) t 3.Cálculo de pesos: = As (n) t + Bw (n) t Deve-se medir e atribuir o peso das novas posições de acordo com as medidas z t : π (n) t = p(z t x t = s (n) t ) (2.7) Quanto maior a probabilidade da observação para uma dada amostra, maior seu respectivo peso. Os pesos são normalizados de modo que sua soma seja igual a 1, isto é, N i=1 wk i = 1. Além disso, também deve ser guardado o peso acumulado (s (n) t,, c (n) ), onde π (n) t t c 0 t = 0, c n t = c n 1 t + π (n) t (n = 1,...,N). Uma vez que as amostras foram associadas aos pesos, são escolhidas N amostras, com possibilidade de repetição, para o conjunto que representará a nova densidade de probabilidade. O fato da repetição, na escolha de amostras, ser habilitada faz com que amostras com pesos mais altos, possivelmente, sejam escolhidas mais vezes, enquanto amostras com menores pesos sejam descartadas.

42 41 Algo que deve ser ressaltado é que o número de amostras e a reamostragem, que são empregados no algoritmo condensation descrito por Isard e Blake (1998), são parâmetros críticos para seu bom funcionamento. Se o espaço amostral for grande, mas o número de amostras com que se trabalha for pequeno, a confiabilidade do algoritmo cai. Além disso, se o número de amostras for muito alto em relação ao espaço amostral, perde-se velocidade de execução do algoritmo. No caso da técnica de reamostragem, se for mal escolhida, poderá descartar amostras em excesso, prejudicando predições futuras ou poderá descartar amostras muito lentamente, o que prejudicará a convergência do processo de predição, tornando o filtro inútil. 2.6 Considerações técnicas Com o contexto teórico, supra citado, pode-se explicar a razão pelas qual estas técnicas, algoritmos e modelagens foram escolhidas. O projeto do sistema Aleph de monitoramento se vale de uma câmera fixa, que captura os vídeos de uma posição superior à cabeça das pessoas. O movimento destas pessoas é aleatório. O ambiente é fechado e tem pouca variação de luz. Assim, a modelagem de fundo, e a subsequente subtração desta modelagem em cada quadro dos vídeos gravados pela câmera, possibilita a extração de blobs de movimento da imagem. Se a câmera se movimentasse, esta modelagem e extração não seriam possíveis. Também, se houvesse muita variação de luz no ambiente, o modelo de fundo ficaria defasado rapidamente, provocando o aparecimento de ruído nos blobs, e assim seria necessária uma modelagem dinâmica e estatística do fundo. Cada imagem resultante do processo de subtração de fundo é entrada do processo descrito em 2.4.2, para que os blobs fiquem mais definidos, separados um do outro, nos casos em que não há oclusão. Muito do ruído existente, nos blobs encontrados, advém da sombra que cada objeto em movimento tem. Se o ambiente filmado tivesse muita variação de luz, este tipo de ruído seria introduzido nos resultados da subtração de fundo. Uma vez que o ambiente é bem comportado nestes aspectos, pode-se fazer as operações para a melhoria da definição dos blobs, como as operação morfológicas de abertura e fechamento. Com os blobs bem definidos, sabe-se o que está em movimento em cada imagem. Porém, como o foco do Aleph é identificar e rastrear pessoas, precisa-se, ainda, iden-

43 42 tificar quais destes blobs são de fato pessoas. Para tanto, executa-se a identificação de cabeças, explicada em Dado a aleatoriedade do movimento das pessoas no ambiente filmado, introduziuse no projeto um módulo de previsão de movimento, que utiliza o filtro de partículas condensation, para que o tratamento dos blobs, definindo quais são pessoas, seja mais assertivo. A escolha das técnicas de previsão foi feita pela orientadora, pois o condensation tem sido muito bem recomendado na área de pesquisa de inteligência artificial, e ainda muito pouco foi desenvolvido com este. A falta de exemplos práticos e explicativos de como utilizar o condensation foi um desafio inicial, mas que como todo outro desafio foi superado com o tempo. Estas são as justificativas das escolhas feita sobre técnicas, algoritmos e modelagens usadas no projeto do sistema Aleph. Todas essas escolhas foram introduzidas na arquitetura do sistema.

44 43 3 MATERIAIS E MÉTODOS Neste capítulo, são apresentados e explicados os materiais e métodos utilizados no desenvolvimento do sistema de monitoramento visual de pessoas, de modo que outros pesquisadores possam repetir os passos de desenvolvimento e compreender os resultados obtidos. Foram escolhidas ferramentas gratuitas de desenvolvimento e de código-aberto, e os vídeos usados para testar o funcionamento do sistema são públicos e possuem autorização explícita para uso em fins acadêmicos. Para desenvolver o sistema de monitoramento visual de pessoas, foi utilizada a biblioteca de visão computacional OpenCV. Ela oferece centenas de algoritmos de visão computacional implementados e métodos que permitem manipular imagens. A biblioteca é oferecida para as linguagens de programação C, C++ e Python, sendo as duas últimas escolhidas para a realização do projeto. A biblioteca OpenCV foi a base motivadora das escolhas posteriores de tecnologias usados no projeto. Ela é uma biblioteca de código-aberto com licença BSD, o que significa que pode ser usada livremente para ser copiada, distribuída, transmitida ou adaptada. A vantagem da escolha de uma biblioteca de código-aberto com uma comunidade grande de desenvolvedores, como é o caso da OpenCV, é que ela é usada e desenvolvida por milhares de pessoas que testaram e garantiram sua confiabilidade, desempenho, escalabilidade e segurança, além de ser gratuita. As entradas do sistema são vídeos ou conjuntos de imagens sequenciais de um ambiente. No item 3.3.1, serão apresentadas as origens dessas mídias e as características gerais de vídeos que funcionam corretamente como entradas do sistema desenvolvido.

45 OpenCV A OpenCV é uma biblioteca de código-aberto com mais de 500 algoritmos otimizados para uso em aplicações de visão computacional. São oferecidos estruturas e métodos de operações matemáticas, representação de imagens, persistência de dados, busca em espaço multidimensional, processamento de imagens, entre outros. A biblioteca já foi baixada na Internet mais de 2 milhões de vezes e sua comunidade é composta de mais de 40 mil pessoas. A biblioteca foi projetada para ter alta eficiência computacional, por isso foi escrita em C e otimizada para utilizar processadores de vários núcleos. Além disso, um de seus objetivos é ser de fácil utilização por desenvolvedores, fornecendo uma infraestrutura simples de visão computacional. O projeto da biblioteca nasceu no ano de 1999, em um instituto de pesquisa da Intel, em uma iniciativa proprietária de criar aplicações de uso intensivo de processamento. Como era uma época em que muitos pesquisadores estavam desenvolvendo técnicas e infraestruturas de visão computacional, o projeto foi aberto e evoluiu até, em 2006, ser lançada oficialmente a versão 1.0. A versão no tempo de escrita deste documento, segundo semestre do ano de 2010, é a 2.1. Por ter sua origem na Intel, a biblioteca foi construída com instruções otimizadas para processadores da empresa. Além disso, pode ser integrada à biblioteca proprietária Primitivas de Desempenho Integradas da Intel (Intel IPP), que possui várias funções otimizadas para uso em mídias digitais e aplicações de processamento de dados, de forma que o tempo de processamento das funções de visão computacional possa reduzir consideravelmente. A biblioteca é estruturada em quatro componentes principais mostrados na figura 3.1. O módulo CV possui algoritmos de processamento de imagens básicos e de visão computacional altamente sofisticados. O componente MLL é uma biblioteca de aprendizagem de máquina que oferece ferramentas de agrupamento e classificadores estatísticos. HighGUI é o componente que permite criar interfaces gráficas, além de oferecer métodos de entrada e saída de acesso a vídeos e imagens. O componente CXCORE é a base utilizada por todos os outros componentes, onde estão implementados os algoritmos e estruturas de dados básicas.

46 45 Figura 3.1: Arquitetura do OpenCV. (BRADSKI; KAEHLER, 2008, p. 13) A biblioteca OpenCV é multiplataforma, isto significa que ela pode ser executada em Windows e em sistemas operacionais baseados em Unix, como GNU & Linux, Mac OS X, Solaris, entre outros. Além disso, também funciona nas linhas de processadores das empresas Intel, AMD, ARM, PPC e Sparc. 3.2 Linguagens de programação A biblioteca de programação OpenCV suporta as linguagens de programação C, C++ e Python. As escolhidas para realização do projeto foram Python e C++. O motivo da escolha da primeira é que o projeto precisava de uma linguagem de alto nível altamente produtiva, de maneira que os algoritmos de visão computacional implementados poderiam ser testados rapidamente, sem preocupações com o desempenho da solução. A linguagem de programação C++ foi escolhida para suprir deficiências da linguagem Python em alguns pontos do código, como para a utilização do filtro de partículas condensation, implementado pelo framework OpenCv, que não tem disponível esta estrutura para Python. Com a escolha das linguagens de programação Python e C++, uniu-se uma linguagem altamente produtiva com uma linguagem altamente eficiente. Desta forma, o projeto, desenvolvido com tecnologias híbridas, foi realizado com velocidade, qualidade, eficiência e com boas práticas de engenharia de software. Para integrar códigos em C++ e em Python, foram utilizadas bibliotecas do pacote Boost C++, que permitem compilar códigos em C++ e portá-los para outras plataformas. A biblioteca Boost.Python foi utilizada para exportar métodos e funções de classes C++ para Python, e vice-versa.

47 Bases de vídeos Para testar os algoritmos implementados no sistema de monitoramento visual de pessoas, foram utilizados vídeos de fontes públicas e também vídeos filmados durante o projeto com uma câmera comum. As fontes de vídeos estão detalhadas as seguir, bem como as características de cada vídeo Características dos vídeos O sistema de monitoramento visual de pessoas utiliza apenas uma câmera para a aquisição das informações de movimentação das pessoas. Quanto à iluminação das cenas a serem analisadas pelo sistema, o projeto se restringe a vídeos coloridos em que não ocorre variação brusca na iluminação do ambiente, seja ela de natureza artificial ou natural. Para que o sistema seja capaz de identificar uma pessoa em um vídeo, esta deve possuir pelo menos 80 pixels de altura e 30 pixels de largura na imagem, deve aparecer de corpo inteiro e estar parada, andando ou correndo. Pessoas sentadas ou deitadas no ambiente não são detectadas PETS 2006 O PETS (Performance Evaluation of Tracking and Surveillance) é um workshop anual internacional promovido pela IEEE, onde são apresentados projetos e artigos de rastreamento e monitoramento de ambientes, com foco em tecnologias de visão computacional. No ano de 2006, o governo da Inglaterra ofereceu um banco de dados de vídeos de estações de trens públicas para serem usados como base nos artigos e projetos apresentados no PETS Esse banco de dados também inclui informações mapeadas do ambiente, que poderiam ser usadas como referência na comparação dos resultados obtidos pelos projetos submetidos ao workshop. Para a a realização de testes e avaliação de resultados do sistema de monitoramento de pessoas, esse banco de dados foi utilizado. Como as informações mapeadas no banco de dados são focadas em segurança, não serão realizadas comparações

48 47 entre elas e o sistema desenvolvido. Neste banco de dados estão disponíveis vídeos provenientes de 4 câmeras diferentes. No projeto, foi utilizado o vídeo de uma dessas câmeras que respeitava as condições descritas no item PETS câmera 3 Figura 3.2: PETS Quadro da câmera 3 Tabela 3.1: Descrição do vídeo da câmera 3 do PETS2006 Sobre Iluminação Piso Pedestres Vista da câmera Duração Câmera corredor largo, com circulação baixa de pessoas. ambiente com iluminação constante. Piso com duas cores, sendo uma bege clara e outra marrom. Pessoas se movem tipicamente da esquerda para a direita ou da direita para a esquerda do vídeo. Vista superior de perfil das pessoas. 30 segundos. Canon MV-1 1xCCD w/progressive scan Câmera de vídeo Além do vídeo do PETS, utilizou-se, nos teste, um vídeo filmado nas dependências do prédio de Engenharia Elétrica da Escola Politécnica da USP. A seguir o vídeo utilizado é apresentado.

49 48 Vídeo 1 Figura 3.3: Vídeo 1, filmado pelo grupo. Tabela 3.2: Descrição do vídeo 1, filmado pelo grupo Sobre Iluminação Piso Pedestres Vista da câmera Duração Câmera Espaço amplo para circulação de pessoas. Possui bancos na parte lateral esquerda da imagem com pessoas sentadas. A iluminação ambiente é externa vinda do sol e passível de variação, mas, aparentemente, não ocorreram variações bruscas. Além disso, a filmagem foi realizada às 14h35min e a posição da iluminação, neste caso, prejudica fortemente a diferenciação entre cores, realçando apenas o contorno da pessoa. Piso claro, apresenta sombras e reflexo. Pessoas passando livremente sem encenação de cenários. Vista frontal das pessoas, câmera fixada com um tripé e colocada no mezanino do primeiro andar uma altura de 5,35m do chão. 5 minutos e 2 segundos. Samsung minidv SC-D391.

50 Implementação Neste capítulo, são apresentadas técnicas e algoritmos utilizados na implementação de cada submódulo do sistema de monitoramento de pessoas Entrada Nesta seção, são descritos os submódulos que acessam os dados de entrada do sistema Input O submódulo input é responsável por ler quadros de um vídeo e padronizá-lo para um modelo de quadro que o sistema consegue ler e processar. O vídeo pode ser uma câmera, um arquivo de vídeo no disco ou uma sequência de imagens. Este módulo deve oferecer um método que permita acessar o próximo quadro a ser processado Config O submódulo config é responsável por ler um arquivo de configuração que contém os parâmetros apresentados na tabela 3.3 e oferece métodos de acesso a cada um dos parâmetros. Para facilitar e agilizar a geração de parâmetros de configuração para cada vídeo processado, foi construído um sistema que permite definir o valor de cada parâmetro e processar qualquer quadro do vídeo, mostrando rapidamente o resultado da alteração de um parâmetro. O sistema gerador de configuração possui uma interface gráfica, equipada com um player de vídeo que exibe o vídeo original ao lado do vídeo processado. A interface possui controles que permitem o ajuste dos parâmetros de processamento do sistema. O gerador de configuração retorna como saída um arquivo de configuração contendo todos os parâmetros necessários para a execução do sistema de monitoramento.

51 50 Tabela 3.3: Descrição de cada parâmetro de configuração do sistema de monitoramento visual de pessoas PARÂMETRO INPUT PATH INPUT TYPE BACKGROUND MODEL FIRST FRAME BACKGROUND MODEL LAST FRAME CURSOR INITIAL POSITION HIGH THRESHOLD LOW THRESHOLD CVCONTOUR APPROX LEVEL CVCLOSE ITR FG BBS FG CENTERS FG MORPHOLOGY OPEN LEVEL FG MORPHOLOGY CLOSE LEVEL BACKGROUND MODEL GAUSSIAN WIDTH BACKGROUND MODEL GAUSSIAN HEIGHT FG PERIMSCALE DESCRIÇÃO Caminho do diretório de quadros ou vídeo de entrada Indica se o tipo de entrada é um conjunto de quadros ou um vídeo Primeiro quadro a ser considerado para criação do modelo de fundo Último quadro a ser considerado para criação do modelo de fundo Número do primeiro quadro a ser processado Valor do limiar superior para geração do modelo de fundo Valor do limiar inferior para geração do modelo de fundo Define quão simples deve ser considerada a fronteira entre blobs Quantidade de iterações de operação morfológica de CLOSE aplicadas a um quadro sendo processado, que podem ser aplicadas mais de uma vez Booleano que indica se retângulos devem ser desenhados em volta dos blobs Booleano que indica se devem ser marcados os centros de blobs Intensidade da operação morfológica de abertura Intensidade da operação morfológica de fechamento Largura considerada à aplicação do filtro gaussiano Altura considerada à aplicação do filtro gaussiano Usado para definir o tamanho mínimo

52 Detecção Nesta seção, são descritos os submódulos que constituem o módulo de detecção BG modeler O modelo de fundo estático foi escolhido para modelar o ambiente filmado pelo vídeo. O motivo desta escolha é que o projeto utiliza vídeos de ambientes internos, com pouca variação de iluminação e praticamente sem alterações nas disposições dos elementos de fundo. Além de atender aos requisitos do projeto, esta abordagem também é simples de implementar, o que a torna uma boa escolha BG Subtractor A subtração de fundo implementada consiste em comparar a imagem do quadro em análise com o modelo de fundo, como explicado na seção Para cada pixel do modelo de fundo, são definidos limiares de intensidades mínima e máxima. Caso o valor de um pixel do quadro em análise esteja entre esses limiares, ele é considerado parte do modelo de fundo. Caso contrário, ele é considerado um pixel candidato a constituir uma pessoa. O resultado da subtração é a geração de uma imagem binária, com duas cores: branco e preto. Os pixels brancos representam os blobs (foreground) e os pixels pretos representam a cena de fundo e são ignorados no processamento posterior Filters É inevitável, mesmo após a aplicação de todos os filtros já citados, que haja blobs de área muito pequena no foreground resultante da subtração de fundo. A existência destas áreas é inapropriada, pois todas elas podem representar pessoas que não existem no quadro original. Esse fato, além de proporcionar margem para resultados imprecisos, implica em desperdício de tempo de processamento, o que é um elemento muito valioso em sistemas de visão computacional. Para eliminar blobs inapropriados, são aplicados os seguintes filtros: 1. Execução de operação morfológica de fechamento;

53 52 2. Execução de operação morfológica de abertura; 3. Suavização dos blobs, eliminando ruídos em seu conteúdo; 4. Remoção de blobs pequenos, que não possuem tamanho mínimo para serem considerados pessoas; No último filtro aplicado, todo blob existente no foreground analisado é aproximado por um polígono com número arbitrário de lados, de modo que o seu contorno possa ser melhor descrito. Com base no cálculo do perímetro deste polígono, é possível verificar se o tamanho dele é suficiente para que uma pessoa caiba no seu interior. Polígonos com perímetro menor do que um mínimo pré-estabelecido são descartados do foreground Heads detector A detecção de pessoas nos blobs é feita a partir da localização de candidatos a cabeças em cada blob. Para detectar as cabeças do foreground, o histograma de cada blob é analisado. Um histograma, como explicado em 2.4.5, é uma representação gráfica da distribuição de frequências de um conjunto de medições. Para cada blob, seu histograma representará uma função no espaço cartesiano que possui pontos de máximo locais. Pelo formato dos blobs utilizados, é natural que a maior concentração de pixels brancos esteja nas colunas mais próximas à cabeça da pessoa que gerou este trecho do foreground. Assim, a tarefa de detectar pessoas se resume em localizar as posições em que existem cabeças na imagem, isto é, encontrar as posições de maior concentração de pontos nestes histogramas que são representadas pelos pontos de máximo locais. O método de detecção dos máximos locais em histogramas é explicado no item Detecção de máximos locais em histogramas Com a hipótese de que a curva descrita pelo histograma é constituída por um número finito de pontos, pode-se dizer que todo ponto, exceto o primeiro, tem um antecessor definido. Assim, cada um destes pontos possui uma ordenada maior, menor ou igual à ordenada de seu antecessor. Foram adotadas três classificações possíveis para cada ponto presente na curva:

54 53 Subida (S): quando a ordenada do ponto é maior que a do seu antecessor; Descida (D): quando a ordenada do ponto é menor que a do seu antecessor; Platô (P): quando a ordenada do ponto é igual a do seu antecessor. Após as classificações de todos os pontos, é possível buscar um determinado padrão que indique um máximo local. Por exemplo, para que um ponto seja considerado um máximo local, é necessário que existam um número arbitrário de subidas que o antecederam e um número arbitrário de descidas que o sucedem. Nesta implementação os platôs estão sendo desconsiderados da análise, visto que, para o tipo de curvas tratadas, estes praticamente inexistem e não são relevantes. Esta é uma forma bastante simples e eficiente de identificar os máximos locais em curvas como as usadas neste projeto, mas que traz bons resultados. Um ponto fraco desta técnica é o tratamento de oclusões. Quando uma oclusão ocorre, um blob é preenchido com uma grande quantidade de pixels brancos que são sugestivos de pertencer a uma única pessoa. Desta forma, ao realizar a detecção de cabeças com a análise do histograma, a pessoa não será detectada. Como será explicado no item 3.4.3, ao realizar a detecção de pessoas, o sistema possui previsões de onde as pessoas do quadro anterior estão presentes no quadro atual. Desta forma, é possível verificar as previsões que supostamente falharam, e analisar o histograma do local onde havia previsão de existência de pessoa para verificar se uma quantidade maior que o normal de pixels brancos está presente no blob. Caso a quantidade grande de pixels brancos exista, então pode-se assumir que há duas pessoas na mesma posição Rastreamento Nesta seção, são descritos os submódulos que constituem o módulo de rastreamento Controller O módulo de rastreamento implementa uma lógica de controle de quatro fases distintas: 1 - Calculo de predições

55 54 Nesta fase são feitas as predições das posições futuras das pessoas já detectadas numa fase posterior. Estas predições são fornecidas pelo filtro de partículas condensation, utilizando-se da estrutura CvConDensation do OpenCV. 2 - Pareamento de valores medidos e predições Cada pessoa já identificada possui uma predição de posição futura. Com os valores medidos pelo módulo de detecção, faz-se o cálculo das distância Euclidiana entre o valor de predição de uma pessoa com os valores medidos. O valor medido com menor distância Euclidiana com uma predição é tomado como posição real da pessoa possuidora da predição. Assim, relaciona-se uma pessoa a uma identificação, descobrindo quem é quem na imagem. 3 - Ponderação sobre o pareamento dos valores medidos e predições Esta fase verifica os resultados dos pareamentos feitos. Verifica se o pareamento teve ou não sobras, como predições sem valores medidos ou valores medidos sem predições. O tratamento de cada caso é feito da seguinte forma: Pareamento sem sobras: Não há nada a ser feito. Sobras de predições sem medida: Neste caso deve ter ocorrido um erro no módulo de detecção de pessoas ou pode ter ocorrido uma oclusão. Então, como a predição está relacionada a uma pessoa já existente, passa-se ela para um vetor de pessoas ocludidas (occluded), e considerase a predição desta pessoas como o valor medido - como posição real na imagem - a ser usado para a próxima previsão. Sobras de medidas sem predições: Se não há predição para um valor medido, significa que uma nova pessoa foi identificada. Assim, cria-se uma nova pessoa que é relacionado com uma nova instância da estrutura CvConDensation, para que na próxima iteração exista uma predição para esta pessoa. Independentemente do caso em que uma pessoa tenha entrado, no final da iteração são atualizados os pesos das amostras de todas as pessoas. As amostras representam as diversas previsões do movimento feita pelo condensation e seu peso a confiança que se tem dessa predição.

56 Aplicações de filtros Por fim, aplicam-se filtros sobre os pareamentos para tratar situações específicas como: Pessoas sobrepostas: Se dois valores medidos tem distância Euclidiana menor ou igual a dez pixels, possivelmente é uma mesma pessoa que foi identificada duas vezes pelo módulo de detecção. Assim, o valor medido mais recente é excluído da análise, preservando a pessoa existente por mais tempo pois ela possui uma rota com mais pontos do que a pessoa mais recente. Pessoas ocludidas por mais de três segundos: Se uma pessoa não é identificada por três ou mais segundos, possivelmente está ocludida, e devido ao tempo que não foi detectada, a previsão desta pessoa se torna inválida. Assim, a pessoa é passada para um vetor de pessoas cujo processamento é considerado finalizado (old). Pessoas ocludidas na borda da imagem: Se uma pessoas é ocludida, ou não identificada, e está perto das bordas da imagem, quinze pixels, considera-se que esta pessoa saiu da imagem, e logo seu processamento deve ser finalizado. Assim, a pessoa é passada para o vetor old Condensation Para implementar o filtro de partículas condensation, utilizou-se a estrutura do framework OpenCV chamada CvConDensation. Esta Estrutura possui os seguintes parâmetros que devem ser configurados para sua criação: D p : dimensão do vetor de estados M p : dimensão do vetor de medidas SamplesN um: número de amostras (fichas) DynamM atr: matriz dinâmica do sistema Para iniciar-se a estrutura, também precisam ser criadas matrizes que limitam os valores máximos (upper bound) e mínimos (lower bound) das variáveis velocidade e coordenada do sistema.

57 56 A configuração da estrutura CvConDensation se deu da seguinte forma: D p = 4, pois existirão quatro graus de liberdade no sistema, dados pelas variáveis de posição (X, Y ) e as variáveis de velocidade, V x e V y. M p = 4, pois os valores que serão medidos e atualizados correspondem às variáveis do sistema. SamplesN um = 1000, com testes feitos, notou-se que o valor de mil amostras seria suficiente para conseguir uma previsão consistente no sistema sem, ao mesmo tempo, prejudicar seu desempenho de forma crítica. DynamMatr = 1 0 t t Esta configuração de matriz diz à estrutura CvConDensation que o movimento dos alvos de predição será dado pela equação de movimento retilíneo uniforme s = s 0 + V t, sendo o t dado pelo intervalo de tempo de um quadro e outro no vídeo. As seguintes escolhas foram feitas para as matrizes de valores máximos e mínimos de variáveis: upper bound = [maxw idth, maxheight, , ], os dois primeiros valores são os tamanhos máximos de largura e altura dos quadros, respectivamente; os dois últimos valores são as velocidades máximas nos eixos x e y respectivamente. Considerando a velocidade média de uma pessoa andando como 3 km/h, o que é equivalente a m/s, e sabendo que no vídeo descrito na tabela 3.2 cada lajota do chão do ambiente é quadrada e tem 2 metros de lado, e na parte central do vídeo tem lado igual a 145 pixels, pode-se calcular a velocidade /2 = px/s. Para a velocidade máxima, decidiu-se triplicar a velocidade para garantir que uma pessoa que eventualmente estivesse correndo pelo ambiente também pudesse ser rastreada. lower bound = [0, 0, , ], os dois primeiros valores são os tamanhos mínimos de largura e altura dos quadros, respectivamente; os dois últimos valores são as velocidades mínimos nos eixos x e y respectivamente. As velocidades negativas possibilitam o rastreamento de pessoas andando em sentido opostos numa mesma

58 57 direção. No momento em que uma nova pessoa é detectada, e sua medida passada para o módulo de rastreamento, uma nova estrutura CvConDensation é criada com os valores configurados como acima. Mas, para que as previsões sejam feitas, deve-se inicializar as estruturas com os valores de posição da pessoa encontrada, bem como com sua velocidade. A posição da pessoa é o valor medido pelo módulo de detecção, já as velocidades não podem ser sabidas por medições, já que é a primeira vez que a pessoa aparece no vídeo. Decidiu-se, então, atribuir o valor de velocidade de uma pessoa média andando, px/s. E para que as amostra convirjam mais rapidamente para uma previsão consistente, inicializa-se as amostras como estando todas sobre a localização atual da pessoa encontrada e com peso igual a um. A cada iteração são feitas atualizações dos pesos das amostras. A atualização é feita para todas as amostras de acordo com as expressões: P robabilidade em X = e ( 1 (valor medido em X valor de uma ficha i em X)2 )/(2 variância em X) P robabilidade em Y = e ( 1 (valor medido em Y valor de uma ficha i em Y )2 )/(2 variância em Y ) Logo, o peso final de uma amostras é dado pela multiplicação da P robabilidade em X pela P robabilidade em Y Saída Nesta seção, são descritos os submódulos que gravam os dados de saída do sistema Output O submódulo output é responsável por gravar informações referentes às pessoas detectadas e rastreadas no vídeo processado. Cada pessoa possui um identificador único e um conjunto de posições, rota, sendo cada par identificador e posição relacionado ao instante que ocorre no vídeo. As informações descritas são gravadas em arquivos de texto ou em bancos de dados. Desta forma, pelo fato da informação estar persistida, ela poderá ser acessada posteriormente para análises e construções de formas relevantes de visualização do que foi processado.

59 Apresentação Nesta seção, são descritos os submódulos que geram as formas de visualização dos dados das rotas armazenadas no banco de dados Track printer O submódulo Track printer é responsável por uma das formas de visualização dos dados que foi desenvolvida nesse projeto de formatura. Mais especificamente, a impressão das rotas de cada pessoa que foi rastreada pelo sistema. Esse módulo funciona fazendo uma consulta ao banco de dados que retorna as rotas de cada uma das pessoas. Essa informação é utilizada para imprimir em cada quadro do vídeo uma linha entre cada ponto adjacente da rota da pessoa, formando assim, um traçado para a rota da pessoa com o passar dos quadros do vídeo Heatmap creator O submódulo Heatmap creator é responsável pela outra forma de visualização dos dados que foi desenvolvida nesse projeto de formatura, pensando na visualização das áreas de um ambiente onde as pessoas passam mais tempo e dos caminhos percorridos que são mais frequentes. Para a implementação desse módulo, foi feito o uso da biblioteca desenvolvida por (JJG, 2009) para a linguagem de programação Python, que é capaz de gerar um mapa de calor para um conjunto de pontos. Para um funcionamento adequado às necessidades do projeto, alguns parâmetros foram ajustados. O primeiro deles, chamado dotsize, designa o tamanho que um ponto possui na imagem final do mapa de calor, seu valor foi ajustado de 150 para 30. O segundo parâmetro, opacity (opacidade), foi levemente alterado de 120 para 170 para que as cores do mapa de calor não ficassem tão transparentes. Por fim, para cada um dos vídeos utilizados no projeto, era entregue à biblioteca uma imagem de fundo para a sobreposição do mapa de calor, para isso, foi utilizado um quadro sem presença de pessoas.

60 59 4 EXPERIMENTOS E RESULTADOS Nesta seção são apresentados os resultados obtidos sobre os vídeo de testes apresentados na seção 3.3. Para o primeiro vídeo, são apresentados os resultados parciais obtidos após a passagem do vídeo por etapas do processo consideradas relevantes. Já para o segundo vídeo é apresentado apenas o resultado final do processamento, pois as fases intermediárias se mostraram similares. 4.1 Vídeo 1 Imagem original: Figura 4.1: Quadro original do vídeo 1 Modelo de fundo:

61 60 Figura 4.2: Modelo de fundo do vídeo 1 Resultado da subtração de Fundo: Figura 4.3: Resultado da subtração de Fundo do vídeo 1 Resultado da operação morfológica de fechamento: Figura 4.4: Resultado da operação morfológica de fechamento do vídeo 1

62 61 Resultado da operação morfológica de abertura: Figura 4.5: Resultado da operação morfológica de abertura do vídeo 1 Resultado da remoção de blobs muito pequenos: Figura 4.6: Resultado da remoção de blobs muito pequenos do vídeo 1 Resultado da suavização:

63 62 Figura 4.7: Resultado da suavizac a o do vı deo 1 Resultado da busca por cabec as (histograma): Figura 4.8: Resultado da busca por cabec as (histograma) do vı deo 1 Resultado final: Figura 4.9: Resultado final do vı deo 1 Rota impressa:

64 63 Figura 4.10: Rota impressa do vídeo 1 Mapa de calor: Figura 4.11: Mapa de calor do vídeo 1 Avaliação dos resultados: Pela imagem original do vídeo, pode-se observar características que prejudicarão o funcionamento do sistema. Uma vez que o Aleph foi desenvolvido para sistemas fechados, a variação de luz presente neste vídeo prejudica os resultados. Como o vídeo em questão tem duração curta, não houve variação considerável da luz solar. Assim sendo, a modelagem de fundo foi suficientemente eficiente para eliminar a luz refletida no chão do ambiente filmado. Para melhorar a definição dos blobs de pessoas na imagem gerada pela subtração de fundo, são aplicadas as operações morfológicas de abertura e fechamento. Podese observar, pelos resultado parciais gerados por estas operações, que a operação de fechamento não modificou relevantemente a imagem, pois os blobs não apresentavam muitos buracos internos. Já a operação de abertura, melhorou a definição dos

65 64 blobs de pessoas e eliminou certos blobs advindos do reflexo das pessoas no cha o do ambiente. Percebe-se que a eliminac a o de blobs muito pequenos na o teve grande impacto sobre a imagem, uma vez que ja na o possuı a blobs considera veis descarta veis. Assim, apo s a operac a o de suavizac a o, que modificou o contorno dos blobs, pode-se aplicar a te cnica de detecc a o de cabec as, que analisa os histogramas dos blobs para identificar os ma ximos locais, os quais indicam a presenc a de pessoas. Tambe m, pode-se ver que a previsa o fornecida pelo filtro de partı culas condensation, apresentada como um ponto verde, e condizente com a detecc a o de cabec as, pois a dista ncia Euclidiana desses pontos e pequena. O resultado final apresenta a localizac a o encontrada pelo sistema das pessoas na imagem. Apesar de alguma imprecisa o na localizac a o das pessoas, as imagens geradas pelo impressor de rotas e pelo gerador de mapas de calor sa o satisfato rias, pois permitem que seja feita uma ana lise qualitativa do movimento de pessoas no ambiente filmado, mostrando, respectivamente, as rotas de movimento de cada indivı duo, e as a reas com maior movimentac a o de pessoas. 4.2 PETS ca mera 3 Resultado final: Figura 4.12: Resultado final do vı deo PETS ca mera 3 Rota impressa:

66 65 Figura 4.13: Rota impressa do vı deo PETS ca mera 3 Mapa de calor: Figura 4.14: Mapa de calor do vı deo PETS ca mera 3 Avaliac a o dos resultados: Um ponto que difere entre o vı deo anterior e este e a presenc a de objetos mo veis juntamente com pessoas. Estes sa o identificados como blobs, uma vez que na o pertencem ao modelo de fundo da cena, e possuem ma ximos locais que, por fim, sa o identificados como cabec as, afetando o resultado final. Algo interessante neste vı deo e a parede de vidro que divide o ambiente em dois corredores. A passagem de pessoas entre o trem e esta parede fica bem caracterizada no mapa de calor como uma regia o mais colorida e avermelhada. Outro fato presente neste vı deo sa o as ocluso es que ocorrem frequ entemente,

Processo de Controle das Reposições da loja

Processo de Controle das Reposições da loja Processo de Controle das Reposições da loja Getway 2015 Processo de Reposição de Mercadorias Manual Processo de Reposição de Mercadorias. O processo de reposição de mercadorias para o Profit foi definido

Leia mais

4 Segmentação. 4.1. Algoritmo proposto

4 Segmentação. 4.1. Algoritmo proposto 4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

Morfologia Matemática Binária

Morfologia Matemática Binária Morfologia Matemática Binária Conceitos fundamentais: (Você precisa entender bem esses Pontos básicos para dominar a área! Esse será nosso game do dia!!! E nossa nota 2!!) Morfologia Matemática Binária

Leia mais

Processos de gerenciamento de projetos em um projeto

Processos de gerenciamento de projetos em um projeto Processos de gerenciamento de projetos em um projeto O gerenciamento de projetos é a aplicação de conhecimentos, habilidades, ferramentas e técnicas às atividades do projeto a fim de cumprir seus requisitos.

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Planejando o aplicativo

Planejando o aplicativo Um aplicativo do Visual FoxPro geralmente inclui um ou mais bancos de dados, um programa principal que configura o ambiente de sistema do aplicativo, além de uma interface com os usuários composta por

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

4 Arquitetura básica de um analisador de elementos de redes

4 Arquitetura básica de um analisador de elementos de redes 4 Arquitetura básica de um analisador de elementos de redes Neste capítulo é apresentado o desenvolvimento de um dispositivo analisador de redes e de elementos de redes, utilizando tecnologia FPGA. Conforme

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Departamento de Matemática - UEL - 2010. Ulysses Sodré. http://www.mat.uel.br/matessencial/ Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

Departamento de Matemática - UEL - 2010. Ulysses Sodré. http://www.mat.uel.br/matessencial/ Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010. Matemática Essencial Extremos de funções reais Departamento de Matemática - UEL - 2010 Conteúdo Ulysses Sodré http://www.mat.uel.br/matessencial/ Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001 47 5 Redes Neurais O trabalho em redes neurais artificiais, usualmente denominadas redes neurais ou RNA, tem sido motivado desde o começo pelo reconhecimento de que o cérebro humano processa informações

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

Fundamentos de Sistemas de Informação Sistemas de Informação

Fundamentos de Sistemas de Informação Sistemas de Informação Objetivo da Aula Tecnologia e as Organizações, importância dos sistemas de informação e níveis de atuação dos sistemas de informação Organizações & Tecnologia TECNOLOGIA A razão e a capacidade do homem

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

c. Técnica de Estrutura de Controle Teste do Caminho Básico

c. Técnica de Estrutura de Controle Teste do Caminho Básico 1) Defina: a. Fluxo de controle A análise de fluxo de controle é a técnica estática em que o fluxo de controle através de um programa é analisado, quer com um gráfico, quer com uma ferramenta de fluxo

Leia mais

VCA Treinamento em Algoritmo

VCA Treinamento em Algoritmo Conteúdo VCA Treinamento em Algoritmo VCA Treinamento em Algoritmo Conteúdo Algoritmos Rastreador (tracker) Monitoramento Objeto Abandonado/Removido Pessoas Calibração Classificação Linha de contagem Auto

Leia mais

2. Representação Numérica

2. Representação Numérica 2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos

Leia mais

Ivan Guilhon Mitoso Rocha. As grandezas fundamentais que serão adotadas por nós daqui em frente:

Ivan Guilhon Mitoso Rocha. As grandezas fundamentais que serão adotadas por nós daqui em frente: Rumo ao ITA Física Análise Dimensional Ivan Guilhon Mitoso Rocha A análise dimensional é um assunto básico que estuda as grandezas físicas em geral, com respeito a suas unidades de medida. Como as grandezas

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

A importância da comunicação em projetos de

A importância da comunicação em projetos de A importância da comunicação em projetos de Tecnologia da Informação (TI) Autor: Ivan Luizio R. G. Magalhães Um perigo previsto está metade evitado. Thomas Fuller Introdução Há muitos anos atrás, um bom

Leia mais

Sphinx Scanner Informações gerais V 5.1.0.8

Sphinx Scanner Informações gerais V 5.1.0.8 Sphinx Scanner Informações gerais V 5.1.0.8 Pré-requisitos: Possuir modalidade scanner no software Sphinx A SPHINX Brasil propõe uma solução de leitura automática de questionários por scanner. O Sphinx

Leia mais

Detecção e Rastreamento de Objetos coloridos em vídeo utilizando o OpenCV

Detecção e Rastreamento de Objetos coloridos em vídeo utilizando o OpenCV Detecção e Rastreamento de Objetos coloridos em vídeo utilizando o OpenCV Bruno Alberto Soares OLIVEIRA 1,3 ; Servílio Souza de ASSIS 1,3,4 ; Izadora Aparecida RAMOS 1,3,4 ; Marlon MARCON 2,3 1 Estudante

Leia mais

3 Arquitetura do Sistema

3 Arquitetura do Sistema 3 Arquitetura do Sistema Este capítulo irá descrever a arquitetura geral do sistema, justificando as decisões de implementação tomadas. Na primeira seção iremos considerar um conjunto de nós interagindo

Leia mais

UNIVERSIDADE DE SÃO PAULO. Faculdade de Arquitetura e Urbanismo

UNIVERSIDADE DE SÃO PAULO. Faculdade de Arquitetura e Urbanismo UNIVERSIDADE DE SÃO PAULO Faculdade de Arquitetura e Urbanismo DISTRIBUIÇÃO AMOSTRAL ESTIMAÇÃO AUT 516 Estatística Aplicada a Arquitetura e Urbanismo 2 DISTRIBUIÇÃO AMOSTRAL Na aula anterior analisamos

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert: BRAlarmExpert Software para Gerenciamento de Alarmes A TriSolutions conta com um produto diferenciado para gerenciamento de alarmes que é totalmente flexível e amigável. O software BRAlarmExpert é uma

Leia mais

Backup. jmcordini@hotmail.com

Backup. jmcordini@hotmail.com Backup jmcordini@hotmail.com Backups e restauração de dados Backup é uma das tarefas mais incômodas na administração de sistemas mas é sem dúvida uma das mais importantes. Backup é nossa última linha de

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de

Leia mais

PRIMAVERA RISK ANALYSIS

PRIMAVERA RISK ANALYSIS PRIMAVERA RISK ANALYSIS PRINCIPAIS RECURSOS Guia de análise de risco Verificação de programação Risco rápido em modelo Assistente de registro de riscos Registro de riscos Análise de riscos PRINCIPAIS BENEFÍCIOS

Leia mais

Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento

Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento Ramon Pereira Lopes Rangel Silva Oliveira 31 de outubro de 2011 1 Introdução O presente documento refere-se ao relatório

Leia mais

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR 6LPXODomR GH6LVWHPDV )HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR #5,6. Simulador voltado para análise de risco financeiro 3RQWRV IRUWHV Fácil de usar. Funciona integrado a ferramentas já bastante conhecidas,

Leia mais

1. Conceitos de sistemas. Conceitos da Teoria de Sistemas. Conceitos de sistemas extraídos do dicionário Aurélio:

1. Conceitos de sistemas. Conceitos da Teoria de Sistemas. Conceitos de sistemas extraídos do dicionário Aurélio: 1. Conceitos de sistemas Conceitos da Teoria de Sistemas OPTNER: É um conjunto de objetos com um determinado conjunto de relações entre seus objetos e seus atributos. TILLES: É um conjunto de partes inter-relacionadas.

Leia mais

Trabalho 2 Fundamentos de computação Gráfica

Trabalho 2 Fundamentos de computação Gráfica Trabalho 2 Fundamentos de computação Gráfica Processamento de Imagens Aluno: Renato Deris Prado Tópicos: 1- Programa em QT e C++ 2- Efeitos de processamento de imagens 1- Programa em QT e C++ Para o trabalho

Leia mais

CorelDRAW 11 1. UM PROGRAMA DE DESIGN

CorelDRAW 11 1. UM PROGRAMA DE DESIGN CorelDRAW 11 1. UM PROGRAMA DE DESIGN Com o Corel você vai trabalhar com um dos aplicativos mais usados no campo do design e da auto-edição, já que permite operar com dois tipos de gráficos (vetoriais

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas PIM PROGRAMA DE INTEGRAÇÃO COM O MERCADO GUIA DE CURSO Tecnologia em Sistemas de Informação Tecnologia em Desenvolvimento Web Tecnologia em Análise e Desenvolvimento de Sistemas Tecnologia em Sistemas

Leia mais

3. Fase de Planejamento dos Ciclos de Construção do Software

3. Fase de Planejamento dos Ciclos de Construção do Software 3. Fase de Planejamento dos Ciclos de Construção do Software A tarefa de planejar os ciclos de construção do software pode partir de diretrizes básicas. Estas diretrizes visam orientar que os ciclos de

Leia mais

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Pós-Graduação em Gerenciamento de Projetos práticas do PMI Pós-Graduação em Gerenciamento de Projetos práticas do PMI Planejamento do Gerenciamento das Comunicações (10) e das Partes Interessadas (13) PLANEJAMENTO 2 PLANEJAMENTO Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 ABRIL

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador? Backup O backup tem dois objetivos principais: Permitir a recuperação de arquivos individuais é a base do típico pedido de recuperação de arquivo: Um usuário apaga acidentalmente um arquivo e pede que

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

Módulo 4. Construindo uma solução OLAP

Módulo 4. Construindo uma solução OLAP Módulo 4. Construindo uma solução OLAP Objetivos Diferenciar as diversas formas de armazenamento Compreender o que é e como definir a porcentagem de agregação Conhecer a possibilidade da utilização de

Leia mais

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE MÓDULO 6 INTRODUÇÃO À PROBBILIDDE Quando estudamos algum fenômeno através do método estatístico, na maior parte das vezes é preciso estabelecer uma distinção entre o modelo matemático que construímos para

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

Leia mais

Manual do Visualizador NF e KEY BEST

Manual do Visualizador NF e KEY BEST Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................

Leia mais

Manual Geral do OASIS

Manual Geral do OASIS Manual Geral do OASIS SISTEMA DE GESTÃO DE DEMANDA, PROJETO E SERVIÇO DE TECNOLOGIA DA INFORMAÇÃO OASIS Introdução Esse manual tem como objetivo auxiliar aos usuários nos procedimentos de execução do sistema

Leia mais

Treinamento GVcollege Módulo Acadêmico - Pedagógico

Treinamento GVcollege Módulo Acadêmico - Pedagógico Treinamento GVcollege Módulo Acadêmico - Pedagógico 2015 GVDASA Sistemas Pedagógico 2 AVISO O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações

Leia mais

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna O que é uma planilha eletrônica? É um aplicativo que oferece recursos para manipular dados organizados em tabelas. A partir deles pode-se gerar gráficos facilitando a análise e interpretação dos dados

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

O modelo unificado de processo. O Rational Unified Process, RUP.

O modelo unificado de processo. O Rational Unified Process, RUP. Cursos: Sistemas de Informação Disciplina: Administração ADM Prof. Jarbas Avaliação: Prova B1, 5º/6º semestres Data: 27/09/2010 Nome: Gabarito RA: Assinatura: Turma: 1) Segundo as afirmações a seguir,

Leia mais

Universidade Federal de Goiás UFG Campus Catalão CAC Departamento de Engenharia de Produção. Sistemas ERP. PCP 3 - Professor Muris Lage Junior

Universidade Federal de Goiás UFG Campus Catalão CAC Departamento de Engenharia de Produção. Sistemas ERP. PCP 3 - Professor Muris Lage Junior Sistemas ERP Introdução Sucesso para algumas empresas: acessar informações de forma rápida e confiável responder eficientemente ao mercado consumidor Conseguir não é tarefa simples Isso se deve ao fato

Leia mais

SEGMENTAÇÃO DE IMAGENS EM PLACAS AUTOMOTIVAS

SEGMENTAÇÃO DE IMAGENS EM PLACAS AUTOMOTIVAS SEGMENTAÇÃO DE IMAGENS EM PLACAS AUTOMOTIVAS André Zuconelli 1 ; Manassés Ribeiro 2 1. Aluno do Curso Técnico em Informática, turma 2010, Instituto Federal Catarinense, Câmpus Videira, andre_zuconelli@hotmail.com

Leia mais

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como: Plano de Teste (resumo do documento) I Introdução Identificador do Plano de Teste Esse campo deve especificar um identificador único para reconhecimento do Plano de Teste. Pode ser inclusive um código

Leia mais

Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades. Representação Gráfica de Funções

Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades. Representação Gráfica de Funções Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades BC 0005 Bases Computacionais da Ciência Representação Gráfica de Funções Prof a Maria das Graças Bruno Marietto graca.marietto@ufabc.edu.br

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

DATA WAREHOUSE. Introdução

DATA WAREHOUSE. Introdução DATA WAREHOUSE Introdução O grande crescimento do ambiente de negócios, médias e grandes empresas armazenam também um alto volume de informações, onde que juntamente com a tecnologia da informação, a correta

Leia mais

A SEGUIR ALGUMAS DICAS PARA O DESENVOLVIMENTO DE UM PROJETO CIENTÍFICO

A SEGUIR ALGUMAS DICAS PARA O DESENVOLVIMENTO DE UM PROJETO CIENTÍFICO A SEGUIR ALGUMAS DICAS PARA O DESENVOLVIMENTO DE UM PROJETO CIENTÍFICO DESENVOLVENDO UM PROJETO 1. Pense em um tema de seu interesse ou um problema que você gostaria de resolver. 2. Obtenha um caderno

Leia mais

Correlação e Regressão Linear

Correlação e Regressão Linear Correlação e Regressão Linear A medida de correlação é o tipo de medida que se usa quando se quer saber se duas variáveis possuem algum tipo de relação, de maneira que quando uma varia a outra varia também.

Leia mais

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart. Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart. Versão 1.6 15/08/2013 Visão Resumida Data Criação 15/08/2013 Versão Documento 1.6 Projeto Responsáveis

Leia mais

Processos Técnicos - Aulas 4 e 5

Processos Técnicos - Aulas 4 e 5 Processos Técnicos - Aulas 4 e 5 Trabalho / PEM Tema: Frameworks Públicos Grupo: equipe do TCC Entrega: versão digital, 1ª semana de Abril (de 31/03 a 04/04), no e-mail do professor (rodrigues.yuri@yahoo.com.br)

Leia mais

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 3.2 O Espaço Nulo de A: Resolvendo Ax = 0 11 O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 Esta seção trata do espaço de soluções para Ax = 0. A matriz A pode ser quadrada ou retangular. Uma solução imediata

Leia mais

RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE)

RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE) DESENVOLVIMENTO DE APLICAÇÕES PARA DISPOSITIVOS MÓVEIS PARA COLETA E DISSEMINAÇÃO DE DADOS (VERSÃO CLIENTE- SERVIDOR) RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE) Victor Araújo

Leia mais

Decidir como medir cada característica. Definir as características de qualidade. Estabelecer padrões de qualidade

Decidir como medir cada característica. Definir as características de qualidade. Estabelecer padrões de qualidade Escola de Engenharia de Lorena - EEL Controle Estatístico de Processos CEP Prof. MSc. Fabrício Maciel Gomes Objetivo de um Processo Produzir um produto que satisfaça totalmente ao cliente. Conceito de

Leia mais

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica O Princípio da Complementaridade e o papel do observador na Mecânica Quântica A U L A 3 Metas da aula Descrever a experiência de interferência por uma fenda dupla com elétrons, na qual a trajetória destes

Leia mais

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente Conceito ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente O Sagres Diário é uma ferramenta que disponibiliza rotinas que facilitam a comunicação entre a comunidade Docente e Discente de uma instituição,

Leia mais

Correção Automática de Testes de Múltipla Escolha MCTest - Versão para Android

Correção Automática de Testes de Múltipla Escolha MCTest - Versão para Android Correção Automática de Testes de Múltipla Escolha MCTest - Versão para Android Francisco de Assis Zampirolli e Rodrigo Teiske China (bolsa PIBIC/UFABC) fzampirolli@ufabc.edu.br e rodrigo.china@aluno.ufabc.edu.br

Leia mais

Instalações Máquinas Equipamentos Pessoal de produção

Instalações Máquinas Equipamentos Pessoal de produção Fascículo 6 Arranjo físico e fluxo O arranjo físico (em inglês layout) de uma operação produtiva preocupa-se com o posicionamento dos recursos de transformação. Isto é, definir onde colocar: Instalações

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto.

Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto. Discussão sobre Nivelamento Baseado em Fluxo de Caixa. Item aberto na lista E-Plan Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em

Leia mais

Conforme explicado em 2.4.3, o sinal de voz x(n) às vezes é alterado com a adição de ruído r(n), resultando num sinal corrompido y(n).

Conforme explicado em 2.4.3, o sinal de voz x(n) às vezes é alterado com a adição de ruído r(n), resultando num sinal corrompido y(n). 4 Wavelet Denoising O capítulo 3 abordou a questão do ruído durante a extração dos atributos as técnicas do SSCH e do PNCC, por exemplo, extraem com mais robustez a informação da voz a partir de um sinal

Leia mais

Projeto de Sistemas I

Projeto de Sistemas I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o

Leia mais

Mídias sociais como apoio aos negócios B2C

Mídias sociais como apoio aos negócios B2C Mídias sociais como apoio aos negócios B2C A tecnologia e a informação caminham paralelas à globalização. No mercado atual é simples interagir, aproximar pessoas, expandir e aperfeiçoar os negócios dentro

Leia mais

Visão Artificial Para a Indústria. Manual do Utilizador

Visão Artificial Para a Indústria. Manual do Utilizador Visão Artificial Para a Indústria Manual do Utilizador Luis Fonseca Carvalho de Matos ( luis.matos@ua.pt ) Julho de 2007 Índice de conteúdos 1. Apresentação......1 1.Conceito de Funcionamento......1 2.

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

INF1771 - INTELIGÊNCIA ARTIFICIAL TRABALHO 2 LÓGICA

INF1771 - INTELIGÊNCIA ARTIFICIAL TRABALHO 2 LÓGICA INF1771 - INTELIGÊNCIA ARTIFICIAL TRABALHO 2 LÓGICA Descrição: Após reunir a equipe de programadores para participar do 1 Concurso Mundial de Desenvolvimento de Softwares, Barbie e seus amigos iniciaram

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

7.Conclusão e Trabalhos Futuros

7.Conclusão e Trabalhos Futuros 7.Conclusão e Trabalhos Futuros 158 7.Conclusão e Trabalhos Futuros 7.1 Conclusões Finais Neste trabalho, foram apresentados novos métodos para aceleração, otimização e gerenciamento do processo de renderização

Leia mais

3 Classificação. 3.1. Resumo do algoritmo proposto

3 Classificação. 3.1. Resumo do algoritmo proposto 3 Classificação Este capítulo apresenta primeiramente o algoritmo proposto para a classificação de áudio codificado em MPEG-1 Layer 2 em detalhes. Em seguida, são analisadas as inovações apresentadas.

Leia mais

Top Guia In.Fra: Perguntas para fazer ao seu fornecedor de CFTV

Top Guia In.Fra: Perguntas para fazer ao seu fornecedor de CFTV Top Guia In.Fra: Perguntas para fazer ao seu fornecedor de CFTV 1ª Edição (v1.4) 1 Um projeto de segurança bem feito Até pouco tempo atrás o mercado de CFTV era dividido entre fabricantes de alto custo

Leia mais

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB 18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB Autor(es) HARLEI MIGUEL DE ARRUDA LEITE Orientador(es) PLÍNIO ROBERTO SOUZA VILELA Apoio Financeiro PIBIC/CNPQ

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 28 Revisão para a Prova 2 http://www.ic.uff.br/~bianca/engsoft2/ Aula 28-28/07/2006 1 Matéria para a Prova 2 Gestão de projetos de software Conceitos (Cap. 21) Métricas (Cap.

Leia mais

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2. Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações

Leia mais

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF TUTORIAL DE DIGITALIZAÇÃO DIRIGIDO AO USO DO PROCESSO ELETRÔNICO Adaptado do tutorial elaborado pelo colega MAICON FALCÃO, operador de computador da subseção judiciária de Rio Grande. Introdução Este tutorial

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS Planificação Anual da Disciplina de TIC Módulos 1,2,3-10.ºD CURSO PROFISSIONAL DE TÉCNICO DE APOIO À GESTÃO DESPORTIVA Ano Letivo 2015-2016 Manual adotado:

Leia mais