Objetivo da detecção e correspondência dos recursos de imagem

8

Eu sou um cara novo em processamento de imagens e visão computacional, então essa pergunta pode ser estúpida para você.

Acabei de aprender alguns algoritmos de detecção e descrição de recursos, como Harris, Hessian, SIFT, SURF , eles processam imagens para descobrir esses pontos - chave e depois calculam um descritor para cada um, o descritor será usado para a correspondência de recursos.

Eu tentei o SIFT e o SURF, descobrindo que eles não são tão robustos quanto eu pensava, já que para 2 imagens (uma é girada e afinada um pouco), elas não combinam bem com os recursos, entre quase 100 pontos, apenas 10 partidas são boas.

Então eu me pergunto

  1. Para que podemos usar esses algoritmos de detecção de recursos na prática? Existem algoritmos mais robustos para detecção e correspondência de recursos? Ou SIFT e SURF já é bom, só preciso refiná-lo para uso posterior?

  2. Outro problema é que eu pensei que esses algoritmos não são exatamente para aplicação em tempo real (sem considerar a implementação de vários núcleos), mas existem alguns produtos comerciais (como o Kinect) que funcionam e respondem em tempo real! Presumo que esses produtos também detectem e correspondam aos recursos do que veem , eles usam algoritmos como SIFT ? Como eles conseguiram detectar recursos tão bem?

  3. Com meu conhecimento limitado, sei que a correspondência de recursos pode ser usada para descobrir os mesmos objetos em duas imagens ou estimar homografias, mas qualquer outro objetivo para a correspondência de recursos?

abacate
fonte
Ei! Acho que você provavelmente tem um problema com sua implementação do SIFT / SURF. Ambos devem funcionar muito melhor que 10/100. Você se importaria de enviar suas imagens e / ou resultados correspondentes?
Penelope #
@penelope, na verdade eu estou usando SIFT / SURF por OpenCV. Também acho que eles devem funcionar melhor que 10/100, talvez eu deva lidar com a parte de correspondência de recursos com mais cuidado ;-).
Abacate #
@penelope, aliás, eles funcionam bem com imagens afins?
Abacate #
Ai sim. Dê uma olhada neste artigo. É uma comparação de vários detectores e mostra sua robustez contra mudanças afins, desfoque, iluminação e muitas outras coisas. Na verdade, não peneirar lá, mas peneirar não deve ser ruim em comparação com qualquer um destes. Vou escrever-te uma resposta mais detalhada mais tarde hoje, não tenho tempo neste exato momento
penelope

Respostas:

9

Os pontos-chave da imagem são um recurso essencial em muitos softwares de processamento de imagem e vídeo, tanto industriais quanto acadêmicos. O princípio por trás é sempre o mesmo:

  • detectar alguns pontos significativos em algumas imagens;
  • [opcional] calcula uma descrição estável da parte da imagem em torno de cada ponto-chave;
  • corresponder pontos-chave de uma imagem (o modelo) para outra (a consulta).

Agora, mais alguns detalhes.

Por que detectar pontos? Basicamente, porque um ponto é uma interseção de duas linhas. Como tal, é detectado com muito mais precisão (e de maneira mais estável) como linhas ou outros recursos (área, etc.). Esse é um conhecimento comum do Computer Vision, mais tarde provado em um artigo de Mikolajczyk. Isso está profundamente enraizado em qualquer detector de ponto: por exemplo, o detector de ponto Harris depende da matriz Hessian para verificar se há duas linhas de cruzamento.

Por que a parte da descrição é opcional? Os detectores de ponto básico (Harris, SUSAN, Moravec, FAST) não são fornecidos com um descritor. O processo de correspondê-los é puramente baseado em localização. Assim, eles são usados ​​principalmente para processamento de vídeo. A intuição subjacente é que você pode ter muitos pontos e, em seguida, um processo de estimativa robusto (por exemplo, RANSAC). No entanto, os pontos-chave recentes (SIFT e os que vieram depois) incorporam um descritor de patches de imagem, porque devem ser usados ​​em situações mais complexas (detecção de objetos, correspondência grande de linha de base ...).

Qual é a diferença entre Harris / Hessian e SIFT / SURF? Além da parte do descritor, o SIFT / SURF também inclui uma localização em escala . Assim, quando você detecta um ponto SIFT / SURF, espera encontrá-lo novamente, mesmo que sua imagem tenha sido ampliada / reduzida, etc.

Qual é a diferença entre SIF e SURF? Bem, o SURF é, na verdade, principalmente uma versão aproximada do SIFT, mais adequada para cálculos rápidos (usando imagens integrais). Consequentemente, o SURF não é tão estável (como "bom") quanto o SIFT em transformações afins, mas chega a algo como 1/10 do custo computacional.

Eles são adequados para software em tempo real? Sim, com certeza para Harris. O SURF foi projetado para ser rápido, portanto, uma boa implementação também deve ser rápida. O SIFT não foi projetado para velocidade, mas você pode encontrar implementações de GPU. Mas se você realmente quer ser rápido, mesmo em dispositivos de gama baixa, precisa verificar pontos recentes, como FAST (detector), BREVE, ORB, BRISK, FREAK (descritores binários).

O que podes fazer com eles? Bem, muitas coisas. Ao rastrear pontos nos vídeos, você pode estabilizá-los, aumentá-los com objetos, rastrear objetos. Ao combinar pontos entre as câmeras, você pode automatizar o processo de calibração dos dutos de reconstrução 3D. Ao combinar pontos em partes do objeto, você pode detectar objetos. E provavelmente muito mais ...

