Eu tenho dados LiDAR "sujos" contendo o primeiro e o último retorno e também inevitavelmente erros abaixo e acima do nível da superfície. (captura de tela)
Tenho SAGA, QGIS, ESRI e FME em mãos, mas nenhum método real. Qual seria um bom fluxo de trabalho para limpar esses dados? Existe um método totalmente automatizado ou, de alguma forma, eu excluiria manualmente?
Respostas:
Você parece ter discrepâncias:
Para 'i', a opção é usar um algoritmo de filtro de solo que possa levar em consideração 'erros negativos' para obter uma nuvem de pontos de terra LiDAR limpa. Veja o algoritmo MCC (Multiscale Curvature Classification) de Evans e Hudak (2007). É dito na página 4:
Abaixo, há um post com um exemplo sobre o uso do MCC-LIDAR:
Depois de ter uma nuvem de pontos de terra LiDAR precisa para fazer um DEM preciso, é possível normalizar a nuvem de pontos e excluir pontos que estão abaixo da superfície do DEM (aqueles com valores negativos). Usando a mesma abordagem, também é possível endereçar o número do ponto 'iii' removendo pontos acima de algum limite fixo. Veja, por exemplo:
Em seguida, ele nos deixa com 'ii', abordado pela resposta
lasnoise
de AlecZ recomendada pelo LAStools. Ele também manipulará 'iii', e talvez parte de 'i' (o LAStools exige uma licença). Outras ferramentas criadas especificamente para verificar / remover discrepantes foram citadas aqui: afilters.outlier
ferramenta PDAL na resposta de Charlie Parr, que tem uma explicação detalhada sobre como a ferramenta funciona, e com a vantagem de que o PDAL é um software livre.Em seguida, o que resta do processo automatizado (se houver algum erro externo) pode ser removido manualmente. Por exemplo:
Evans, Jeffrey S .; Hudak, Andrew T. 2007. Um algoritmo de curvatura de várias escalas para classificar LiDAR de retorno discreto em ambientes florestais . Transações IEEE em Geociência e Sensoriamento Remoto. 45 (4): 1029-1038.
fonte
Vou recomendar PDAL a biblioteca de abstração de dados de pontos. Eu tive um bom sucesso usando o PDAL para um problema de filtragem semelhante. Eu gosto do PDAL porque é de código aberto, fornece suporte ao Python e facilita a reprodução do processamento e o controle dos meus parâmetros de filtragem. Também gosto porque possui 'pipelines' onde você pode encadear várias etapas (por exemplo, cortar, filtrar e exportar) e executá-las de uma só vez. Observe que, se você tem nuvens de pontos realmente grandes, o PDAL pode não ser tão rápido quanto algumas outras soluções (LASTools, QTM etc.).
Você poderia resolver o problema dos pontos periféricos com um pipeline PDAL semelhante ao seguinte:
Esse pipeline lê em um LAS, o recorta em uma extensão UTM especificada e, em seguida, executa um filtro que sinaliza todos os pontos externos, depois executa um segundo filtro que retém apenas pontos não externos (ou seja, o sinalizador de classificação! = 7) e depois exporta para GeoTIFF com uma resolução de 1 m. O filtro estatístico está executando um cálculo de distância média do vizinho mais próximo para testar se um ponto está ou não "muito distante" de seus vizinhos e, portanto, um valor externo.
A partir da documentação :
fonte
Como o OP não limitou as soluções ao código aberto, sugiro o Quick Terrain Modeler ( QT Modeler ). Requer uma licença. Carregue a nuvem de pontos no QT e incline-a essencialmente para obter a visualização do perfil desejada, elástico no cluster que você deseja remover e apenas pressione Excluir.
fonte
Tive sorte usando simplesmente uma variação focal em uma varredura interpolada. Você atribui os valores de variação aos seus pontos e usa um limite para remover variações localmente altas, representando grandes desvios da estimativa do kernel local.
Você precisa garantir que a resolução da superfície interpolada seja um grão suficientemente pequeno para capturar a variação local no (s) ponto (s). O tamanho do kernel também terá efeito, mas para os valores extremos únicos, uma janela 3x3 deve ser suficiente. Você pode perder alguns pontos adicionais, mas com o lidar você tem muitos dados de sobra.
fonte
O Lastools fornece exatamente o que você precisa - scripts automatizados que removerão todos esses pontos para você. Há um custo de licenciamento para isso, no entanto, mas se esse é um processo que você deseja executar rapidamente como uma tarefa regular, usar o script lasnoise do conjunto de ferramentas é uma opção perfeita.
Como @Andre Silva observou, o ArcGIS possui um conjunto de ferramentas, que você pode usar após executar a ferramenta de geoprocessamento Create LAS Dataset. A partir daí, você pode entrar manualmente para reclassificar ou excluir esses pontos de ruído. A desvantagem é que não é um processo tão intuitivo ou eficaz quanto o QT Modeler (sugerido por @auslander), provavelmente o melhor programa para visualizar / analisar / manipular arquivos de las manualmente e com um custo de licença também. O ArcMap limitará o número de pontos visíveis ao editar sua nuvem de pontos, o que significa que você provavelmente terá que aumentar o zoom em áreas com ruído, removê-las ou reclassificá-las e depois passar como parte de um processo de limpeza manual. Mas isso fará o trabalho.
fonte
Como disse Andre Silva , o MCC-LIDAR é uma boa opção para extrair os pontos de referência, mas, pela minha experiência, será difícil se você tiver uma nuvem de pontos muito grande (500 milhões de pontos ou menos). Em outras palavras, ele retornará um erro e não executará o algoritmo, mesmo se você alterar as configurações (parâmetros de escala e curvatura). Além disso, pela minha experiência, ele mantém alguns dos "erros negativos" nos dados.
Minha alternativa é inverter a nuvem de pontos (os pontos abaixo do solo subirão e o acima do solo descerá). Para conseguir isso, carrego os dados no R e inverto a altura, execute o MCC-LIDAR e inverta os dados. Você provavelmente poderia fazer isso no QGIS ou no ArcGIS, mas dependendo do tamanho do seu conjunto de dados, pode demorar um pouco.
A ferramenta PDAL chão também é uma boa opção como ele funciona melhor com conjuntos de dados maiores, mas, novamente, alguns dos pontos abaixo chão ainda serão mantidos. A inversão do conjunto de dados ajudará novamente a resolver esse problema.
Para os pontos acima do solo, minha melhor abordagem é uma limpeza manual e a melhor ferramenta de código aberto que encontrei para isso é no CloudCompare. Você escolherá
Segment
no menu da barra superior e poderá remover os pontos selecionados ou todos os outros. Eu usei o LAStools antes (lasview
ferramenta) para isso, mas a maneira como a interface 3D funciona não é tão fácil de usar.fonte
Sou um suporte técnico da GreenValley International, a ferramenta de remoção de Outlier em nosso software principal LiDAR360 pode ser usada para remover esses erros o máximo possível e, portanto, melhorar a qualidade dos dados.
O algoritmo procurará primeiro os pontos vizinhos de cada ponto dentro de uma vizinhança definida pelo usuário e calculará a distância média do ponto aos pontos vizinhos. Então, a média e o desvio padrão dessas distâncias médias para todos os pontos são calculados. Se a distância média de um ponto a seus vizinhos for maior que a distância máxima (distância máxima = média + n * desvio padrão, onde n é um número múltiplo definido pelo usuário), ele será considerado um desvio e será removido do original Nuvem.
fonte
Como opção de código aberto, o 3D Forest possui algumas boas ferramentas para filtrar automaticamente, bem como ferramentas manuais para limpar nuvens de pontos. Você pode ter que tentar com diferentes parâmetros de filtro para obter o resultado necessário. Embora seja orientado para nuvens de pontos da floresta, muitas ferramentas são úteis em qualquer nuvem de pontos.
fonte