Odm: Apenas uma reconstrução parcial por submodelo é alinhada durante align_submodels

Criado em 2 mar. 2020  ·  5Comentários  ·  Fonte: OpenDroneMap/ODM

Como você instalou o OpenDroneMap? (Docker, nativamente, ...)?

Docker

Qual é o seu navegador e sistema operacional? (Copie / cole a saída de https://www.whatismybrowser.com/)

Chrome 79 no Linux

Qual é o problema?

Quando reconstruções parciais são geradas, parece haver um problema na saída de alinhamento da reconstrução.
De acordo com as fontes do OpenSfM, cada reconstrução parcial de cada submodelo é lançada em um grande problema de ajuste de pacote, em seguida, a saída como um conjunto de transformações de similaridade que são aplicadas a cada reconstrução parcial e, em seguida, salvas no arquivo de reconstrução alinhado.
Na realidade, porém, parece que apenas uma reconstrução parcial foi atualizada. Não consigo descobrir por quê.

Qual deve ser o comportamento esperado? Se esta for uma solicitação de recurso, descreva em detalhes as alterações que você acha que devem ser feitas no código, citando arquivos e linhas onde as alterações devem ser feitas, se possível.

Eu esperaria que cada ponto e tiro em cada reconstrução parcial fossem modificados pelo menos na magnitude 1e-6, mas isso só parece ser verdade para uma única reconstrução parcial em cada submodelo. Todas as outras reconstruções parciais são idênticas em uma comparação lado a lado para cada foto e ponto.

(Como nota lateral, estou interessado em entender por que a transformação de similaridade é gerada para criar uma transformação rígida, em vez de apenas aplicar a saída do pacote à reconstrução como um todo. Eu esperaria que isso criasse limites mais suaves entre os submodelos? tratamento?)

Como podemos reproduzir isso? (Quais etapas você seguiu para acionar o problema? Quais parâmetros você está usando para o processamento? Se possível, inclua uma cópia do conjunto de dados carregado no Google Drive ou Dropbox. Seja detalhado)

Acione o estágio align_submodels no OpenSfM em um conjunto de dados dividido em vários submodelos que também contém várias reconstruções parciais. Isso deve ser facilmente alcançado reduzindo a contagem mínima de recursos e definindo uma divisão em um conjunto de dados com um número suficiente de entradas.

bug help wanted

Comentários muito úteis

Sem problemas! É uma base de código divertida. :Presente:
Agora mesclado em OpenDroneMap / OpenSfM e mapillary / OpenSfM, fechando. :)

Todos 5 comentários

Acho que isso pode ser um bug em vez de um aprimoramento.
A partir das fontes, todas as reconstruções parciais devem sempre ser alinhadas, mas não posso dizer necessariamente que é mesmo o índice parcial 0 que usamos na divisão / mesclagem agora que está realmente atualizado no alinhamento - o que significa que podemos, nesses casos, ver um fusão resultando em nuvens desalinhadas.

Encontrei. Aparentemente, o método itertools.groupby usado em apply_transformations (transformações) em OpenSfM deve ser passado por uma lista já classificada, ou não agrupará as entradas corretamente. Uma vez que a reconstrução é carregada para cada grupo, as reconstruções não alinhadas serão recarregadas e sobrescreverão quaisquer componentes alinhados anteriormente.

Enviando um PR para 099 e OpenSfM mapilar daqui a pouco. : tada:

Fantástico! Obrigado por olhar para este @linusmartensson

Sem problemas! É uma base de código divertida. :Presente:
Agora mesclado em OpenDroneMap / OpenSfM e mapillary / OpenSfM, fechando. :)

Esta página foi útil?
0 / 5 - 0 avaliações