Introdução à visão computacional utilizando software livre
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Introdução à visão computacional utilizando software livre

  • 9,128 views
Uploaded on

Esta é a palestra Introdução à visão computacional apresentada na Campus Party 2009 Brasil, dia 21/01/2009, 11:00 no espaço BarCamp.

Esta é a palestra Introdução à visão computacional apresentada na Campus Party 2009 Brasil, dia 21/01/2009, 11:00 no espaço BarCamp.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
9,128
On Slideshare
9,106
From Embeds
22
Number of Embeds
1

Actions

Shares
Downloads
241
Comments
0
Likes
6

Embeds 22

http://www.slideshare.net 22

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. Introdução à visão computacional utilizando software livre Msc. Mauro Carlos Pichiliani (pichilia@ita.br)
  • 2. Roteiro
    • Introdução à Visão Computacional
    • A biblioteca OpenCV
    • Demos
    • Exemplos: Usabilidade
    • Exemplos: Vigilância
    • Exemplos: Entretenimento
    • Exemplos: Realidade aumentada
    • Exemplos: Robótica
    • Conclusão
  • 3.
    • Sub-área da computação gráfica
    • Máquinas que enxergam
    • Manipulação de imagem e vídeo
    • Envolve detecção, reconhecimento, aprendizado e restauração
    • Utilizada em várias áreas
    Introdução à Visão Computacional
  • 4. Visão Computacional - Fluxo Aquisição de imagem Pré-processamento Detecção e segmentação Processamento de alto nível Extração de características
  • 5. Biblioteca OpenCV
    • Open Source Computer Vision Library
    • Criada pela Intel (Intel License Agreement – quase GPL)
    • Usos: Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM);  and Mobile Robotics.
    • Alta performance de processamento
    • Trabalha com imagens, vídeo, webcam e outros dispositivos
    • Originalmente em C, mas há ports para Java e C#
    • Linux/Windows/Max OS
    • Intel: http://www.intel.com/technology/computing/opencv/index.htm
    • SF: http://sourceforge.net/projects/opencvlibrary/ ? abmode =1
  • 6. Dispositivos
    • Câmeras USB e FireWire:
      • Qualquer câmera Windows Compatible
      • Qualquer câmera compatível com o Mac OS
      • Linux: http://www.linux-usb.org/ e http://www.qbik.ch/usb/devices/
      • É preciso dos drivers
    • Imagens (compactadas ou não)
    • Arquivos de vídeo (depende do codec)
    • Placas de captura de vídeo
    • Câmeras de dispositivos móveis (celulares e smartphones)
    • Considerar Precisão x Qualidade do dispositivo
  • 7. Demo 1: Hello Word com OpenCV #include <cv.h> #include <highgui.h> int main ( int argc, char **argv ) { // Cria a janela cvNamedWindow( “MinhaJanela&quot;, 1 ); // Cria a imagem IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 ); CvFont font; double hScale = 1.0; double vScale = 1.0; int lineWidth = 1; cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC, hScale, vScale, 0, lineWidth ); // Seta a fonte cvPutText( img, &quot;Hello World!&quot;, cvPoint( 200, 400 ), &font, cvScalar( 255, 255, 0 ) ); // Escreve o Hello Word cvShowImage( &quot;My Window&quot;, img ); // Coloca a imagem na janela cvWaitKey(); // Aguarda Tecla return 0; }
  • 8. Demo 2: Capturando vídeo #include &quot;cv.h&quot; #include &quot;highgui.h&quot; #include <stdio.h> int main() { CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY ); // Captura da câmera if( !capture ) { fprintf( stderr, &quot;ERROR: capture is NULL &quot; ); getchar(); return -1; } cvNamedWindow( &quot;mywindow&quot;, CV_WINDOW_AUTOSIZE ); //Joga em uma janela while( 1 ) { // Loop infino para continuar capturando o vídeo IplImage* frame = cvQueryFrame( capture ); // Obtém um frame if( !frame ) { fprintf( stderr, &quot;ERROR: frame is null... &quot; ); getchar(); break; } cvShowImage( &quot;mywindow&quot;, frame ); // Mostra a imagem if( (cvWaitKey(10) & 255) == 27 ) break; // Espera um caracter do teclado } cvReleaseCapture( &capture ); // Libera o vídeo cvDestroyWindow( &quot;mywindow&quot; ); // Libera a janela return 0; }
  • 9. Demo 3: Detecção objetos/Face #include <cv.h> #include <highgui.h> #include <math.h> int main(int argc, char** argv) { IplImage* img; if( argc == 2 && (img=cvLoadImage(argv[1], 1))!= 0) { IplImage* gray = cvCreateImage( cvGetSize(img), 8, 1 ); // Cria a imagem CvMemStorage* storage = cvCreateMemStorage(0); cvCvtColor( img, gray, CV_BGR2GRAY ); cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); // Branco e preto // Detecta os círculos! CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, gray->height/4, 200, 100 ); for( int i = 0; i < circles->total; i++ ) { float* p = (float*)cvGetSeqElem( circles, i ); cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); } cvNamedWindow( &quot;circles&quot;, 1 ); cvShowImage( &quot;circles&quot;, img ); } return 0; }
  • 10. Exemplos: Usabilidade (1)
    • Detecção da face para movimentação do mouse:
  • 11. Exemplos: Usabilidade (2)
    • Rastreamento ocular para movimentação do mouse:
  • 12. Exemplos: Usabilidade (3)
    • Movimentação do mouse com palma da mão:
  • 13. Exemplos: Usabilidade (4)
    • Teclado virtual (Minority Report):
  • 14. Exemplos: Vigilância (1)
    • Rastreamento de pessoas/objetos:
  • 15. Exemplos: Vigilância (2)
    • Rastreamento de veículos/estrada:
  • 16. Exemplos: Entretenimento (1)
    • DJ Virtual:
  • 17. Exemplos: Entretenimento (2)
    • Jogos!
  • 18. Exemplos: Entretenimento (3)
    • Playstation Eye
  • 19. Exemplos: Entretenimento (4)
    • Bateria Virtual - Virtual Drums
  • 20. Exemplos: Realidade Aumentada (1)
    • Jogo de naves
  • 21. Exemplos: Realidade Aumentada (2)
    • Exemplo de R.A. com câmera de smartphone
  • 22. Exemplos: Robótica
    • Área que provavelmente mais utiliza Visão Computacional
    • Exemplos:
  • 23. Conclusão
    • OpenCV: excelente biblioteca livre para visão computacional
    • Alguns reconhecimentos são complexos. É possível criar novos reconhecedores
    • Existem bibliotecas específicas para certas funções (Realidade Aumentada, Realidade Virtual, Chroma Key, Robótica, etc)
    • Depende da precisão do dispositivo (câmera)
    • Várias aplicações em diversas áreas
    • Forte comunidade de desenvolvedores e ótima documentação
    • A imaginação é o limite
  • 24. Obrigado!
    • Perguntas?
    • E-mail: [email_address]
    • Download do OpenCV:
    • Intel:
    • http://www.intel.com/technology/computing/opencv/index.htm
    • Source Forge:
    • http ://sourceforge.net/projects/opencvlibrary/?abmode=1
    • Mais exemplos?
  • 25. Mais exemplos Aplicação de exemplo de deteção de elementos em movimento http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx Descobrir distâncias curtas com uma WebCam e uma apontador laser: http://www.pages.drexel.edu/~twd25/webcam_laser_ranger.html Leitor de código de barras com uma WebCam: http://www.vivaolinux.com.br/artigo/Zebra-Barcode-Reader-Lendo-codigo-de-barras-com-a-sua-Webcam-no-Linux/ Exemplos de projetos gerais que envolvem uma WebCam http://www.raphnet.net/divers/webcam/webcam_en.php