1 / 52

Criação de imagens e vídeos 3D com OpenCV

Criação de imagens e vídeos 3D com OpenCV. Matheus Ricardo Uihara Zingarelli (zinga@icmc.usp.br). Apresentação. Interesse da turma Conhecimento Técnico. Página de desambiguação. O que esperam aprender?. Página de desambiguação. O que esperam aprender?. Página de desambiguação.

duante
Télécharger la présentation

Criação de imagens e vídeos 3D com OpenCV

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Criação de imagens e vídeos 3D com OpenCV Matheus Ricardo Uihara Zingarelli (zinga@icmc.usp.br)

  2. Apresentação Interesse da turma Conhecimento Técnico

  3. Página de desambiguação O que esperam aprender?

  4. Página de desambiguação O que esperam aprender?

  5. Página de desambiguação O que esperam aprender?

  6. Página de desambiguação ? O que esperam aprender?

  7. Página de desambiguação O que esperam aprender?

  8. Página de desambiguação O que esperam aprender?

  9. Agenda OpenCV 101 Imagens: funções básicas Fundamentos 3D estereoscópico Criação de imagem 3D anaglífico Vídeos: funções básicas Criação de vídeo 3D anaglífico Material de referência

  10. Começando… OpenCV 101

  11. OpenCV Material baseado no Livro de Bradski & Kaehler

  12. OpenCV O que é? Para que serve? Quem utiliza? Como programo?

  13. OpenCV O que é? “OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.” (OpenCV Wiki) Para que serve? Quem utiliza? Como programo?

  14. OpenCV – O queé? Milhares de algoritmos otimizados visando eficiência Rapidez na criação de aplicações de visão computacional → reuso Origem nos laboratórios da Intel Open Sourcesob a licença BSD

  15. OpenCV • O que é? • Para que serve? • Muita coisa • Processamento de imagens, calibração de câmeras, monitoramento, rastreamento, reconhecimento facial/gestos, análise de imagens médicas, segmentação, Kinect, ... • Quem utiliza? • Como programo?

  16. OpenCV Objeto de interesse para o minicurso • O que é? • Para que serve? • Muita coisa • Processamento de imagens, calibração de câmeras, monitoramento, rastreamento, reconhecimento facial/gestos, análise de imagens médicas, segmentação, Kinect, ... • Quem utiliza? • Como programo?

  17. OpenCV – Para que serve? Algumas funções do OpenCV (OpenCV - Wiki)

  18. OpenCV • O que é? • Para que serve? • Quem utiliza? • Muitas empresas • Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota, Applied Minds, VideoSurf, Zeitera,… • Governos • Green Dam da China “The purported intent of the Green Dam software is to filter harmful online text and image content in order to prevent the effects of this information on youth and promote a healthy and harmonious Internet environment” (OpenNetBulletin) • Como programo?

  19. OpenCV • O que é? • Para que serve? • Quem utiliza? • Como programo? • C, C++, Python • Em desenvolvimento: Java, Ruby, Matlab e outros times paralelos • Windows, Linux, Android, Mac

  20. OpenCV – Como Programo? • Download do OpenCV • http://sourceforge.net/projects/opencvlibrary • Wiki • Guias para compilar/instalar • Documentação (http://opencv.itseez.com/) • Referência para funções • Livros • Instalação para o minicurso • OpenCV 2.1 • Codeblocks 10.05 • Tutorial utilizado

  21. Dúvidasaté aqui? Checkpoint

  22. Mão na massa Imagens: funções básicas

  23. Operações Abrir imagem Ler imagem Processamento Criar imagem

  24. HighGUI • Toolkit para funções de user interface • Estrutura para trabalhar com imagens e vídeos • Criação de janelas, sliders, botões • Tratamento de eventos de mouse, teclado include “highgui.h”

  25. cvLoadImage() Nome do arquivocom extensão CV_LOAD_IMAGE_COLOR = colorida CV_LOAD_IMAGE_GRAYSCALE = tons de cinza • Função para abrir imagens em disco • Aloca memória e armazena a imagem em uma estrutura apropriada • BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS e TIFF → não suporta gif! IplImage* cvLoadImage( const char* filename, intiscolor= CV_LOAD_IMAGE_COLOR );

  26. cvNamedWindow() Nome da janela. Usado como handler para operações na janela CV_WINDOW_AUTOSIZE = janela do tamanho da imagem 0 = permite que usuário redefina o tamanho da janela • Cria janela para mostrar imagens intcvNamedWindow( const char* name, intflags = CV_WINDOW_AUTOSIZE );

  27. cvShowImage() Handler da janela Nome da variável que aponta para a imagem carregada em cvLoadImage() • Ligação entre a imagem e a janela voidcvShowImage( const char* name, constCvArr* image );

  28. cvWaitKey() Tempo de espera em ms. Default 0 aguarda para sempre • Aguarda interação do usuário com o teclado intcvWaitKey( intdelay = 0 );

  29. Limpeza • Liberação dos ponteiros que carregaram as estruturas voidcvReleaseImage( IplImage** img ); voidcvDestroyWindow( const char* name );

  30. Operações Abrir imagem Ler imagem Processamento Criar imagem

  31. Dúvidas até aqui? Checkpoint

  32. IplImage • Estrutura para tratamento de imagens typedefstruct_IplImage { intnSize; int ID; intnChannels; intalphaChannel; intdepth; charcolorModel[4]; charchannelSeq[4]; intdataOrder; intorigin; intalign; intwidth; intheight; struct_IplROI* roi; struct_IplImage* maskROI; void* imageId; struct_IplTileInfo* tileInfo; intimageSize; char* imageData; intwidthStep; intBorderMode[4]; intBorderConst[4]; char* imageDataOrigin; } IplImage;

  33. IplImage Número de canais • Estrutura para tratamento de imagens typedefstruct_IplImage { intnSize; int ID; intnChannels; intalphaChannel; intdepth; charcolorModel[4]; charchannelSeq[4]; intdataOrder; intorigin; intalign; intwidth; intheight; struct_IplROI* roi; struct_IplImage* maskROI; void* imageId; struct_IplTileInfo* tileInfo; intimageSize; char* imageData; intwidthStep; intBorderMode[4]; intBorderConst[4]; char* imageDataOrigin; } IplImage;

  34. IplImage Profundidade do pixel (bits) • Estrutura para tratamento de imagens typedefstruct_IplImage { intnSize; int ID; intnChannels; intalphaChannel; intdepth; charcolorModel[4]; charchannelSeq[4]; intdataOrder; intorigin; intalign; intwidth; intheight; struct_IplROI* roi; struct_IplImage* maskROI; void* imageId; struct_IplTileInfo* tileInfo; intimageSize; char* imageData; intwidthStep; intBorderMode[4]; intBorderConst[4]; char* imageDataOrigin; } IplImage;

  35. IplImage Ponteiro para a primeira linha de dados da imagem • Estrutura para tratamento de imagens typedefstruct_IplImage { intnSize; int ID; intnChannels; intalphaChannel; intdepth; charcolorModel[4]; charchannelSeq[4]; intdataOrder; intorigin; intalign; intwidth; intheight; struct_IplROI* roi; struct_IplImage* maskROI; void* imageId; struct_IplTileInfo* tileInfo; intimageSize; char* imageData; intwidthStep; intBorderMode[4]; intBorderConst[4]; char* imageDataOrigin; } IplImage;

  36. IplImage Qtde de bytes entre pontos situados em uma mesma coluna, em linhas diferentes • Estrutura para tratamento de imagens typedefstruct_IplImage { intnSize; int ID; intnChannels; intalphaChannel; intdepth; charcolorModel[4]; charchannelSeq[4]; intdataOrder; intorigin; intalign; intwidth; intheight; struct_IplROI* roi; struct_IplImage* maskROI; void* imageId; struct_IplTileInfo* tileInfo; intimageSize; char* imageData; intwidthStep; intBorderMode[4]; intBorderConst[4]; char* imageDataOrigin; } IplImage;

  37. Leitura Início da leitura (0,0) Apenas uma matriz Sequência de pixels B – G – R

  38. Leitura Diferentesjeitos de se fazer a leitura de dados de umaimagem Nossojeito: leitura horizontal for( introw = 0; row < img->height; row++ ){ uchar* ptr = (uchar*) ( img->imageData + row* img->widthStep ); for( intcol = 0; col < img->width; col++ ) { printf( “%d ”, ptr[3*col] ); //acessa componente azul B printf( “%d ”, ptr[3*col+1] ); //acessa componente verde G printf( “%d\n”, ptr[3*col+2] ); //acessa componente vermelha R } }

  39. Operações Abrir imagem Ler imagem Processamento Criar imagem

  40. RegionOfInterest (ROI) bla bla

  41. Dúvidas até aqui? Checkpoint

  42. “Aqueles óculos de papel celofane…” Fundamentos 3D estereoscópico

  43. Dúvidas até aqui? Checkpoint

  44. Projeto 1 Criação de imagem 3D anaglífico

  45. Dúvidas até aqui? Checkpoint

  46. Mão na massa de novo Vídeos: funções básicas

  47. Dúvidas até aqui? Checkpoint

  48. Projeto 2 Criação de vídeo 3D anaglífico

  49. Última chance! Dúvidas?

  50. Referências Bradski, G; Kaehler, A. – Learning OpenCV: Computer Vision withthe OpenCV Library. O’Reilly, 2008. OpenCV Wiki - http://opencv.willowgarage.com/wiki/ OpenNetBulletin – China’s Green Dam: The ImplicationsofGovernmentControlEncroachingonthe Home PC. Disponível em http://opennet.net/sites/opennet.net/files/GreenDam_bulletin.pdf

More Related