Detecção de Movimento - Criação de instrumento musical

  • 281 views
Uploaded on

Este é o trabalho da disciplina de Interacção Máquina e Pessoa.

Este é o trabalho da disciplina de Interacção Máquina e Pessoa.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
281
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Detecção de Movimento - Criação de instrumentomusicalAristidis Ornai1,Emanuel Santos2,Luís Pereira4,Patrício Fernandes31Universidade de Évoram6463@alunos.uevora.pt2Universidade de Évoram7565@alunos.uevora.pt3Universidade de Évoram8302@alunos.uevora.pt4Universidade de Évoram8279@alunos.uevora.ptResumo Já tocou algum instrumento musical? E alguma vez pensou emtocar um instrumento musical sem ele estar fisicamente presente? Pareceimpossível mas na verdade não é. Com este artigo pretendemos mos-trar as inúmeras funcionalidades que é possível desenvolver com apenasuma webcam. neste artigo iremos mostrar como transformar uma web-cam num instrumento musical, através da captura de movimentos de umutilizador.Keywords. Motion Detection, Webcam, Intrumentos Musicais, Inter-faces, Imagem1 IntroduçãoUma "webcam"é uma câmara de vídeo que produz imagem em tempo realpara um computador, por via USB, ethernet ou Wi-Fi.O desenvolvimento da primeira "webcam"realizou-se na Universidade deCambridge, no departamento de Informática em 1991. A primeira imagem cap-turada pela webcam foi então a famosa "Trojan Room coffee pot"(Figura 1).Este café foi a inspiração para o desenvolvimento da webcam. Após dez anosesta câmara foi finalmente desligada no dia 22 de Agosto de 2001, onde a últimaimagem capturada é o momento em que a própria é desligada (Figura 2).A primeira webcam comercializada foi a "QuickCam", em 1994. Foi produ-zida pela empresa Connectix, que depois a vendeu-a à Logitech, em 1998. Estacâmara apenas produzia imagens com resolução 320x240 pixéis, a 60 fps (framesper second) em escala de cinza.
  • 2. 2 Aristidis Ornai1,Emanuel Santos2,Luís Pereira4,Patrício Fernandes3Figura 1. Primeira imagem capturada pela primeira webcam2 WebCam Motion"WebCam Motion"é um termo usado para descrever o processo de capturade movimento com a webcam, traduzindo esse processo para um modelo digital.Este processo é usado no dia-a-dia em operações militares, entretenimento, emvários desportos e até em aplicações médicas. É também usado em visão compu-tacional e robótica. No entanto, a área que mais utiliza a captura de movimentosé sem dúvida o cinema.3 Motion Capture"Motion Capture"(ou captura de movimentos) é o processo de converter elec-tronicamente os movimentos de uma pessoa para uma base de dados digital. Estabase de dados é depois usada para produzir gráficos de animações em filmes, jo-gos ou mesmo outras aplicações. Como esta captura deriva de movimentos deuma pessoa real, as animações em filmes (Figura 3) e jogos são cada vez maisrealistas e feitas cada vez mais de um modo automático.A "Facial Motion Capture"(ou captura de movimentos faciais) funciona demodo idêntico à captura dos movimentos do resto do corpo, mas apresenta umdesafio maior á necessidade de utilizar equipamento com maior resolução. Istodeve-se ao facto de existir um enorme número de expressões faciais possíveis deesquematizar. É também necessário que o equipamento consiga capturar peque-nos movimentos feitos por exemplo, pelos lábios ou pelos olhos. Uma simplesmovimentação dos lábios pode diferenciar o estado emocional de uma pessoa, seestá contente, triste, séria, etc.
  • 3. Detecção de Movimento - Criação de instrumento musical 3Figura 2. Última imagem a ser capturada: a Webcam a ser desligada, em 20014 Motion Detection4.1 MotionsrcExistem várias abordagens sobre captura de movimentos numa webcam atra-vés de stream de vídeo contínuo. Todas elas são baseadas na comparação entreo frame actual do vídeo e o frame anterior ou entre uma imagem previamenteestabelecida no início do streaming, que é chamada de imagem de referência.O programa "Motion_src"foi desenvolvido na plataforma AForge.NET, emque a linguagem C# foi a utilizada para ser programado. A aplicação suportavários tipos de formato de vídeo, tais como AVI (para vídeos no Windows),MJPEG (ou Motion JPEG) e qualquer formato da webcam local (do própriocomputador ou ligada por USB).4.2 AlgoritmoUma das abordagens mais utilizadas para a detecção de movimento é com-parar o frame actual com um frame de referência. O modo de funcionamentodesta abordagem é feito através da comparação pixel a pixel.Consideremos uma imagem como um eixo de coordenadas XY. Cada pixel vaiser comparado com o pixel da frame de referência que esteja na mesma posição.Por exemplo: se quisermos comparar o pixel da posição (5,20), este vai ser com-parado com o pixel da posição (5,20) da frame de referência. Esta abordagem émuito útil em termos de compressão de vídeo pois apenas é necessário estimar ospixéis diferentes e escrever apenas as diferenças, não sendo necessário escrever oframe totalmente de novo.
  • 4. 4 Aristidis Ornai1,Emanuel Santos2,Luís Pereira4,Patrício Fernandes3Figura 3. Exemplo de um "Motion Capture". Criação de uma personagem no filmeLord of The Rings4.3 FuncionamentoO "motion_src"assume logo no início do programa uma imagem RGB 24bppque é denominada como a imagem actual (image) e uma cópia em escala cinza(currentFrame) e tem também uma frame de vídeo que é considerada como aframe de referência também em escala cinza(backgroundFrame). Depois consi-dera dois filtros (Difference , Threshold) que servem como filtros para consideraras regiões de pixéis que contém diferenças.// create filtersDifference differenceFilter = new Difference( );IFilter thresholdFilter = new Threshold( 15 );// set backgroud frame as an overlay for difference filter
  • 5. Detecção de Movimento - Criação de instrumento musical 5differenceFilter.OverlayImage = backgroundFrame;// apply the filtersBitmap tmp1 = differenceFilter.Apply( currentFrame );Bitmap tmp2 = thresholdFilter.Apply( tmp1 );A maior parte das câmaras produzem "ruído"nas imagens, o que faz com queo programa assuma que existiu movimento numa região onde na realidade nãoexistiu. Para minimizar o ruído, o programa utiliza outro filtro (Erosion filter).Assim é possível conseguir apenas as zonas onde existe realmente movimento.// create filterIFilter erosionFilter = new Erosion( );// apply the filterBitmap tmp3 = erosionFilter.Apply( tmp2 );Para que o utilizador perceba onde existe movimento, o programa "pinta"aregião de vermelho onde existe movimento. Assim o output produzido por esteprograma é a imagem actual, com a zona onde existiu movimento contornada avermelho.A aplicação permite quatro tipos de captura de movimentos:– "MouseDetector1" (Figura 4): Este tipo de captura é considerado o stan-dard da captura de movimentos. Respeitando os filtros implementados, elecaptura todos os movimentos existentes e pinta de vermelho a área ondeocorreu movimento.– "MouseDetector2" (Figura 5):Uma das principais desvantagens do sis-tema de captura anterior, é de que ao fazer a comparação da frame actualcom a frame anterior, se alguém se mover lentamente, a área de movimentocapturada é muito reduzida ou até nula. Assim, apesar de existir movimento,este não é capturado. Este sistema permite combater essa falha, fazendo acomparação entre o frame actual e um frame inicialmente guardado, a quechamamos o frame de referência. O filtro, ao ser iniciado, captura uma ima-gem inicial que supõe ser a imagem default. Assim o sistema consegue retertoda a área de movimento, independentemente da velocidade do movimento.– "MouseDetector3" (Figura 6): Apesar de conseguir superar o problemados movimentos lentos, o processo anterior requer uma enorme quantidadede recursos. Isto implica um atraso no processo de cálculo da captura daregião de movimento e, por consequente, um atraso no retorno da imagemproduzida pela aplicação. Assim um utilizador apenas vê a imagem repro-duzida naquele momento alguns segundos depois.O sistema 3 utiliza o mesmo método de captura do anterior, no entanto édiferente na forma como trata a imagem. Neste caso, o sistema transforma
  • 6. 6 Aristidis Ornai1,Emanuel Santos2,Luís Pereira4,Patrício Fernandes3Figura 4. Exemplo de MouseDetector1a zona de captura de movimento em formas geométricas. Isto permite a uti-lização de menos recursos, o que torna o processo mais rápido e eficiente.– "MouseDetector4" (Figura 7): Este tipo de captura é em tudo idênticoà anterior no que toca à captura de movimento, no entanto a forma comoeste é retornado é diferente. Ao capturar a zona de movimento, o sistemaretorna uma forma rectangular em torno da zona capturada. É uma técnicaque permite ao utilizador reconhecer fácilmente qualquer tipo de objecto quese está a mover. Um exemplo prático para o uso desta técnica de captura éa leitura do tráfego numa estrada, onde o sistema captura rapidamente umaviatura que se movimente na mesma. Este método permite ainda a execuçãoem conjunto de outras aplicações para fazer tratamento de resultados.5 Piano PlayerO "Piano Player"é um pequeno programa implementado no nosso projecto.Trata-se da parte esperimental do nosso projecto, sendo este constituído por ummini-piano, onde cada tecla corresponde a uma nota musical.Através de um processo que será explicado mais á frente, cada uma das teclaspoderá ser selecionada sempre que o utilizador entra com um ponteiro dentrodesta, fazendo com que esta emita um som. Isto permite que o utilizador possa"tocar"piano através do movimento capturado pela webcam.
  • 7. Detecção de Movimento - Criação de instrumento musical 7Figura 5. Exemplo de MouseDetector25.1 Escolha da linguagemPara efectuar este trabalho fizemos uma pesquisa por várias ferramentas elinguagens que nos permitiriam o auxilio na detecção de movimentos. Encontra-mos então duas opções que nos pareceram viáveis: da Java Media Framework(JMF) que possui um conjunto de bibliotecas em Java que nos permitem cap-turar imagem da webcam e sobre a qual encontramos um projecto com algunsalgoritmos implementados, ou a utilização da linguagem C# utilizando um dosalgoritmos implementados no projecto motion_detection e tratando a informa-ção obtida por estes de modo a construir o piano.Devido a problemas na configuração do JMF, optamos pela utilização dalinguagem C#.5.2 ImplementaçãoPara a implementação da nossa aplicação, escolhemos a utilização do al-goritmo motion4 presente no projecto anteriormente referido. A escolha destealgoritmo deve-se sobretudo á maior facilidade de manipulação do output rece-bido pelo mesmo.Para entender a nossa implementação é necessário entender a estrutura doalgoritmo motion4 a um nível mais profundo. Neste algoritmo temos que é nosdevolvido após a análise de cada frame um conjunto de rectângulos que indicam
  • 8. 8 Aristidis Ornai1,Emanuel Santos2,Luís Pereira4,Patrício Fernandes3Figura 6. Exemplo de MouseDetector3os pontos que se movimentaram, isto é, os pontos que foram alterados em relaçãoà frame de referência. Uma alteração que fizemos por forma a diminuir o ruído,foi não só limitar o número de pontos como também o tamanho dos mesmos.Posteriormente criámos um rectângulo que irá representar um ponteiro. Esteponteiro será utilizado do mesmo modo que um ponteiro de rato. Após o uti-lizador conseguir o seu controlo movendo a sua mão dentro dele durante unssegundos, este irá seguir a sua não.Para a criação das teclas utilizamos também rectângulos com um contornovermelho ao longo do ecrã e que quando o ponteiro entra numa delas será emi-tido um som.Após o desenho das teclas, decidimos então estruturar o funcionamento donosso algoritmo da seguinte forma:1. Desenhar o ponteiro (rectângulo branco do lado direito do ecrã);2. Desenhar as teclas (rectângulos com contorno vermelho ao longo do ecrã);3. Se o ponteiro ainda não está a seguir a nossa mão:– Se um dos rectângulos intersecta o ponteiro, vamos incrementar uma va-riável com o número de vezes que isso acontece;– Se o número de vezes que um rectângulo intersectou o ponteiro for maiorque dez, então, vamos definir o ponteiro como sendo esse rectângulo e oponteiro passa a seguir o rectângulo que se encontra mais parecido a esse;4. Caso contrário:
  • 9. Detecção de Movimento - Criação de instrumento musical 9Figura 7. Exemplo de MouseDetector4– Obtem a posição do array de rectângulos no qual está o rectângulo maispróximo do ponteiro na frame anteriormente analisada e define o novo pon-teiro como sendo esse rectângulo;– Se o ponteiro estiver a intersectar uma parte significativa de uma tecla eesta não tiver sido intersectada na frame de referência vamos emitir um som;– Se o ponteiro na frame anterior intersectou uma tecla e agora não a estáa intersectar então vamos indicar que a tecla já não está a ser intersectada;– Se o ponteiro estiver a intersectar uma parte significativa de uma teclae esta tiver sido intersectada na frame de referência, não fazemos nada, demodo a apenas ser emitido um som quando o ponteiro que estava fora datecla entrar na tecla;De modo a que seja possível emitir o som correspondente a cada tecla, foi ne-cessário obter um conjunto de ficheiros de som correspondente a nota musical.5.3 Testes efectuados e resultadosEfectuamos vários testes quer no desenvolvimento do nosso projecto, querapós o mesmo para verificarmos o desempenho da nossa aplicação. Assim, veri-ficamos alguns aspectos importantes.Antes de mais é de referir que apesar das tentativas de diminuição do ruídona imagem, num ambiente não controlado este acaba por ser grande o que por
  • 10. 10 Aristidis Ornai1,Emanuel Santos2,Luís Pereira4,Patrício Fernandes3vezes poderá comprometer o bom desempenho do programa. No entanto, tendoalgus cuidados, como ter uma parede por trás onde nada se move ou uma folhabranca e interagindo com o programa utilizando apenas um dedo ou uma canetaou ponteiro, o programa tem um desempenho aceitável.6 Estado da ArteExistem actualmente várias áreas que utilizam aplicações com recurso ao usoda detecção de movimento por webcam. Na pesquisa que efectuamos encontra-mos vários desses exemplos, sendo uns para efeitos mais experimentais e científi-cos, outros para aplicações lúdicas e outros ainda com uma aplicação funcional.Assim, na nossa opinião um dos melhores programas para detecção de movi-mento foi aquele que Martin Tosas apresenta na sua tese de doutoramento deno-minada "Visual Articulated Hand Tracking for Interactive Surfaces"que visa aimplementação de uma interface utilizando "hand-tracking"denominada de VTS(Visual Touch Screen), a qual é baseada num algoritmo proposto por Blake eIsard em 1998.A terceira versão do VTS encontra-se actualmente em desenvolvimento.É ainda de referir que existe um conjunto de ferramentas que podem auxiliaro desenvolvimento deste tipo de aplicações, entre as quais o JMF que se tratade um conjunto de bibliotecas em Java que permite a interacção com conteúdomultimédia (som e imagem). Em C# existe também um vasto conjunto de bibli-otecas que nos permitem a interacção com a webcam e o tratamento de imageme som.No entanto, ainda há muito trabalho a ser feito, por forma não só a facilitaro desenvolvimento deste tipo de aplicações e da instalação das frameworks ne-cessárias para o desenvolvimento das mesmas, como também de criar aplicaçõesque sejam úteis aos utilizadores.7 ConclusãoApós o desenvolvimento do nosso trabalho, após a análise do mesmo e dastecnologias a ele associado, podemos obter algumas conclusões que consideramosimportantes:– A interacção pessoa-máquina através do uso da detecção de movimentos ébastante atractiva e pode trazer para o utilizador uma maior facilidade nautilização das aplicações e até uma maior motivação para o uso das mesmas.Assim, têm surgido várias aplicações deste género quer a nível de jogos,robótica, entre outros;– Outra área no qual a detecção de movimentos pela webcam pode ser útil éna inclusão digital de pessoas com dificuldades de movimentos como é o casode tetraplégicos. Para tal, foi desenvolvida uma aplicação, o HeadMouse, que
  • 11. Detecção de Movimento - Criação de instrumento musical 11permite que estes interajam com o computador através dos movimentos dosolhos;– A aplicação da detecção de movimentos na construção de instrumentos mu-sicais virtuais é algo não muito visto mas que no entanto parece ser algointeressante e que poderá ser utilizado para efeitos não só lúdicos comotambém de aprendizagem desses mesmos instrumentos através duma formadivertida e estimulante de aprender;– Consideramos ainda que um dos aspectos mais complexos na detecção demovimentos é o tratamento do ruído. Este foi como já referimos anterior-mente um dos pontos mais complicados de tratar no nosso projecto e o qualnão conseguimos tratar na sua totalidade. Assim, consideramos que um dosaspectos principais a melhorar é a diminuição do ruído possivelmente atravésda aplicação de algum algoritmo mais eficiente para esse fim;– Apesar de ainda existirem aspectos que podem ser melhorados pensamosque em geral os objectivos foram cumpridos na medida em que conseguimosimplementar uma interface que permite a interacção através da webcam comteclas virtual.Referências1. Lejos vision system. http://homepage.ntlworld.com/lawrie.griffiths/vision.html, (Acedido a 13 de Julho de 2011)2. Breve, F.: Inteligência de enxames. http://en.wikipedia.org/wiki/Motion_capture (2007), (Acedido a 13 de Julho de 2011)3. Kirillov, A.: Motion detection algorithms. http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx (Mar 2007), (Acedido a 13 de Julho de 2011)4. Lavrsen, K.: Motion web. http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome (Feb 2011), (Acedido a 13 de Julho de 2011)5. Rzeszutek, K.: Motion detection - java + jmf. http://www.darnok.org/programming/motion-detection/, (Acedido a 13 de Julho de 2011)6. Tomasevic, P.: Versatile webcam c# library. http://www.codeproject.com/KB/miscctrl/webcam_c_sharp.aspx (Nov 2010), (Acedido a 13 de Julho de 2011)7. Tosas, M.: Visual articulated hand tracking for interactive surfaces. http://www.mtosas.net/thesis.pdf (2006), (Acedido a 13 de Julho de 2011)8. Wikipedia: Webcam. http://en.wikipedia.org/wiki/Webcam (Jul 2011), (Acedidoa 13 de Julho de 2011)