Como obter nuvens de pontos densas de câmeras estéreo?

12

Estou tentando usar uma câmera estéreo para reconstrução de cenas, mas geralmente só consigo obter nuvens de pontos esparsos (ou seja, mais da metade da imagem não possui informações de profundidade adequadas).

Percebo que os algoritmos de processamento estéreo dependem da presença de textura nas imagens e têm alguns parâmetros que podem ser ajustados para obter melhores resultados, como o intervalo de disparidade ou o tamanho da janela de correlação. Por mais que eu ajuste esses parâmetros, porém, nunca consigo obter resultados remotamente próximos do que pode ser obtido usando um sensor ativo como o Kinect.

A razão pela qual eu quero isso é porque muitas vezes as nuvens de pontos correspondentes às regiões adjacentes não têm sobreposição suficiente para que eu possa obter uma correspondência, portanto a reconstrução é gravemente prejudicada.

Minha pergunta aos especialistas da Computer Vision é o seguinte: o que posso fazer para obter nuvens de pontos mais densas em geral (sem modificar arbitrariamente o ambiente do meu escritório)?

georgebrindeiro
fonte
Essa é uma boa pergunta, mas acho que mais detalhes são necessários. Quais algoritmos você tentou calcular correspondências? Você poderia esclarecer o que quer dizer com "regiões adjacentes" e "sobreposição?".
Josh Vander Gancho
Quando digo "regiões adjacentes", quero dizer partes do espaço físico que não são equivalentes, mas que possuem uma interseção não vazia, que chamei de "sobreposição". Ou seja, o tipo de região que geraria nuvens de pontos que poderiam ser correspondidas e costuradas em um algoritmo ICP.
Georgebrindeiro
Sobre o algoritmo, ainda estou usando a solução mais simples possível: o nó stereo_image_proc ROS, que aplica o algoritmo de correspondência global de blocos disponível no OpenCV. Eu ficaria muito interessado em saber sobre as configurações de parâmetros que podem não estar diretamente acessíveis para mim através do nó ROS ou outros algoritmos conhecidos por fornecer melhores resultados.
Georgebrindeiro

Respostas:

4

Você pode tentar pular a detecção de ponto saliente e apenas amostrar densamente sobre a imagem (como grade ou mais) e calcular um descritor de recurso em cada ponto de amostra. Provavelmente, você pode até calcular um descritor para cada pixel.

Você pode perder a invariância da escala, mas acho que isso não prejudicará muito a visão estéreo, pois os objetos estarão aproximadamente na mesma escala nas duas imagens.

Outra abordagem pode ser combinar vários algoritmos de detecção de pontos salientes: cantos, bordas, blobs e assim por diante. Então você deve usar o mesmo algoritmo do descritor de recursos para todos os pontos detectados; no entanto, essa última parte pode ser um pouco complicada de implementar.

muksie
fonte
2

Portanto, os algoritmos de processamento de imagem estéreo que usei no passado foram implementados pixel por pixel. Acabamos de usar o modelo de câmera pinhole e fizemos algumas medições à moda antiga com fita métrica até que nossas estimativas de profundidade correspondessem à realidade.

As equações para um par de câmeras paralelas são:

  • d=
  • f=
  • Quadros de coordenadas:
    • x,y,z=
    • vocêR,vR
    • vocêeu,veu
    • Nota: as coordenadas da câmera têm suas origens no quadro de coordenadas entre as câmeras (ou seja, os eixos u estão voltados para direções opostas)

vocêeu=f(x-d)zvocêR=f(x+d)z

zvocêR=f(x+d)zvocêeu=f(x-d)

z(vocêR-vocêeu)=2df

z=2dfvocêR-vocêeu

y=veuz+dff

x=vocêeuz+dff

Usando essas equações, você pode calcular uma nuvem estéreo densa. Um para cada pixel em suas câmeras.

thealmightygrant
fonte
Obrigado pelo esforço, mas eu estou familiarizado com a modelagem estéreo. O problema geralmente é exatamente o da correspondência entre as coordenadas (u, v) nas câmeras esquerda e direita. muksie deu algumas idéias sobre como lidar com isso e sylvain.joyeux apontou uma grande biblioteca estéreo que leva a melhores resultados, embora ...
georgebrindeiro
1

Quando você diz "mais da metade da imagem não possui nenhuma informação adequada de profundidade", qual metade?

Um problema que encontramos é que, se a distância do objeto é da mesma ordem de magnitude que a sua linha de base (geralmente associada a câmeras de grande angular), os algoritmos estéreo densos "padrão" não funcionam tão bem. Estamos usando a biblioteca libelas, e seus desenvolvedores nos disseram que isso é chamado de "estéreo de linha de base grande" e é outro problema.

sylvain.joyeux
fonte
Quando eu disse que metade da imagem não tinha nenhuma informação adequada de profundidade, eu quis dizer que, de todos os pixels, apenas metade tinha disparidades computadas (não necessariamente formando uma região contígua). Não estou tendo o mesmo problema que você mencionou na relação distância / objeto / linha de base, mas foi muito interessante ouvir sobre essa biblioteca e que isso pode ser um problema. Obrigado!
Georgebrindeiro 18/11/2012
1
De qualquer forma, tentarei libelas desde que encontrei um wrapper ROS para ele!
Georgebrindeiro 18/11/2012
0

Veja os líderes do KITTI Stereo Benchmark . Esse benchmark penaliza os algoritmos por não produzirem disparidades em um determinado momento; portanto, os melhores desempenhos produzem resultados densos (mesmo que não tenham muitos motivos para sua estimativa em muitos pontos). Alguns métodos têm código publicamente disponível vinculado, que você pode experimentar.

Observe que eles não são penalizados por levar muito tempo; muitos métodos levarão a ordem de minutos por imagem para serem executados e podem não ser adequados para o seu aplicativo. No entanto, foram introduzidos muitos métodos baseados na CNN que se saem muito bem, enquanto ainda são executados em menos de um segundo (em uma GPU). Pelo menos um deles (CRL) tem código público.

Se você ainda não obtiver estimativas decentes de profundidade com essas imagens, poderá estar vendo os limites do que é viável a partir de uma abordagem visível. Fundamentalmente, precisa haver textura distinta na área para poder corresponder bem aos pontos, ou você precisa de uma base para fazer algumas suposições fortes (por exemplo, suavidade) em regiões sem textura.

surtur
fonte