• Nenhum resultado encontrado

Rejeição de más correspondências

No documento Scanner a 3D (páginas 102-106)

4. Construção do modelo tridimensional

4.5 Processamento

4.5.4 Rejeição de más correspondências

Após terem sido encontradas as correspondências entre nuvens de pontos é possível rejeitar algumas delas baseadas em condições específicas. A biblioteca PCL disponibiliza uma classe denominada pcl::CorrespondenceRejectorSampleConsensus capaz de rejeitar as más correspondências desse conjunto. Este algoritmo de rejeição de correspondências é baseado no método RANSAC, sendo utilizado para estimar uma transformação para um conjunto de correspondências e eliminar as correspondências de outliers com base na distância euclidiana

sendo capaz de produzir correspondências ligeiramente diferentes. Além disso, ele fornece uma boa estimativa inicial para o algoritmo ICP. Através da configuração dos parâmetros deste algoritmo é possível controlar a quantidade de correspondências resultantes. A função

setInlierTreshold é utilizada para definir a distância máxima entre pontos correspondentes. Por

fim, através da função setMaxIterations é possível estabelecer o número máximo de iterações para o algoritmo completar o processo.

Na Figura 52 é possível visualizar a estimativa das correspondências entre dois conjuntos de dados, sendo utilizadas para o efeito duas nuvens de pontos com um pequeno desfasamento entre si. A Figura 52-a ilustra todas as correspondências encontradas entre dois conjuntos de dados ligeiramente desfasados entre si. Na Figura 52-b é possível visualizar as correspondências encontradas após ter sido aplicado o algoritmo de rejeição de correspondências baseado no método RANSAC.

(a) (b)

Figura 52: Estimativa das correspondências (a) e correspondências obtidas após rejeição (b)

4.6 Registo de nuvens de pontos

O processo de registo consiste no alinhamento de várias nuvens de pontos num único modelo capaz de descrever de forma completa um determinado objeto. A partir das correspondências obtidas através dos descritores de características dos pontos de interesse de cada nuvem de pontos é possível encontrar um método capaz de alinhar corretamente estas duas nuvens de pontos. Tal como mencionado anteriormente, o algoritmo ICP implementado na biblioteca PCL tem as suas limitações na interseção de duas nuvens de pontos registadas. Como tal, este algoritmo será utilizado para aperfeiçoar o alinhamento após uma transformação inicial

ter sido executada nesse conjunto. Assim sendo, o processo de registo de nuvens de pontos é dividido em 2 partes: o alinhamento inicial e o alinhamento refinado. A Figura 53 ilustra as etapas de processamento que antecedem o processo de registo de nuvens de pontos.

Figura 53: Processo de registo de duas nuvens de pontos

O processo de registo pretende resolver a transformação e rotação de uma nuvem de pontos capturada para se encaixar no modelo das nuvens de pontos previamente capturadas. A concatenação de duas nuvens de pontos resulta num modelo parcialmente construído do modelo global que se pretende de um objeto. Na primeira iteração do processo de registo de duas nuvens de pontos, o modelo global está vazio e, como tal a nuvem de pontos resultante é movida para o modelo global. Na iteração seguinte a nuvem de pontos que se segue, capturada a partir de um ângulo ligeiramente diferente, será processada com o modelo global obtido anteriormente, e assim sucessivamente. Na última iteração, é feita uma comparação entre o último modelo obtido e a primeira nuvem de pontos capturada por forma a tornar este processo um ciclo fechado sem qualquer perda de informação. A Figura 54 ilustra o processo de emparelhamento de nuvens de pontos implementado.

Figura 54: Processo de emparelhamento de nuvens de pontos

4.6.1 Alinhamento Inicial

A etapa de estimativa de transformação inicial é realizada após a correspondência dos pontos entre as nuvens de pontos de origem (source) e de destino (target) terem sido filtradas. O objetivo do alinhamento inicial consiste em encontrar a transformação para a nuvem de pontos capturada em relação ao modelo global previamente processado. Assim sendo, dependendo da qualidade das correspondências encontradas, as áreas que se intersetam das duas nuvens de pontos são quase coincidentes após esta transformação, portanto esta etapa pode servir como boa estimativa inicial para o alinhamento de refinamento ICP.

Na biblioteca PCL, existem vários métodos de transformação de nuvens de pontos sem a necessidade de qualquer parâmetro. Nesta dissertação, dois métodos foram implementados:

TransformationEstimationSVD e TransformationEstimationLM. O primeiro método é uma

solução em forma fechada com base na decomposição do valor singular de uma matriz de covariância de dados, proporcionando a melhor solução possível para um único passo. O segundo método é um algoritmo iterativo baseado em mínimos quadrados.

4.6.2 Alinhamento Refinado

O alinhamento inicial é uma transformação rígida que pode não ser totalmente aceitável para uma análise de deformação final. Apesar disso, um algoritmo de refinamento é utilizado para encontrar uma transformação mais precisa entre as duas nuvens de pontos. Como mencionado anteriormente, o método ICP é o algoritmo mais popular aplicado nesta área. Este algoritmo é utilizado para alinhar as duas nuvens de pontos o mais próximo possível. Na

biblioteca PCL existem diversas funções aplicadas para definir os parâmetros de controlo deste processo. A função setMaximumIterations é utilizada para controlar o número máximo de iterações de execução deste algoritmo. Para além desta, a função setTransformationEpsilon é importante para definir a diferença máxima entre duas nuvens de pontos consecutivas. Estes dois valores são utilizados para determinar o momento em que o método ICP alcança a convergência. Através do parâmetro da função setRANSACOutlierRejectionThreshold é possível definir o limite de distância para cada inlier para o ciclo interno de rejeição de outlier baseado no método RANSAC. O método considera um ponto inlier, se a distância entre o índice de dados da nuvem de pontos alvo e da nuvem de pontos de origem transformada for menor que um certo limite de distância pré-definido. Por fim, o parâmetro da função

setMaxCorrespondenceDistance permite definir o limite máximo de distância entre dois pontos

correspondente entre a nuvem de pontos de origem e alvo. Se a distância for maior que esse limite, os pontos são ignorados no processo de alinhamento.

No documento Scanner a 3D (páginas 102-106)