• Welcome to LusoRobótica - Robótica em Português.
 

Iniciação ao openCV - Ajuda

Started by senso, 21 de October de 2010, 20:38

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

senso

Boas noites a todos, venho-vos pedir ajuda com uns tutoriais de introdução ao openCv, de preferência em ambiente ubuntu e usando C++, como têm aparecido por aqui muitos projectos que usam opneCV é porque nem é muito dificil, mas a wiki do openCv é basicamente um amontoado de links e mais links, e depois um é em C, outro em python, um em Mac outro no windows, mais uns em ubuntu 9.04, se alguem tiver por ai algo para se ler digam  ;)
Já saquei o livro do openCv, eu sei que o devia ter comprado...
Avr fanboy

microbyte

Para que é que queres aprender processamento de imagem?  :P
É desta que vamos começar a usar o OpenCV, senso?

senso

Espero que sim, após uma horita de volta disto já está instalado(ou melhor dizendo compilado do source, que instalar é para os lados dos windows), agora tenho umas 500 páginas de manual á mainha frente :s
Avr fanboy

microbyte

Por acaso acho que nunca vi aqui nenhum projecto que usasse o OpenCV...

senso

Andam aqui uns quantos que seguem faces o ICU, o Touro do outro rapaz, que segue um pano vermelho e anda ai mais um ou dois que detectam faces usando OpenCV.
Avr fanboy

microbyte

Quote from: senso on 21 de October de 2010, 22:05
Andam aqui uns quantos que seguem faces o ICU, o Touro do outro rapaz, que segue um pano vermelho e anda ai mais um ou dois que detectam faces usando OpenCV.
Esse é uma versão do OpenCV para o Processing, creio que não é o OpenCV a sério...

senso

Sim é para processing, é simplificado imagino eu.
Bem, só pelo suporte a multiprocessador já ganhou dois centimos..
Tese de doutouramento: portar OpenCV para Cuda lol.
Ninguem recomenda nada para começar?
Avr fanboy

XicoMBD


Quote from: senso on 21 de October de 2010, 22:05
Andam aqui uns quantos que seguem faces o ICU, o Touro do outro rapaz, que segue um pano vermelho e anda ai mais um ou dois que detectam faces usando OpenCV.
Embora já tenha mexido nela, a que utilizei no meu "touro" não foi a biblioteca de openCV para processing, mas sim uma chamada JMyron.

Marvin

Costumo usar openCV nos meus projectos, como podem ver pelos meus posts aqui no forum. Tem um wrapper de .net mas chama as funçoes base em c++.

De facto a informação está um pouco espalhada e tenho-me baseado muito em papers e em algoritmos de reconhecimento facial, tendo em conta que já estao implementados no opencv é só chamar as funções. Tal como o Haarcascades, OpticalFlow, etc.

Aquilo é basicamente um "mundo" onde tens praticamente tudo o q foi estudado em computer vision, daí não aconselhar os "tutoriais" ou tentar ler o manual pois é deveras extenso e muita coisa não faz sentido se não perceberes os conceitos por tras.

A melhor forma é ver a coisa ao contrario, o que queres fazer com opencv? Reconhecer caras? Vigilancia? Seguir cores? Editar imagens?

Com base nisto então pesquisas os algoritmos e implementas no opencv. Pelo menos tem sido essa a minha forma de desenvolver.
Dronetech BlogThe Scientist and the Geek

senso

E como é que encontro os algoritmos que quero, procuro opencv e o que quero fazer?
O que quero fazer é relativamente complexo, mete duas cameras a funcionar em paralelo, um ambiente com muito movimento e "ruido", será detectar linhas, obstaculos, formas, e depois tratar isso, tambem deve meter mascaras com força em cima, passagem entre diferentes modelos de cores(RGB, HSL, raw e sei lá que mais, que ainda nem sei bem o que tenho pela frente, mas sei que não é algo que vou fazer em 15 dias, nem em 6 meses lol)
Avr fanboy

Marvin

Quote from: senso on 21 de October de 2010, 23:54
E como é que encontro os algoritmos que quero, procuro opencv e o que quero fazer?
O que quero fazer é relativamente complexo, mete duas cameras a funcionar em paralelo, um ambiente com muito movimento e "ruido", será detectar linhas, obstaculos, formas, e depois tratar isso, tambem deve meter mascaras com força em cima, passagem entre diferentes modelos de cores(RGB, HSL, raw e sei lá que mais, que ainda nem sei bem o que tenho pela frente, mas sei que não é algo que vou fazer em 15 dias, nem em 6 meses lol)

