tdc2016sp - trilha linux embarcado
TRANSCRIPT
![Page 2: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/3.jpg)
“Computação não se
relaciona mais a
computadores.
Relaciona-se a viver.
Nicholas Negroponte
![Page 4: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/4.jpg)
Processamento de
Imagens
Vamos ver do que se trataE por quê isso é importante…
1
![Page 5: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/6.jpg)
Visão Computacional
◈ Análise de imagens e vídeos a fim de obterresultados similares àqueles dos humanos.
![Page 7: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/7.jpg)
Fluxo do Processo
![Page 8: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/8.jpg)
Mercado
Dispositivos com interação visual!
![Page 9: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/10.jpg)
DESAFIO
![Page 11: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/11.jpg)
Usando a GPUUm parceiro de peso!
![Page 12: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/12.jpg)
Inspiração
![Page 13: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/15.jpg)
Abordagem Tradicional
Usando
somente
CPU!
![Page 16: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/16.jpg)
Abordagem Tradicional
![Page 17: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/19.jpg)
GPU Vivante GC2000
◈ GC2000: OpenGL ES / OpenCL / OpenCL EP 1.1◈ GC355: OpenVG◈ GC320: Composition
![Page 20: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/20.jpg)
Modelo
Fonte: http://homepages.inf.ed.ac.uk
• 320x240
• 640x480
• 800x600
• 1280x720
![Page 21: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/22.jpg)
Execução
OpenCV – CPU
OpenGL - GPU
![Page 23: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/26.jpg)
Ganho de 9xOperando Diretamente em GPU
Real - 4xConsiderando a Recuperação do Quadro de imagem da GPU!
Desempenho?
![Page 27: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/30.jpg)
![Page 31: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/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: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/32.jpg)
Obrigado!
Perguntas?
![Page 33: TDC2016SP - Trilha Linux Embarcado](https://reader033.vdocuments.net/reader033/viewer/2022042723/587992ff1a28ab95318b5ee3/html5/thumbnails/33.jpg)
Contato
@andremlcurvello
http://youtube.com/profandrecurvello
http://andrecurvello.com.br
http://facebook.com/profandrecurvello