1 / 105

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.

ayala
Download Presentation

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. Exercício 01 Abrirumaimagem e mostrarnatela

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

  32. Dúvidas até aqui? Checkpoint

  33. 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;

  34. 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;

  35. 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;

  36. 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;

  37. 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;

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

  39. 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 } }

  40. Exercício 02 Abrir uma imagem e imprimir dados de cor RGB na tela

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

  42. Dúvidas até aqui? Checkpoint

  43. CV • Funções de processamento de imagens, análise de dados de imagens, reconhecimento de padrões, calibração de câmera, etc. include “cv.h”

  44. cvCvtColor() CV_BGR2GRAY, CV_BGR2HSV, CV_BGR2YCrCb, … Conversão de espaço de cores Imagens devem possuir mesmo número de canais e tipo de dados voidcvCvtColor( constCvArr* src, CvArr* dst, intcode );

  45. Exercício 03 Abrir imagem Realizar alguma conversão na imagem Mostrar a imagem original e a convertida em janelas diferentes

  46. RegionOfInterest (ROI) • CvRectcvRect( • intx, • int y, • intwidth, • intheight • ); • “Máscara” • Processamento de partes específicas de uma imagem • Região retangular voidcvSetImageROI( IplImage* image, CvRectrect ); voidcvResetImageROI( IplImage* image);

  47. Exercício 04 Abrir imagem Cortá-la ao meio (verticalmente) Exibir cada metade em uma janela diferente

  48. Outros tipos de processamento Suavização Realce Redimensionamento … (ver Cap. 5 Bradski & Kaehler)

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

  50. Dúvidas até aqui? Checkpoint

More Related