Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam

Dispositivos de vídeo-captura ganham inteligência em função de algoritmos de visão computacional. Para tratar deste assunto, tal segmento demanda conhecimentos matemáticos, domínio com rotinas de processamentos de imagens e sólidos fundamentos sobre manipulação da API V4L2. Neste documento, veremos como utilizar todos estes conceitos com soluções Open Source.

[ Hits: 34.033 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 07/01/2013 | Blog: http://assuntonerd.com.br


Visão Computacional - Breve introdução



As bibliotecas de visão computacional (mais especificamente, a biblioteca OpenCV), apresentam:
  • Recursos de manipulação de imagem
  • Entrada e saída de vídeo
  • Cálculo de matriz
  • Álgebra linear
  • Morfologia matemática
  • Análise estrutural
  • Reconhecimento de objeto
  • Gráficos primitivos

Como se não fosse o suficiente, a biblioteca OpenCV abstrai a utilização de técnicas de programação multinuclear como OpenMP e TBB da Intel, como também a utilização de GPU.

Para detectar objetos, é preciso utilizar algoritmos que obtêm características invariantes no aspecto de rotação e escala com relação ao ponto de observação do dispositivo de captura. Para que, somente então, posteriormente utilizarmos esta abstração para comparação entre duas imagens.
A imagem acima demonstra na íntegra o problema resolvido de reconhecimento das características invariantes. Ressalto que as soluções propostas neste documento são apenas uma de inúmeras maneiras de equacionar tal tarefa computacional.

Programação multinuclear e GPU

A programação paralela é obrigatório para obter o melhor desempenho em equipamentos atuais multicores. Algumas sugestões são as bibliotecas OpenMP ou TBB (Threading Building Blocks) da Intel, que encarregam-se da utilização do software ao ambiente baseado na quantidade de núcleos.

Para continuar a interminável corrida no código perfeito, para obter leveza e suavidade em sistemas de visão computacional junto à programação paralela, é saudável utilizar o uso orquestrado das GPU e CPUs.

Atualmente existem APIs e/ou SDK da NVIDIA, Intel e ATI/AMD (mais informações em algumas edições na Linux Magazine, ou aqui no Viva o Linux).

    Próxima página

Páginas do artigo
   1. Visão Computacional - Breve introdução
   2. Download e instalação
   3. O sistema find-object
Outros artigos deste autor

Compile programas para o PlayStation 3 em PC de 32 bits

Camera Kombat: Mortal Kombat ao vivo com WebCam

Apache Cassandra NoSQL, uma tecnologia emergente

Visualizador de sistema de arquivos tridimensional

Faça um incrível espetáculo de efeitos visuais com vídeo em tempo real

Leitura recomendada

Personalizando o tema do usplash nos Ubuntu-like

Como fazer uma transição de imagens em vídeo com o OpenShot

True3D*Shell: Um shell 3D e futurista para o seu GNU/Linux

Arredondando bordas com o Gimp

Desenhar um planeta com Gimp

  
Comentários
[1] Comentário enviado por fabio em 07/01/2013 - 17:52h

Não sei de onde tu tira tanta coisa maluca pra implementar :)

Muito bom! Parabéns Cabelo.

[2] Comentário enviado por tsuriu em 07/01/2013 - 18:12h


[1] Comentário enviado por fabio em 07/01/2013 - 17:52h:

Não sei de onde tu tira tanta coisa maluca pra implementar :)

Muito bom! Parabéns Cabelo.


Parabéns Cabelo... O incrível é que eu tava mesmo procurando algo justamente desse tipo..

VLW MSM...

[3] Comentário enviado por removido em 07/01/2013 - 19:37h

Esse cara tem VISÃO!

Parabéns, Cabelo.

[4] Comentário enviado por eldermarco em 07/01/2013 - 22:26h

Sensacional! Quando eu crescer, quero ser que como ele! hahaha

[5] Comentário enviado por laerciomotta em 08/01/2013 - 10:35h

Maravilha, porem fiz os testes aqui, tudo funcionou mais o find_object não encontrou minha webcam..

Camera initialization failed! (with device 0)

Pelo cheese aparece a webcam normal...

Sistema: Ubuntu 12.04 w/ Gnome Shell (64 bits)
Notebook Dell Vostro v131

Parabens!
[]'s

[6] Comentário enviado por diego.agudo em 08/01/2013 - 21:40h

Mto bom o artigo!
Me diga uma coisa, você já testou se ele também serve para reconhecimento facial? Parece que a idéia é a mesma, não?!

[]s

[7] Comentário enviado por tiagofontoura em 12/01/2013 - 18:51h

beleza cabelo, sera que e muito pessado para raspberry pi?

[8] Comentário enviado por nsoluiz em 19/01/2013 - 10:11h

tche
bom dia
sei que o teu tempo é pouco, vou tentar ser direto…
1 – desculpa postar isso aqui, sei que nao é o lugar correto, se responder fico muito agradecido…
2 – comprei um pentv da infinitoo(http://www.infinitoweb.com.br/sistema/ck/files/downloads/infinito_pentv_driver.zip), gostaria de saber de ti de tem como um ubuntu desktop 12.10 ser um servidor de Streaming de tv, pode fazer um tutorial eu dar as dicas?
3 – não que eu deixei por ultimo, pra que tu aches que estou enchendo o teu ego, mas posso te garantir, tu é um bagal de 1ª estancia, muito bom o conteudo que tu posta no blog e no viva o linux, parabens.
muito obrigado pela atenção e desculpas novamente.

[9] Comentário enviado por marcosregato em 04/08/2014 - 03:22h

Deu erro na minha instalação, estou instalando OpenCV 2.4.9 no Ubuntu.Olha o erro

[ 70%] Building CXX object modules/legacy/CMakeFiles/opencv_legacy.dir/src/blobtrackinglist.cpp.o
[ 70%] [ 70%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_ds.cpp.o
Building CXX object modules/imgproc/CMakeFiles/opencv_perf_imgproc.dir/perf/perf_houghLines.cpp.o
[ 70%] Building CXX object modules/imgproc/CMakeFiles/opencv_perf_imgproc.dir/perf/perf_threshold.cpp.o
Linking CXX shared library ../../lib/libopencv_legacy.so
[ 70%] Built target opencv_legacy
Linking CXX executable ../../bin/opencv_perf_core
[ 70%] Built target opencv_perf_core
Linking CXX executable ../../bin/opencv_perf_imgproc
[ 70%] Built target opencv_perf_imgproc
Linking CXX executable ../../bin/opencv_test_core
[ 70%] Built target opencv_test_core
make: ** [all] Erro 2

Alguém pode me ajuda ?

[10] Comentário enviado por CRACKER-FENIX em 16/10/2014 - 03:52h

parabéns um bom trabalho no artigo algo útil e eficaz mais uma vez o cabelo inovando :-)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts