“Vídeo Vigilância– Abordagem Open-Source”
Alunos: Justino Santos, Paulo Neto E-mail: [email protected], [email protected] Orientadores: Prof. Filipe Neves, Prof. Paulo Costa Escola Superior de Tecnologia e Gestão de Leiria Instituto Politécnico de Leiria Morro do Lena, Alto Vieiro · Apart. 4163·2401 – 951 Leiria Tel.: +351·244 820 300 · Fax.: +351·244 820 310 E-mail: [email protected] · http://www.estg.iplei.pt
I. Enquadramento
O projecto “Vídeo-Vigilância” consiste no desenvolvimento de um sistema de vigilância que possa ser utilizado em ambiente residencial de modo a que este possa ser utilizado por quem possua um PC e uma ou mais webcams. A aplicação permite detectar e anunciar possíveis intrusões. Se for detectado movimento (existência de variação da cor dos pixels entre duas imagens consecutivas) é enviado, por exemplo, uma mensagem de aviso para um determinado telemóvel. A aplicação permite armazenar em base de dados a informação acerca dos dispositivos utilizados e as detecções de intrusão que poderão ser consultadas através de uma página web.
II. Motivação
Nos dias de hoje, as pessoas carecem de uma sensação de segurança junto do que as rodeiam, isto é nas suas residências e empresas levando-as a desejar e a instalar soluções de vigilância. Assim procuram encontrar a melhor solução que se adeqúe ao que é pretendido.
No mercado a oferta de soluções deste género já é grande, e devido à crescente procura deste tipo de sistemas, existem enumeras empresas especializadas no seu desenvolvimento, tanto a nível de software
como de hardware. No entanto, associadas a estes existem algumas desvantagens, tais como o facto de estas serem de carácter proprietário, visto necessitarem de hardware específico, e de possuírem sempre algumas limitações.
O Projecto “Sistema de Vídeo- Vigilância”, vem tentar contrariar esta tendência, isto porque o seu desenvolvimento se baseia numa abordagem “Open Source”.
O motivo que nos levou a escolher este projecto ambicioso foi, por um lado a vontade de realizar uma aplicação que possa ser útil e colocada em prática, e por outro, a crescente utilização deste tipo de sistemas na nossa sociedade.
III. Objectivos
Existem actualmente no mercado sistemas mais ou menos complexos de Vídeo- Vigilância, alguns deles assentando no uso de máquinas dedicadas e câmaras proprietárias.
Este tipo de soluções apresenta custos consideráveis. Com este projecto pretende-se desenvolver um sistema de Vídeo-Vigilância possível de ser utilizado em ambiente residencial, a quem baste possuir um PC e uma ou mais webcams.
Em caso de intrusão, a aplicação deve permitir gravar as imagens de vários dispositivos webcam ligados a uma interface USB.
Sob o ponto de vista da utilização o sistema deverá permitir:
• Visualizar na aplicação as capturas de todas as webcams disponíveis;
• Gravar imagens no formato JPEG, sempre com indicação da data e hora na própria imagem;
• Implementar serviço de visualização via web para visionamento de todas as webcams e intrusões existentes;
• Utilizar critérios de pesquisa de imagens (por nome e data) gravadas para serem visualizadas;
• Desencadear alarmes em situações de intrusão;
• Contemplar o envio de SMS para um determinado telemóvel em situações de alarme;
IV. Especificações do Sistema
O sistema é constituído essencialmente por três módulos: Aplicação de Monitorização, Base de Dados e Página Web.
O primeiro módulo tem como objectivo detectar e controlar todas as webcams disponíveis no Sistema Operativo, administrar a base de dados e conectar com o modem GSM. Este permite a monitorização, a detecção de intrusão e o desencadeamento de alarmes. No caso de intrusão é possível lançar um alarme sonoro e enviar um SMS de aviso para um telemóvel predefinido. Ainda é possível ao utilizador configurar determinados parâmetros, como as configurações de cada webcam, a percentagem de detecção de movimento, o
intervalo de envio de SMS, entre outros. A aplicação armazena numa Base de Dados a informação acerca dos dispositivos utilizados e as detecções de movimento, que posteriormente poderão ser consultadas através de uma Página Web.
Usando este sistema, o utilizador poderá ter o controlo total, desde a interactividade com a aplicação de monitorização até à posterior visualização de informação gerada por esta.
A grande vantagem deste sistema é que mesmo sendo uma solução segura é ao mesmo tempo mais económica, visto não ser necessário estar obrigado à subscrição de um programa específico.
V. Desenvolvimento da Aplicação de Monitorização
A aplicação de monitorização foi toda desenvolvida em Java. Como requisito consideramos que esta pretende ser o mais simples e objectiva possível, para que o utilizador não sinta qualquer tipo de dificuldades no seu uso.
A. Interface Gráfica (GUI)
A GUI da Aplicação de Monitorização permite ao utilizador todo o controlo do sistema. No lado esquerdo da interface gráfica é possível monitorizar as imagens capturadas pelas webcams (Painel de Visualização) e no lado direito é permitido ao utilizador visualizar e modificar enumeras configurações (Painel de Configuração).
Aplicação de Monitorização Página Web
Figura 1 – Arquitectura do Sistema
Figura 2 – Aplicação de Monitorização
No Painel de Visualização são visíveis todas as imagens capturadas pelas webcams em funcionamento. Desta forma, é possível monitorizá-las em tempo real e verificar a existência de intrusos. Este painel é dividido consoante o número de webcams existentes de modo a visualizar em simultâneo os vários snapshots realizados.
O Painel de Configuração permite quase todas as configurações do sistema. Neste, existe a possibilidade de alterar parâmetros relacionados com as webcams, o servidor de base de dados e os alarmes. Este painel encontra-se dividido em três “tabs”
(Webcams, Base de Dados e Alarmes) de modo a facilitar e a simplificar ao utilizador a sua compreensão.
Para além destes dois painéis existe uma janela de Configurações Avançadas onde podem ser configurados parâmetros específicos do sistema, desde os comandos a executar pelos botões, à identificação da porta série, assim como o destino de ficheiros.
B. Captura de Imagem
A nossa primeira abordagem ao projecto foi fazer a captura de vídeo através das streams de vídeo. Cada webcam gera uma stream com ‘x’ frames por segundo (fps) e o código de detecção compara as diferenças entre as duas frames consecutivas. No entanto, apercebemo-nos que o processamento exigido, para executar a
detecção de movimento era elevado para apenas uma webcam, o que se traduziria num problema quando usássemos várias em simultâneo. Logo enveredamos por uma segunda abordagem.
A segunda abordagem é mais cuidada, pois tem em conta o processamento necessário para a detecção de movimento em várias webcams em simultâneo (cada uma é controlada por uma thread). Abandonámos as streams e começamos a usar o seguinte conceito: apenas se acede à webcam quando necessário, todo o resto do tempo está em standby. Só é capturada uma frame de cada vez. Com este conceito, o processamento exigido à máquina para executar a aplicação passou a ser insignificante, pois é possível definir para cada webcam o tempo de intervalo entre cada snapshot. Neste snapshot é apenas capturada uma frame que fica armazenada num buffer.
C. API “Java Media Framework”
A API “Java Media Framework” (JMF) é constituída por uma arquitectura e um protocolo capaz de gerir a aquisição, o processamento e a visualização de multimédia (vídeo e/ou áudio). Esta permite a manipulação de dispositivos multimédia, tais como: placas de som e vídeo, transmissões RTP para aplicações “video-on-demand” e controlo de webcams USB. Outra grande vantagem é o facto de ser suportada pelos Sistemas Operativos Windows e Linux.
O JMF detecta e reconhece todos os dispositivos multimédia instalados no Sistema Operativo. Após a fase de reconhecimento é
Figura 3 – Configurações Avançadas
Figura 4 – Modelo de Processamento Multimédia
atribuído a cada dispositivo um identificador único gerado através do URL do próprio dispositivo. Com esta referência podemos aceder e controlar o mesmo.
O JMF interage com o Sistema Operativo Linux dando acesso aos dispositivos multimédia. Neste SO esta interacção é feita através da API V4L, que acede ao driver do dispositivo, que por sua vez acede ao próprio dispositivo. No entanto, o V4L na Aplicação de Monitorização é completamente transparente, pois a nível do programador, apenas é necessário controlar a API JMF.
Sendo assim, a Aplicação de Monitorização apenas interage com a API JMF.
D. Inicialização do Player JMF
Para a aplicação iniciar a captura é criado um Player responsável pelo controlo de cada webcam.
Posteriormente o objecto
“BufferToImage” é inicializado com a informação do formato de vídeo de uma frame. Cada vez que a webcam faz um snapshot, a frame capturada é guardada num
“buffer” para apenas ser analisada pelo algoritmo de detecção de movimento.
E. Detecção dos dispositivos (Webcams) Os dispositivos instalados no sistema operativo são descobertos pela API JMF através do método “getDeviceList” da classe
“CaptureDeviceManager”.
A classe “CaptureDeviceManager”
fornece o acesso à lista de dispositivos instalados no sistema operativo. Utiliza o registo do SO e os mecanismos de consulta para localizar e devolver os periféricos disponíveis.
F. Interacção com a Base de Dados
A API “MySQL Connector” é um driver nativo do Java que converte as chamadas geradas por JDBC (“Java Data Base Connectivity”) no protocolo de rede que utiliza a base de dados “MySql”. Permite que na linguagem Java possamos interagir com a base de dados, de forma a fazermos as conexões necessárias para inserções e consultas de dados armazenadas no SGBD
“MySql”.
G. Comunicação com o modem GSM
Para que seja possível enviar mensagens de texto é necessário a comunicação entre a porta série do computador e um modem GSM (telemóvel). Nesta conexão é usada a API
“Java Communication”
que permite estabelecer uma ligação através de um “socket”. Depois de feita a ligação, o envio e a recepção de instruções são realizados através de Comandos AT. Com estes podemos aceder e modificar o estado de todas as funções e parâmetros do telemóvel.
O modo escolhido para enviar SMS foi o formato PDU. A mensagem no formato PDU é codificada e não contém apenas o texto pretendido, mas inúmeras outras informações sobre o emissor que enviou a mensagem, o centro de mensagens, data de envio, a codificação, entre outros.
VI. Base de Dados
Decidiu-se criar a base de dados em SQL, pois para além de ser uma linguagem bastante conhecida e utilizada, serve os nossos interesses. Como é uma linguagem suportada por vários SGBDs (Oracle, MySql, Access, etc) decidimos optar pelo “MySql” por ser multi-plataforma e “free”.
Figura 5 – Modelo do JMF Player
Figura 6 – Siemens C55
A. Identificação de entidades
De seguida, são identificadas e descritas as entidades consideradas necessárias ao Sistema de Informação.
Na entidade “login” são guardados todos os utilizadores com permissão de acesso à Página Web. O acesso à página é limitado ao número de utilizadores existentes nesta.
A entidade “camara” permite armazenar todas as webcams existentes no sistema de Vídeo-Vigilância. Desta forma conhecem-se todas as webcams que estão permanentemente ligadas.
Todas as capturas de movimento registadas pelas webcams são guardadas na entidade “captura”. Desta forma, é possível aos utilizadores consultarem estas capturas de forma permanente e actualizada.
VII. Página Web
A Página Web é desenvolvida em PHP, HTML e JavaScript. Esta página será uma aplicação dinâmica tanto no cliente usando JavaScript, como no servidor usando o PHP.
Para que um utilizador possa aceder à página web, é necessário que este faça a devida autenticação.
A. Visualização das “Webcams”
É possível visualizar todas as webcams que eventualmente foram utilizadas na Aplicação de Monitorização, no entanto, nesta aplicação é considerada uma nova webcam de cada vez que o seu nome for diferente. Assim, é possível conhecer todas as webcams e ordenar de forma crescente ou decrescente
todos os registos, segundo o id, o endereço, o nome ou a resolução. Através do nome do dispositivo consegue-se aceder às respectivas capturas de movimento.
B. Visualização das “Capturas de Movimento”
Todas as intrusões detectadas na Aplicação de Monitorização são armazenadas para que posteriormente possam ser consultadas. Estas também podem ser ordenadas crescentemente ou decrescentemente segundo determinados critérios.
É permitido a qualquer utilizador pesquisar as capturas de movimento existentes. Podem ser efectuadas pesquisas pelos seguintes critérios: endereço ou nome da webcam, por data ou intervalo de data das intrusões. Estes métodos facilitam aos utilizadores a procura de capturas que eventualmente pretendam consultar.
Ainda é possível visualizar de forma detalhada cada captura de movimento.
Figura 7 – Página Web