sansuiso
fonte
muito obrigado por esta resposta detalhada. Como você mencionou, a intuição subjacente é que você pode ter muitos pontos, então um processo de estimativa robusto (por exemplo, RANSAC) , acho que para conduzir uma estimativa robusta (como a homografia), o descritor de recursos é indispensável, porque, pelo meu conhecimento limitado , a estimativa envolve correspondências de recursos que precisam de um descritor de recursos para a correspondência de recursos, certo? Ou existe alguma outra estimativa sem a correspondência de recursos?
Abacate #
No processamento de vídeo, você tem, por exemplo, 25fps, o que significa 40 milissegundos entre dois quadros. Os pontos-chave não se moverão muito, e o processo de correspondência será um processo espacial vizinho mais próximo. Se os pontos aparecerem / desaparecerem, você espera que o RANSAC lide com isso (o que é verdade desde que você ainda tenha 50% de boas combinações). Observe também que a adição de um descritor ainda termina na correspondência do vizinho mais próximo, mas no espaço do recurso, não no espaço espacial.
Sansuiso # 8/13
Boa resposta. Se um objeto é rígido e essencialmente limitado a 3 graus de liberdade na escala 2D (x, y, rotação) +, então existem alguns algoritmos finos de "correspondência robusta de padrões" em pacotes comerciais de software que funcionam muito bem para determinadas aplicações. Exemplos incluem software da Cognex, Hexavision, DALSA e Halcon da MvTec. Esses algoritmos podem não ser tão generalizados quanto o pôster original desejado, mas para objetos rígidos eles podem ser bastante robustos.
Rethunk
Talvez OCR também?
FindOutIslamNow
2

Bem, essa é uma ótima resposta do @sansuiso, então vou me concentrar nos vários usos possíveis dos pontos-chave detectados e descrever alguns exemplos para você. Certamente há mais usos, os listados são baseados apenas no que entrei em contato até agora.

Recuperação de imagem baseada em conteúdo (CBIR) Você trata os recursos (os vetores de recursos obtidos após aplicar os descritores de recursos aos pontos detectados) como palavras visuais . Nessas palavras visuais, você aplica técnicas de lista de palavras , que foram introduzidas pela primeira vez para recuperação de texto (pense no Google). Dei uma resposta bastante detalhada sobre isso aqui (veja também as referências). Isso permitirá que você:

  • encontre imagens semelhantes no banco de dados
  • detectar a presença de um determinado objeto nas imagens do banco de dados
  • "agrupar" e organizar o banco de dados automaticamente

("Grosso") Estimativa de homografia em pares de imagens Detecte recursos, faça correspondências, escolha as correspondências mais robustas e depois calcule a homografia com base nessas correspondências. Existem algumas técnicas para melhorar o desempenho: além de apenas descritores correspondentes, as informações espaciais também podem ser usadas (por exemplo, uma correspondência pode ser rejeitada se os vizinhos da imagem A não corresponderem na mesma vizinhança na imagem B - exemplo de técnica próxima o final deste artigo pode ser usado, por exemplo, em:

  • costura de imagem - por exemplo, para conectar várias "fotos panorâmicas" em uma imagem
  • estimativa de pose grosseira - usamos isso em um projeto em que tivemos que navegar automaticamente em um carro robótico através de um curso gravado (com base na navegação humana). As únicas informações que tínhamos eram imagens "principais", tiradas a determinadas distâncias ao longo do caminho. Primeiro, usamos o CBIR para encontrar a imagem-chave mais próxima e, em seguida, a localização e o posicionamento iniciais foram feitos com base na correspondência de imagem entre a visualização atual e a imagem do banco de dados.
  • estabilização de vídeo - eu vi um exemplo muito bom de imagens de uma travessia rodoviária feita com uma câmera pendurada em um helicóptero. A idéia era "neutralizar" o balanço da câmera - e o resultado final foi um vídeo muito agradável e de aparência constante.

Rastreamento de recursos Não posso contar muito sobre como isso é feito, pois não fiz muito rastreamento sozinho, mas posso dar alguns exemplos de quando isso pode ser útil. A ideia é selecionar alguns pontos de interesse e seguir sua posição no vídeo de quadro a quadro. Exemplos (eu já vi):

  • sinal de trânsito a seguir: Pode ajudar na condução, por exemplo, se houver uma vista da estrada à frente e o motorista conseguir uma imagem processada, pode ser útil detectar, marcar e rastrear a posição de um sinal de trânsito aparecendo em frente do motorista (talvez alertando o motorista para a localização / distância do sinal e o significado)
  • localização e posicionamento precisos: na mesma navegação automatizada do carro robótico que mencionei acima, era muito mais preciso fazer uma localização precisa com base nos recursos rastreados . Para atualizar a posição atual e dar o comando de movimento adicional, certas características foram rastreadas no quadro (portanto, nenhuma correspondência necessária) e a homografia foi estimada com base nessas características.
Penélope
fonte
Obrigado por estas aplicações, e também o papel e publicá-lo ligado no.
abacate
1

Existe um site que fornece muitas informações sobre suas consultas: http://www.robots.ox.ac.uk/~vgg/research/affine/

Ele contém informações sobre detectores e descritores de recursos, seu desempenho atual e qual é o melhor em qual cenário.

Este campo ainda tem muito a continuar.

Por exemplo, quando você deseja fazer a reconstrução estéreo, esses algoritmos geralmente falham no caso de imagens de pontos de visualização múltipla. Você pode tentar algo disso.

Armin Mustafa
fonte