UI do iPhoneImage como detectar um ponto de "ponteiro laser" em um feed de câmera?


9

Eu tenho um brinquedo robô rastreado e estou controlando-o com um iPhone. O robô gera um feed de câmera ao vivo com um tamanho de quadro conhecido e estou exibindo na UIImage.

Adicionei um ponteiro laser ao robô e o fixei ao longo do eixo do robô. Estou tentando detectar o ponto do ponteiro laser na imagem e, assim, tentar calcular a proximidade do objeto. Se o ponto do laser estiver longe do centro, sei que o robô está preso na parede e precisa fazer o backup.

Como posso detectar um ponto de pixels branco-vermelho brilhante em uma tela? Uma solução seria provar a cor dos pixels dentro de um determinado raio do centro e detectar uma cor brilhante de blob. Alguém pode sugerir um algoritmo para esta atividade?

Outra abordagem seria acompanhar a posição média do ponto nos últimos quadros, reduzindo assim o raio do palpite. Se não houver ponto em uma região predefinida, a região de pesquisa poderá ser expandida.

Finalmente, quero ser capaz de ensinar o robô a detectar carpetes ao seu redor. O tapete reflete um ponteiro laser de uma certa maneira, e quero entender quantos quadros ao redor do robô têm propriedades semelhantes. Se eu souber onde o ponteiro do laser está na tela, posso cortar um pequeno retângulo dessa imagem e compará-los. Existe uma maneira eficiente de comparar várias imagens pequenas entre si para entender se as silhuetas correspondem?

Notei que o laser é refletido em superfícies brilhantes, e a direção dessa reflexão pode me dizer algo sobre a orientação da superfície no espaço, de acordo com as leis da refração.

Obrigado!

Ponteiro laser fechar

Ponteiro laser 1


11
Você pode ativar e desativar o ponteiro laser em um padrão? Como um quadro está desativado, o seguinte está ativado e você subtrai os quadros subsequentes para torná-lo muito óbvio.
Endolith 19/06/12

Essa é uma ideia muito boa! Mas não tenho controle sobre o ponteiro laser, seja ligado ou desligado.
Alex Stone

@AlexStone Estou tentando conseguir algo semelhante, a única diferença é que estou tentando detectar a luz do laser na pupila dos olhos. Você pode me ajudar com o código iOS ou qualquer código de amostra que você processou com o opencv no rastreamento do raio laser? Agradecemos sua ajuda antecipadamente, obrigado AJ.
AmJa 23/02

Respostas:


10

O OpenCV é compilável para iOS. Embora possa não ser o mais eficiente, oferece a opção de portar o algoritmo. Eu fiz um problema de rastreamento de marcador semelhante usando o algoritmo ConDensation. Procure o rastreamento de marcadores com o OpenCV. É uma área de pesquisa MUITO grande e o algoritmo exato que você deseja depende completamente da sua aplicação. Se bem me lembro, existem cerca de 3000 técnicas de processamento de imagens relatadas - escolher uma boa é uma arte real!

Uma solução seria provar a cor dos pixels dentro de um determinado raio do centro e detectar uma cor brilhante de blob. Alguém pode sugerir um algoritmo para esta atividade?

A propósito, essa é a idéia básica por trás do que é chamado de filtro de partículas (do qual a condensação é um método). Bem feito, você descobriu a idéia básica por si mesmo!

Outra abordagem seria acompanhar a posição média do ponto nos últimos quadros, reduzindo assim o raio do palpite. Se não houver ponto em uma região predefinida, a região de pesquisa poderá ser expandida.

Isso é chamado de persistência de estado e pode ser modelado de várias maneiras. O algoritmo de condensação usa uma abordagem estocástica não diferente de um filtro Kalman antigo e simples.

Existe uma maneira eficiente de comparar várias imagens pequenas entre si para entender se as silhuetas correspondem?

Este é um pouco mais difícil. Você pode tentar a correspondência de modelos, mas eu não sei o desempenho da mesma no iOS (o cálculo muito pesado e a câmera do iOS não se adaptam a ela).


Paul, obrigado por uma resposta incrivelmente detalhada! Eu tenho o framework OpenCV e procurarei exemplos de projetos usando-o.
Alex Stone

Olá Paul, Você tem alguma idéia do aplicativo de amostra para detecção a laser via câmera iOS usando openCV?
26418 AmJa

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.