Este documento discute processamento de imagem em GPU usando OpenGL. Ele explica como usar a GPU para processamento de imagem é mais rápido do que usar apenas a CPU, mostrando ganhos de velocidade de até 9x. Também discute como implementar processamento de imagem básico usando shaders OpenGL na GPU.
1. Processamento de
Imagem em GPU
com OpenGL
Prof. André Márcio de Lima Curvello
contato@andrecurvello.com.br
2. 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
5. Processamento de Imagens
◈ Modificar as informações contidas numa imagem sob
vários aspectos, de modo que o resultado seja uma
imagem ou informações extraídas dela.
9. 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.
21. 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.
24. Observação!
Recuperação de dados – Read Back
Fonte: http://vgl-ait.orgFonte: http://vgl-ait.org
• glReadPixels()
• FrameBuffer
• OpenCV – Mat
• Flip
25. Observação!
Recuperação de dados – Read Back
2,1x
3,6x
3,8x
4,21x
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
320x240 640x480 800x600 1280x720
GANHO
RESOLUÇÃO
Ganho de Desempenho Total com GPU com OpenGL VS CPU com
OpenCV
26. Ganho de 9xOperando Diretamente em GPU
Real - 4x
Considerando a Recuperação do Quadro de imagem
da GPU!
Desempenho?
27. 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)
29. 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?
30.
31. Demonstração
Raspberry Pi 2 com LapDock usando a Raspberry Pi Camera Board
Acesso a GPU com drivers da Broadcom