2011-03-10 4 views
1

두 개의 멋진 글을 읽은 후 Algorithm for simplifying 3d surface? https://stackoverflow.com/questions/838761/robust-algorithm-for-surface-reconstruction-from-3d-point-cloud 나는 표면 재구성에 관한 질문이있다.원치 않는 겹치는 표면을 다루는 3D 점 구름으로부터의 표면 재구성?

범위 카메라의 3D 점 구름 데이터가 있습니다. 이는 포인트 클라우드 데이터가 시끄럽고 좌표 정보 (x, y, z) 만 가지고 스캔 된 부분의 표면 (일명 2.5D 데이터)을 나타냄을 의미합니다.

메쉬 라이징하기 전에 여러 정렬 데이터 (ICP 등)를 실행하여 여러 범위 데이터를 하나로 합칩니다. 어쨌든 정렬이 완벽하지 않아 합병 데이터 세트가 잘 맞지 않아 중복되는 데이터와 전체 데이터가 훨씬 시끄 럽습니다.

여기가 삽화입니다.

here are points representing a surface (shown as a line) 
..................................................... 


here are points representing actually the same surface as the one above, 
but due to imperfect alignment of multiple data sets they seem overlapping like onion shell. 
............................ 
    ............................. 
        ............................... 
       ....................................... 

알고리즘 (예 : 볼 피벗, 포아송, 행진 큐브)이 이러한 상황을 처리 할 수 ​​있습니까? 또는 겹치는 서페이스를 줄이기 위해 데이터 집합을 더 얇게 만들려면 몇 가지 전처리가 필요합니까?

btw, 필자는 이러한 데이터 세트에서 서페이스를 재구성하기 위해 볼을 피벗하는 MeshLab을 시도했습니다. 작동하지만 일부 표면 법선이 잘못된 방향으로 생성됩니다. 나는 겹치는 점이 그런 문제를 일으킨다고 생각한다.

메쉬 랩에서 생성 된 표면으로 흰색과 검은 색 표면이 법선 방향이 다릅니다. image

모든 제안과 가능한 답변을 주셔서 감사합니다.

답변

2

답변에 관심이 있으시길 바랍니다. 시도 할 수있는 한 가지 방법은 지점 간 거리 대신 지점 간 거리를 사용하여 ICP를 정의하는 것입니다. 지점 간 거리는 다음과 같습니다. 여기서 a와 b는 대상 점 집합에 있고 p는 ICP에 등록 할 집합의 점입니다. 가장 가까운 점은 a이고 거리는 | a-p |입니다. | C-P |

a--------b 
\ 
    \ 
    p 

포인트 - 평면 거리 (C)는 선분 AB 상 (P)의 돌출부와의 거리 인 존재와 같이된다.

a--c-----b 
    | 
    | 
    p 

점 대 평면이 유리할 수있는 이유는 '.' 포인트는 한 스캔에서 나오고 'o'포인트는 다른 스캔에서 온 것입니다. ICP는 수평선에있는.와 o가 완벽하게 일치하지만 수직선에있는 것과는 일치하지 않는 이와 같은 로컬 최소값에 걸릴 수 있습니다. 'o'를 왼쪽으로 움직일 수는 없기 때문에 수평 포인트의 오정렬이 너무 커지게됩니다. 당신이 왼쪽에있는 '오의 슬라이드로 해당 지역의 최소에 집착하지 않을 수 있도록 포인트 - 투 -면 거리

. .o .o .o .o .o .o .o 
. o 
. o 
. o 

, 당신은 수평 지점에서 오류가 발생하지 않을 것이다. 필자는 ICP와 지점 간 거리를 사용하여 결과로 설명한 오류와 같은 "양파"를 보았습니다.

해결할 수있는 또 다른 방법은 해상도를 낮게 유지하면서 점수를 클러스터링하는 것입니다. Meshlab에는 필터 -> 샘플링 -> 클러스터 된 버텍스 서브 샘플링이 있습니다. 그것은 "양파와 같은 겹겹이 쌓기"를 줄일 수 있습니다.

meshlab에서 벗어나는 일관성없는 법선과 관련하여 걱정되는 모든 것이 meshlab에서 시각화되면 ctrl-d는 "양면 조명"을 켜고 검정 영역을 제거합니다. 일관된 법선이 정말로 필요하다면, meshlab에는 "Normals, Curvatures and Orientation-> Reorient all faces coherently"라는 필터가 있습니다. 불행히도 저에게는 효과적이지 않습니다. 보유하고있는 데이터의 종류에 따라, 특히 거리 센서에서 오는 경우 메쉬면의 법선이 센서를 향해야한다는 것을 이미 알고 있기 때문에 데이터를 후 처리하고 뒤집기가 쉽습니다 잘못된 방향을 가리키는 것들 (법선과보기/측정 방향의 내적을 표시).

+1

"법선, 곡률 및 오리엔테이션 -> 모든 얼굴을 일직선으로 재구성"도 저에게 효과적이지 않았습니다. – elgcom