criação de imagens e vídeos 3d com opencv
DESCRIPTION
Criação de imagens e vídeos 3D com OpenCV. Matheus Ricardo Uihara Zingarelli([email protected]). 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/2.jpg)
2
Apresentação
• Interesse da turma• Conhecimento Técnico
![Page 3: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/3.jpg)
3
Página de desambiguação
• O que esperam aprender?
![Page 4: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/4.jpg)
4
Página de desambiguação
• O que esperam aprender?
![Page 5: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/5.jpg)
5
Página de desambiguação
• O que esperam aprender?
![Page 6: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/6.jpg)
6
Página de desambiguação
• O que esperam aprender?
?
![Page 7: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/7.jpg)
7
Página de desambiguação
• O que esperam aprender?
![Page 8: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/8.jpg)
8
Página de desambiguação
• O que esperam aprender?
Animação 3D 3D estereoscópico
![Page 9: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/9.jpg)
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
![Page 10: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/10.jpg)
OPENCV 101Começando…
![Page 11: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/11.jpg)
11
OpenCV
• Material baseado no Livro de Bradski & Kaehler
![Page 12: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/12.jpg)
12
OpenCV
• O que é?• Para que serve?• Quem utiliza?• Como programo?
![Page 13: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/13.jpg)
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?
![Page 14: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/14.jpg)
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 Source sob a licença BSD
![Page 15: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/15.jpg)
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?
![Page 16: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/16.jpg)
16
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?
Objeto de interesse para o minicurso
![Page 17: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/17.jpg)
17
OpenCV – Para que serve?
Algumas funções do OpenCV (OpenCV - Wiki)
![Page 18: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/18.jpg)
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”
(OpenNet Bulletin)
• Como programo?
![Page 19: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/19.jpg)
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
![Page 20: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/20.jpg)
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
![Page 21: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/21.jpg)
CHECKPOINTDúvidas até aqui?
![Page 22: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/22.jpg)
IMAGENS: FUNÇÕES BÁSICAS
Mão na massa
![Page 23: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/23.jpg)
23
Operações
• Abrir imagem• Ler imagem• Processamento• Criar imagem
![Page 24: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/24.jpg)
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”
![Page 25: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/25.jpg)
25
cvLoadImage()
• 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,int iscolor = CV_LOAD_IMAGE_COLOR
);
Nome do arquivo com extensão
CV_LOAD_IMAGE_COLOR = coloridaCV_LOAD_IMAGE_GRAYSCALE = tons de cinza
![Page 26: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/26.jpg)
26
cvNamedWindow()
• Cria janela para mostrar imagens
int cvNamedWindow(const char* name,int flags = CV_WINDOW_AUTOSIZE
);
Nome da janela. Usado como handler para operações na janela
CV_WINDOW_AUTOSIZE = janela do tamanho da imagem0 = permite que usuário redefina o tamanho da janela
![Page 27: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/27.jpg)
27
cvShowImage()
• Ligação entre a imagem e a janela
void cvShowImage(const char* name,const CvArr* image
);
Handler da janela
Nome da variável que aponta para a imagem carregada em cvLoadImage()
![Page 28: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/28.jpg)
28
cvWaitKey()
• Aguarda interação do usuário com o teclado
int cvWaitKey(int delay = 0
);
Tempo de espera em ms. Default 0 aguarda para sempre
![Page 29: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/29.jpg)
29
Limpeza
• Liberação dos ponteiros que carregaram as estruturas
void cvReleaseImage( IplImage** img );
void cvDestroyWindow( const char* name );
![Page 30: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/30.jpg)
30
Operações
• Abrir imagem• Ler imagem• Processamento• Criar imagem
![Page 31: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/31.jpg)
CHECKPOINTDúvidas até aqui?
![Page 32: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/32.jpg)
32
IplImage• Estrutura para tratamento de imagens
typedef struct _IplImage { int nSize; int ID; int nChannels; int alphaChannel; int depth; char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplROI* roi; struct _IplImage* maskROI; void* imageId; struct _IplTileInfo* tileInfo; int imageSize; char* imageData; int widthStep; int BorderMode[4]; int BorderConst[4]; char* imageDataOrigin;} IplImage;
![Page 33: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/33.jpg)
33
IplImage• Estrutura para tratamento de imagens
typedef struct _IplImage { int nSize; int ID; int nChannels; int alphaChannel; int depth; char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplROI* roi; struct _IplImage* maskROI; void* imageId; struct _IplTileInfo* tileInfo; int imageSize; char* imageData; int widthStep; int BorderMode[4]; int BorderConst[4]; char* imageDataOrigin;} IplImage;
Número de canais
![Page 34: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/34.jpg)
34
IplImage• Estrutura para tratamento de imagens
typedef struct _IplImage { int nSize; int ID; int nChannels; int alphaChannel; int depth; char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplROI* roi; struct _IplImage* maskROI; void* imageId; struct _IplTileInfo* tileInfo; int imageSize; char* imageData; int widthStep; int BorderMode[4]; int BorderConst[4]; char* imageDataOrigin;} IplImage;
Profundidade do pixel (bits)
![Page 35: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/35.jpg)
35
IplImage• Estrutura para tratamento de imagens
typedef struct _IplImage { int nSize; int ID; int nChannels; int alphaChannel; int depth; char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplROI* roi; struct _IplImage* maskROI; void* imageId; struct _IplTileInfo* tileInfo; int imageSize; char* imageData; int widthStep; int BorderMode[4]; int BorderConst[4]; char* imageDataOrigin;} IplImage;
Ponteiro para a primeira linha de dados da imagem
![Page 36: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/36.jpg)
36
IplImage• Estrutura para tratamento de imagens
typedef struct _IplImage { int nSize; int ID; int nChannels; int alphaChannel; int depth; char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplROI* roi; struct _IplImage* maskROI; void* imageId; struct _IplTileInfo* tileInfo; int imageSize; char* imageData; int widthStep; int BorderMode[4]; int BorderConst[4]; char* imageDataOrigin;} IplImage;
Qtde de bytes entre pontos situados em uma mesma
coluna, em linhas diferentes
![Page 37: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/37.jpg)
37
Leitura
• Apenas uma matriz• Sequência de pixels B – G – R
Início da leitura (0,0)
![Page 38: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/38.jpg)
38
Leitura
• Diferentes jeitos de se fazer a leitura de dados de uma imagem
• Nosso jeito: leitura horizontal for( int row = 0; row < img->height; row++ ){ uchar* ptr = (uchar*) ( img->imageData + row * img->widthStep ); for( int col = 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 } }
![Page 39: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/39.jpg)
39
Operações
• Abrir imagem• Ler imagem• Processamento• Criar imagem
![Page 40: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/40.jpg)
40
Region Of Interest (ROI)
• bla bla
![Page 41: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/41.jpg)
CHECKPOINTDúvidas até aqui?
![Page 42: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/42.jpg)
FUNDAMENTOS 3D ESTEREOSCÓPICO
“Aqueles óculos de papel celofane…”
![Page 43: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/43.jpg)
CHECKPOINTDúvidas até aqui?
![Page 44: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/44.jpg)
CRIAÇÃO DE IMAGEM 3D ANAGLÍFICO
Projeto 1
![Page 45: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/45.jpg)
CHECKPOINTDúvidas até aqui?
![Page 46: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/46.jpg)
VÍDEOS: FUNÇÕES BÁSICAS
Mão na massa de novo
![Page 47: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/47.jpg)
CHECKPOINTDúvidas até aqui?
![Page 48: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/48.jpg)
CRIAÇÃO DE VÍDEO 3D ANAGLÍFICO
Projeto 2
![Page 49: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/49.jpg)
DÚVIDAS?Última chance!
![Page 50: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/50.jpg)
50
Referências
• Bradski, G; Kaehler, A. – Learning OpenCV: Computer Vision with the OpenCV Library. O’Reilly, 2008.
• OpenCV Wiki - http://opencv.willowgarage.com/wiki/
• OpenNet Bulletin – China’s Green Dam: The Implications of Government Control Encroaching on the Home PC. Disponível em http://opennet.net/sites/opennet.net/files/GreenDam_bulletin.pdf
![Page 51: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/51.jpg)
51
Contato
• [email protected]• http://www.icmc.usp.br/~zinga/• http://viva3d.blogspot.com/• Intermídia 6-209
![Page 52: Criação de imagens e vídeos 3D com OpenCV](https://reader036.vdocuments.net/reader036/viewer/2022062500/56815417550346895dc212cf/html5/thumbnails/52.jpg)
OBRIGADO!