SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Visão Computacional
2/32
Qual a diferença ?
Visão Computacional ou Processamento de Imagens ?
Visão Computacional
• Ciência e Tecnologia de como as máquinas “enxergam”
• Detecção
• Identificação
• Reconhecimento 
• Inteligência Artificial e Aprendizagem de Máquina (ML)
• Aplicações
• Biometria:  Reconhecimento de face, íris e digitais
• Trânsito: Reconhecimento de placas, vias e sinais de trânsito
• Indústria: Classificação de objetos e padrões (forma, tamanho, cor) 
• Etc...
Visão Computacional
Processamento de Imagens
• Manipulação de dados mínimos da imagem (pixels)
• Conversão do espaço de cor
• Escalonamento e Rotação
• Recorte de áreas de interesse
• Ajuste de Contraste, Brilho e Equalização de Histograma
• Aplicações
• Segmentação de imagem baseada em cor, histograma, fundo, etc..
• Filtros baseados em morfologia matemática (erosão, dilatação, abertura e fechamento) 
• Filtro de ruídos (passa alta e passa baixa = detecção de borda/suavização)
• Processamento de Imagem é um bloco essencial dentro da Visão Computacional como 
um todo.
Processamento de Imagens
Conversão de espaço de cor
Filtro passa baixa / passa alta
Segmentação de regiões Morfologia Matemática – Dilatação e Erosão
Processamento de Imagens
Entrada
(base de dados ou
câmera)
Entrada
(base de dados ou
câmera)
Pré-processamento
(Processamento de
Imagem)
Pré-processamento
(Processamento de
Imagem)
Extração de
Características
(formas, contornos,
ROIs)
Extração de
Características
(formas, contornos,
ROIs)
Pós-Processamento
(interface de usuário
com informações
úteis da solução)
Pós-Processamento
(interface de usuário
com informações
úteis da solução)
Solução do Problema
(detecção,
reconhecimento,
classificação, etc..)
Solução do Problema
(detecção,
reconhecimento,
classificação, etc..)
Biblioteca para Visão Computacional
Existe alguma ferramenta ou biblioteca realmente boa para trabalhar com visão 
computacional e processamento de imagens ?
• SIM !!! OpenCV ! E muitas outras,  mas OpenCV (Open Computer Vision Library) é a mais 
usada atualmente.
• Gratuita tanto para uso educacional quanto comercial (exceto para alguns modelos de dados 
já treinados por terceiros, nesse caso, licenças especiais são necessárias para uso comercial)
• OpenCV é multiplataforma, o que significa que o mesmo código pode ser compilado sem 
alterações para Desktop: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD, e 
Embarcados: Linux, Android, iOS,  Maemo, Blackberry 10.
Principais características da OpenCV
• Código Aberto sob a licença BSD (gratuita tanto para uso acadêmico e comercial)
• Linguagens de programação suportadas: C/C++, Python and Java
• Eficiência Computacional e com forte foco em aplicações RT.
• Escrita em C/C++ otimizado e com vantagem do use de processamento multi‐core se habilitado (Multi 
Threading – TBB)
• Aceleração de Hardware (OpenCL, OpenVX)
• Grande suporte pela comunidade (47+K users)
Estrutura da OpenCV (Módulos Principais)
• cv – Funcionalidade básica
• imgproc – Processamento de Imagens
• videoio – Mídia I/O
• Highgui – Interface de usuário de alto nível (display output, keyboard/mouse input, etc..)
• features2D – framework para extração de características 2D
• Objdetect – Detecção de objeto
• ml – Machine Learning
OpenCV – Aplicação HelloWorld
Processador Multimídia i.MX6Q 
i.MX6Q: Aceleração de HW em CV
• Aceleração com GPU utilizando OpenCL (Open Compute Language) e 
OpenVX
• OpenCL 2.0 (Full Profile) é necessária para aceleração interna da OpenCV (pode 
haver problemas de performance devido a otimizações específicas de hardware). 
Não disponível no i.MX6Q
• OpenCL 1.x (Embedded Profile): é recomendado que você crie seus próprios kernels 
de OpenCL otimizados para processar os buffers da OpenCV, dessa forma extraindo o 
máximo de eficiência e performance
i.MX6Q – Suporte de OpenCL
• Open Computing Language (OpenCL) é um framework para escrita de programas que 
executam em de plataformas heterogêneas, consistindo de CPUs, GPUs, DSPs, FPGs e 
outros processadores
• OpenCL inclui uma linguagem baseada em C99 para escrita de Kernels (funções que 
rodam no dispositivo com OpenCL), e APIs para definicões e controle das plataformas.
• OpenCL provê computação paralela baseada em paralelismo de processamento de 
dados e tarefas.
• OpenCL é um padrão aberto mantido pelo consórcio de tecnologia sem fins lucrativos
Khronos Group, que já foi adotada pela Apple, Intel, Qualcomm, Advanced Micro 
Devices (AMD), Nvidia, Altera, Samsung, Vivante e ARM Holdings.
i.MX6Q: OpenCL + OpenCV
2D CL Kernel
Global Workgroup[2] =
{cvMat().width,
cvMat().height}
Size_2d =
globalWorkgroup[0] *
globalWorkgroup[1]
clEnqueueWrite/Read
(..., size_2d,
cvMat().data)
i.MX6Q: exemplo de OpenCL + OpenCV
i.MX6Q: Tutorial sobre OpenCL
• https://www.embarcados.com.br/imx6qd‐opencl‐embedded‐profile/
Demo – Rastreamento de objetos utilizando
CAMshift
Filtro Gaussiano
Se habilitado
Captura de
Imagem pela
Câmera
Inicialização da
porta Serial
Inicializacão das
variáveis do
CAMShift
Janela de
rastreamento
ajustada ?
Saída para o
display
Imagem para
debug (overlay)
Controle do
motor
STOP - RUN
Calcular o
CAMShift
Calcular o centro
da imagem e do
centro do objeto
Atualizar as
variáveis de
controle
Resultado
Contato
www.sightvision.com.br
https://www.linkedin.com/company/sightvision/
https://www.linkedin.com/in/‐andre‐silva/
andre@sightvision.com.br
Obrigado
22/32

