Top Banner
1 Introdução à visão computacional utilizando software livre Msc. Mauro Carlos Pichiliani ([email protected])
25

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

Jun 27, 2015

Download

Technology

pichiliani

Esta é a palestra Introdução à visão computacional apresentada na Campus Party 2009 Brasil, dia 21/01/2009, 11:00 no espaço BarCamp.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introdução à visão computacional utilizando software livre

1

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

Msc. Mauro Carlos Pichiliani ([email protected])

Page 2: Introdução à visão computacional utilizando software livre

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

Page 3: Introdução à visão computacional utilizando software livre

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

Page 4: Introdução à visão computacional utilizando software livre

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

Page 5: Introdução à visão computacional utilizando software livre

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

Page 6: Introdução à visão computacional utilizando software livre

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

Page 7: Introdução à visão computacional utilizando software livre

7

Demo 1: Hello Word com OpenCV#include <cv.h>#include <highgui.h>

int main ( int argc, char **argv ){ // Cria a janela cvNamedWindow( “MinhaJanela", 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, "Hello World!", cvPoint( 200, 400 ), &font, cvScalar( 255, 255, 0 ) ); // Escreve o Hello Word cvShowImage( "My Window", img ); // Coloca a imagem na janela cvWaitKey(); // Aguarda Tecla return 0;}

Page 8: Introdução à visão computacional utilizando software livre

8

Demo 2: Capturando vídeo#include "cv.h"#include "highgui.h"#include <stdio.h>

int main() { CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY ); // Captura da câmera

if( !capture ) { fprintf( stderr, "ERROR: capture is NULL \n" ); getchar(); return -1; }

cvNamedWindow( "mywindow", 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, "ERROR: frame is null...\n" ); getchar(); break; }

cvShowImage( "mywindow", frame ); // Mostra a imagem

if( (cvWaitKey(10) & 255) == 27 ) break; // Espera um caracter do teclado }

cvReleaseCapture( &capture ); // Libera o vídeo cvDestroyWindow( "mywindow" ); // Libera a janela return 0;}

Page 9: Introdução à visão computacional utilizando software livre

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( "circles", 1 ); cvShowImage( "circles", img ); } return 0;}

Page 10: Introdução à visão computacional utilizando software livre

10

Exemplos: Usabilidade (1)

Detecção da face para movimentação do mouse:

Page 11: Introdução à visão computacional utilizando software livre

11

Exemplos: Usabilidade (2)

Rastreamento ocular para movimentação do mouse:

Page 12: Introdução à visão computacional utilizando software livre

12

Exemplos: Usabilidade (3)

Movimentação do mouse com palma da mão:

Page 13: Introdução à visão computacional utilizando software livre

13

Exemplos: Usabilidade (4)

Teclado virtual (Minority Report):

Page 14: Introdução à visão computacional utilizando software livre

14

Exemplos: Vigilância (1)

Rastreamento de pessoas/objetos:

Page 15: Introdução à visão computacional utilizando software livre

15

Exemplos: Vigilância (2)

Rastreamento de veículos/estrada:

Page 16: Introdução à visão computacional utilizando software livre

16

Exemplos: Entretenimento (1)

DJ Virtual:

Page 17: Introdução à visão computacional utilizando software livre

17

Exemplos: Entretenimento (2) Jogos!

Page 18: Introdução à visão computacional utilizando software livre

18

Exemplos: Entretenimento (3) Playstation Eye

Page 19: Introdução à visão computacional utilizando software livre

19

Exemplos: Entretenimento (4) Bateria Virtual - Virtual Drums

Page 20: Introdução à visão computacional utilizando software livre

20

Exemplos: Realidade Aumentada (1) Jogo de naves

Page 21: Introdução à visão computacional utilizando software livre

21

Exemplos: Realidade Aumentada (2) Exemplo de R.A. com câmera de smartphone

Page 22: Introdução à visão computacional utilizando software livre

22

Exemplos: Robótica Área que provavelmente mais utiliza Visão Computacional Exemplos:

Page 23: Introdução à visão computacional utilizando software livre

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

Page 24: Introdução à visão computacional utilizando software livre

24

Obrigado!

Perguntas? E-mail: [email protected] Download do OpenCV: Intel: http://www.intel.com/technology/computing/opencv/index.htm Source Forge: http://sourceforge.net/projects/opencvlibrary/?abmode=1

Mais exemplos?

Page 25: Introdução à visão computacional utilizando software livre

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 WebCamhttp://www.raphnet.net/divers/webcam/webcam_en.php