tdc2016 - processamento de imagem em gpu com opengl
TRANSCRIPT
![Page 2: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/2.jpg)
Sobre mim
André Márcio de Lima Curvello◈ Engenheiro de Computação – USP São Carlos◈ MBA em Gestão de TI - UNIFRAN◈ Mestrado em Processamento de Sinais e Instrumentação – USP São
Carlos◈ Articulista do Portal Embarcados
![Page 3: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/3.jpg)
“Computação não se
relaciona mais a
computadores.
Relaciona-se a viver.
Nicholas Negroponte
![Page 4: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/4.jpg)
Processamento de
Imagens
Vamos ver do que se trataE por quê isso é importante…
1
![Page 5: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/5.jpg)
Processamento de Imagens◈ Modificar as informações contidas numa imagem sob
vários aspectos, de modo que o resultado seja umaimagem ou informações extraídas dela.
![Page 6: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/6.jpg)
Visão Computacional
◈ Análise de imagens e vídeos a fim de obterresultados similares àqueles dos humanos.
![Page 7: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/7.jpg)
Fluxo do Processo
![Page 8: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/8.jpg)
Mercado
Dispositivos com interação visual!
![Page 9: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/9.jpg)
OpenCV◈ Biblioteca de Processamento de Imagens e de visão
computacional◈ Código aberto◈ Grande gama de funções implementadas◈ C, C++, Java, Python e outras.◈ Estrutura modular◈ Interface gráfica◈ Processamento de imagens◈ Processamento de vídeo◈ Dentre outras.
![Page 10: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/10.jpg)
DESAFIO
![Page 11: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/11.jpg)
Usando a GPUUm parceiro de peso!
![Page 12: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/12.jpg)
Inspiração
![Page 13: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/13.jpg)
◈ Conjunto de Rotinas para Computação Gráfica
◈ Sistemas Embarcados◈ Execução na GPU◈ Programas⬥ Vertex Shader⬥ Fragment Shader
OpenGL ES 2.0
![Page 15: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/15.jpg)
Abordagem Tradicional
Usando
somente
CPU!
![Page 16: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/16.jpg)
Abordagem Tradicional
![Page 17: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/17.jpg)
Usando a GPU com OpenGL ES 2.0
Fonte: www.apple.com
Como tratar a imagem?
• Cubo
• Textura
• Shaders
![Page 18: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/18.jpg)
WandBoard Quad◈ SoC i.MX6Q◈ Quatro núcleos ARM Cortex-A9 - 1,2 GHz◈ 2 GB de memória RAM◈ GPU Vivante GC2000
▸ Driver Vivante GC2000 - GAL
![Page 19: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/19.jpg)
GPU Vivante GC2000
◈ GC2000: OpenGL ES / OpenCL / OpenCL EP 1.1◈ GC355: OpenVG◈ GC320: Composition
![Page 20: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/20.jpg)
Modelo
Fonte: http://homepages.inf.ed.ac.uk
• 320x240
• 640x480
• 800x600
• 1280x720
![Page 21: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/21.jpg)
Medida de Tempo
◈getTickCount - OpenCV⬥Retorna o número de pulsos de operação (ticks)
◈getTickFrequency - OpenCV⬥Retorna o número de pulsos de operação (ticks) do sistema em segundos.
![Page 22: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/22.jpg)
Execução
OpenCV – CPU
OpenGL - GPU
![Page 23: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/23.jpg)
Resultados?
2,44x
6,16x
7,2x
9,45x
0
1
2
3
4
5
6
7
8
9
10
320x240 640x480 800x600 1280x720
GA
NH
O
RESOLUÇÃO
Ganho de Desempenho com OpenGL em GPU vs OpenCV em CPU
![Page 24: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/24.jpg)
Observação!
Recuperação de dados – Read Back
Fonte: http://vgl-ait.orgFonte: http://vgl-ait.org
• glReadPixels()
• FrameBuffer
• OpenCV – Mat
• Flip
![Page 25: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/25.jpg)
Observação!
Recuperação de dados – Read Back
2,1x
3,6x3,8x
4,21x
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
320x240 640x480 800x600 1280x720
GA
NH
O
RESOLUÇÃO
Ganho de Desempenho Total com GPU com OpenGL VS CPU com OpenCV
![Page 26: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/26.jpg)
Ganho de 9xOperando Diretamente em GPU
Real - 4xConsiderando a Recuperação do Quadro de imagem da GPU!
Desempenho?
![Page 27: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/27.jpg)
OpenGL - 670 linhas◈ Inicialização de OpenGL◈ Compilação e loading de Shaders◈ Operação direta em GPU
OpenCV - 70 linhas◈ Uso de Bibliotecas Prontas – OpenCV◈ Execução na CPU (+NEON)
![Page 29: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/29.jpg)
Pouca documentação sobre Processamento de Imagens em GPU
Application Note 4629 da Freescale
Resultados podem ser aprimorados…?
Técnica de recuperação dos quadros da GPU
Programação da GPU via Shaders
Podem ser aplicados mais filtros!
Dependência de Drivers para acesso a recursos da GPU via OpenGL!
Ponto a ser observado na plataforma-alvo
Fabricante disponibiliza drivers?
![Page 30: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/30.jpg)
![Page 31: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/31.jpg)
Demonstração
Raspberry Pi 2 com LapDock usando a Raspberry Pi Camera Board
Acesso a GPU com drivers da Broadcom
![Page 32: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/32.jpg)
Obrigado!
Perguntas?
![Page 33: TDC2016 - Processamento de Imagem em GPU com OpenGL](https://reader031.vdocuments.mx/reader031/viewer/2022031922/58a16f6e1a28ab04278b4925/html5/thumbnails/33.jpg)
Contato
@andremlcurvello
http://youtube.com/profandrecurvello
http://andrecurvello.com.br
http://facebook.com/profandrecurvello