http://opencv.willowgarage.com/wiki/VideoSurveillance  -> isto vai-te ajudar com as formas, obstaculos e movimentos.

Aconselho-te a ler sobre SURF, nao o desporto mas sim Speed Up Robust Features. --> http://opencv.willowgarage.com/documentation/cpp/feature_detection.html

Em relação aos filtros, tens imensos mas tem de se perceber o que queres fazer, mas em ultimo caso manda-te para o machine learning  -> http://opencv.jp/opencv-1.0.0_org/docs/ref/opencvref_ml.htm

Espero q isto ajude.
Dronetech BlogThe Scientist and the Geek

senso

Acho que dá para tirar um curso só em opencv....
Obrigado pela ajuda ;)
Tenho mesmo muito que ler.
Avr fanboy

Ricardo

Eu tenho o opencv meio implementado no meu robot, mas o processamento é todo feito do lado do PC. Pouco mais faz que detectar movimento e mover a camara para esse local (a ideia será seguir esse movimento com o robo). Existe algum pic mais evoluido que também consiga fazer isso? e que utilize o opencv, ainda que adaptado?

Marvin

Quote from: senso on 22 de October de 2010, 00:55
Acho que dá para tirar um curso só em opencv....
Obrigado pela ajuda ;)
Tenho mesmo muito que ler.

Em computer vision ha imensa gente a fazer mestrados, doutoramentos e pos docs, como opencv é a implentação desses algoritmos logo tens toda a razão. :) Dá para tirar um curso.

Quote from: Ricardo on 22 de October de 2010, 09:35
Eu tenho o opencv meio implementado no meu robot, mas o processamento é todo feito do lado do PC. Pouco mais faz que detectar movimento e mover a camara para esse local (a ideia será seguir esse movimento com o robo). Existe algum pic mais evoluido que também consiga fazer isso? e que utilize o opencv, ainda que adaptado?

Eu tambem implemento dessa forma, sendo o computador o "cerebro" pois ainda n encontrei nenhum microcontrolador acessivel que tenha essa capacidade de processamento. Mas pelo que percebo a BeagleBoard ja é capaz de processar a imagem correctamente, mas já estamos a falar de um computador, ainda que pequeno. O surveyor (baseado em Blackfin) já faz processamento de imagem mas ainda não me debrucei sobre isso.
Dronetech BlogThe Scientist and the Geek

KammutierSpule

Este projecto que estou a desenvolver anunciado aqui:
http://lusorobotica.com/index.php?topic=1358.msg13391#msg13391
usa openCV.

A minha experiencia com o openCV tem revelado que a documentação não é espetacular. Mas isto deve-se À natureza "volatil" de desenvolvimento da biblioteca, que está em constante avanço e acrescento de funcionalidades. Sim, já tem suporte para cuda e android. (SVN)

Provavelmente se encontrares tutorials na net estes estão "desactualizados", isto é, funcionam, mas provavelmente já nao é a maneira mais correcta de fazer as coisas. (falo por exemplo na declaração de tipos de variaveis do openCV... etc)

Como disseram depende bastante se o uso é em C ou C++ ou etc..

Na minha opinião os passos para se trabalhar e integrar com o openCV são (do básico até ao utilizador avançado)

. Procurar tutorials na net para ter uma visão geral do funcionamento da biblioteca.
. Ambientar-se com a referencia online da biblioteca para a linguagem q se esta a usar.
. Estudar exemplos basicos de codigo que vem juntamente com a biblioteca openCV (versoes do SVN)
. Procurem slides de aulas de universidades (estranjeiras e tambem algumas tugas) que falem de processamento de visão assim por alto
. Quando usarem funcionalidades avançadas, leiam antes um artigo (generico) relacionado com as funcionalidades que vao tentar implementar

Senso:
QuoteO que quero fazer é relativamente complexo, mete duas cameras a funcionar em paralelo, um ambiente com muito movimento e "ruido", será detectar linhas, obstaculos, formas, e depois tratar isso, tambem deve meter mascaras com força em cima, passagem entre diferentes modelos de cores(RGB, HSL, raw e sei lá que mais, que ainda nem sei bem o que tenho pela frente, mas sei que não é algo que vou fazer em 15 dias, nem em 6 meses lol)

Neste texto todo não explicas o que queres fazer, dizes o que vais fazer mas não o que isso pretende fazer. O que fazes com as linhas detectadas? com os obstaculos detectados? e tratas essas detecções para que finalidade?


Marvim:
Já implementaste com sucesso algum sistema com usando "feature points" ?
alguem?

KS