Mais conteúdo relacionado

Mais de Embarcados

Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfEmbarcados
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosEmbarcados
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCEmbarcados
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraEmbarcados
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectEmbarcados
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalEmbarcados
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Embarcados
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Embarcados
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CEmbarcados
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GEmbarcados
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsEmbarcados
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Embarcados
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores MurataEmbarcados
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaEmbarcados
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Embarcados
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezEmbarcados
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Embarcados
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroEmbarcados
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Embarcados
 
Webinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de caboWebinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de caboEmbarcados
 

Mais de Embarcados (20)

Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdf
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes Passivos
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DC
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP segura
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto Project
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissional
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2G
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores Murata
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 
Webinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de caboWebinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de cabo
 

Visao computacional em sistemas embarcados - Andre Silva

  • 4. Visão Computacional • Ciência e Tecnologia de como as máquinas “enxergam” • Detecção • Identificação • Reconhecimento  • Inteligência Artificial e Aprendizagem de Máquina (ML) • Aplicações • Biometria:  Reconhecimento de face, íris e digitais • Trânsito: Reconhecimento de placas, vias e sinais de trânsito • Indústria: Classificação de objetos e padrões (forma, tamanho, cor)  • Etc...
  • 6. Processamento de Imagens • Manipulação de dados mínimos da imagem (pixels) • Conversão do espaço de cor • Escalonamento e Rotação • Recorte de áreas de interesse • Ajuste de Contraste, Brilho e Equalização de Histograma • Aplicações • Segmentação de imagem baseada em cor, histograma, fundo, etc.. • Filtros baseados em morfologia matemática (erosão, dilatação, abertura e fechamento)  • Filtro de ruídos (passa alta e passa baixa = detecção de borda/suavização) • Processamento de Imagem é um bloco essencial dentro da Visão Computacional como  um todo.
  • 7. Processamento de Imagens Conversão de espaço de cor Filtro passa baixa / passa alta Segmentação de regiões Morfologia Matemática – Dilatação e Erosão
  • 8. Processamento de Imagens Entrada (base de dados ou câmera) Entrada (base de dados ou câmera) Pré-processamento (Processamento de Imagem) Pré-processamento (Processamento de Imagem) Extração de Características (formas, contornos, ROIs) Extração de Características (formas, contornos, ROIs) Pós-Processamento (interface de usuário com informações úteis da solução) Pós-Processamento (interface de usuário com informações úteis da solução) Solução do Problema (detecção, reconhecimento, classificação, etc..) Solução do Problema (detecção, reconhecimento, classificação, etc..)
  • 9. Biblioteca para Visão Computacional Existe alguma ferramenta ou biblioteca realmente boa para trabalhar com visão  computacional e processamento de imagens ? • SIM !!! OpenCV ! E muitas outras,  mas OpenCV (Open Computer Vision Library) é a mais  usada atualmente. • Gratuita tanto para uso educacional quanto comercial (exceto para alguns modelos de dados  já treinados por terceiros, nesse caso, licenças especiais são necessárias para uso comercial) • OpenCV é multiplataforma, o que significa que o mesmo código pode ser compilado sem  alterações para Desktop: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD, e  Embarcados: Linux, Android, iOS,  Maemo, Blackberry 10.
  • 10. Principais características da OpenCV • Código Aberto sob a licença BSD (gratuita tanto para uso acadêmico e comercial) • Linguagens de programação suportadas: C/C++, Python and Java • Eficiência Computacional e com forte foco em aplicações RT. • Escrita em C/C++ otimizado e com vantagem do use de processamento multi‐core se habilitado (Multi  Threading – TBB) • Aceleração de Hardware (OpenCL, OpenVX) • Grande suporte pela comunidade (47+K users)
  • 11. Estrutura da OpenCV (Módulos Principais) • cv – Funcionalidade básica • imgproc – Processamento de Imagens • videoio – Mídia I/O • Highgui – Interface de usuário de alto nível (display output, keyboard/mouse input, etc..) • features2D – framework para extração de características 2D • Objdetect – Detecção de objeto • ml – Machine Learning
  • 14. i.MX6Q: Aceleração de HW em CV • Aceleração com GPU utilizando OpenCL (Open Compute Language) e  OpenVX • OpenCL 2.0 (Full Profile) é necessária para aceleração interna da OpenCV (pode  haver problemas de performance devido a otimizações específicas de hardware).  Não disponível no i.MX6Q • OpenCL 1.x (Embedded Profile): é recomendado que você crie seus próprios kernels  de OpenCL otimizados para processar os buffers da OpenCV, dessa forma extraindo o  máximo de eficiência e performance
  • 15. i.MX6Q – Suporte de OpenCL • Open Computing Language (OpenCL) é um framework para escrita de programas que  executam em de plataformas heterogêneas, consistindo de CPUs, GPUs, DSPs, FPGs e  outros processadores • OpenCL inclui uma linguagem baseada em C99 para escrita de Kernels (funções que  rodam no dispositivo com OpenCL), e APIs para definicões e controle das plataformas. • OpenCL provê computação paralela baseada em paralelismo de processamento de  dados e tarefas. • OpenCL é um padrão aberto mantido pelo consórcio de tecnologia sem fins lucrativos Khronos Group, que já foi adotada pela Apple, Intel, Qualcomm, Advanced Micro  Devices (AMD), Nvidia, Altera, Samsung, Vivante e ARM Holdings.
  • 16. i.MX6Q: OpenCL + OpenCV 2D CL Kernel Global Workgroup[2] = {cvMat().width, cvMat().height} Size_2d = globalWorkgroup[0] * globalWorkgroup[1] clEnqueueWrite/Read (..., size_2d, cvMat().data)
  • 19. Demo – Rastreamento de objetos utilizando CAMshift Filtro Gaussiano Se habilitado Captura de Imagem pela Câmera Inicialização da porta Serial Inicializacão das variáveis do CAMShift Janela de rastreamento ajustada ? Saída para o display Imagem para debug (overlay) Controle do motor STOP - RUN Calcular o CAMShift Calcular o centro da imagem e do centro do objeto Atualizar as variáveis de controle