Hello ! PCL

11626 단어 PCLC++
PCL(Point Cloud Library)에 대한 학습을 소개하고 싶습니다공식 웹사이트 자습서.잘못이나 이상한 점이 있으면 지적해 주세요.
각 상세한 강좌도 수시로 업데이트됩니다!

PCL 개요


우선, 나는 강좌를 보기 전에 개요를 먼저 알고 싶다!
PCL은 대규모의 3D 점군 개방 프로젝트로 필터, 특징 평가, 서핑 재구성, 포지셔닝, 모델 의합, 분할 등 많은 가장 선진적인 알고리즘을 포함한다.
키넥트 센서의 등장으로 누구나 실시간으로 점군(point cloud)을 확보할 수 있고, 이 3차원 점군을 처리할 수 있는 프로그램 라이브러리가 PCL이라는 점에서 주목받고 있다.
VTK와 OpenNI와 협업할 수 있으며 3D 디스플레이는 VTK에서 할 수 있으며 OpenNI를 통해 Kinect 데이터를 얻을 수 있다.

1. Features


・ k-NN, 법선 추측 등
Feature 라이브러리에는 점 그룹 데이터에서 3D 피쳐를 추측하기 위한 데이터 구조와 메커니즘이 포함됩니다(피쳐 점 검색의 경우 3.KeyPoints에서 설명됨).이것들은 주로 법선(normals)을 추측하는 데 쓰인다.수직 정보는 빛 반사 등 시각적 효과를 만드는 중요한 정보다.
3D 피쳐는 점 그룹과 공간을 사용하여 점 주위에서 얻은 정보에 따라 형상 패턴으로 그려진 점을 나타냅니다.조회점 주위의 선택한 데이터 공간을 k 부근(k-neighborhood)이라고 부른다.PCL은 부근의 환경을 효과적으로 구하기 위해 octree나 kD-tree 등 공간 분할 기술을 이용하여 이를 작은 덩어리로 나누어 가장 가까운 이웃 탐색을 한다.
점조에서 나온 법선은'최소 2승법(least-squares)을 통해 평면을 국부점조(k 부근)에 적용하고 이 평면을 파도타기로 보고 파도타기의 수직 방향을 법선으로 설정한다'는 것으로 추정된다.이렇게 요구할 수 있다.
Documentation: http://docs.pointclouds.org/trunk/group__features.html
Tutorials: http://pointclouds.org/documentation/tutorials/#features-tutorial

2. Filter


• 소음 제거, 샘플링 감소 등
측정 오차로 인해 일부 데이터는 소음을 일으킬 수 있다.이것은 국부점군의 3차원 특징을 예측하기 어려울 수도 있다.
이러한 편차값(outlier)의 일부분은 각 점 부근에서 통계 분석을 하고 일정한 기준에 부합되지 않는 부분을 잘라서 배제할 수 있다.PCL의 희소값 제거는 입력 데이터 세트의 인접 거리 분포를 기준으로 계산됩니다.
Documentation: http://docs.pointclouds.org/trunk/group__filters.html
Tutorials: http://pointclouds.org/documentation/tutorials/#filtering-tutorial

3. I/O


• 파일 입출력
I/O 라이브러리에는 PCD(point cloud data) 파일을 읽고 쓰는 것은 물론 다양한 감지 장치에서 점군을 가져오는 관련 클래스와 함수도 포함됩니다.OpenNI와 협력하기 때문에 Kinect 데이터도 얻을 수 있습니다.
Documentation: http://docs.pointclouds.org/1.7.2/a02409.html
Tutorials: http://pointclouds.org/documentation/tutorials/#i-o

4. Keypoints


· 특징점 검색(AGAST, BRISK, Harris, NARF, SIFT 등)
Keypoints 라이브러리에는 피쳐 점 검색 알고리즘이 포함되어 있습니다.피쳐 점은 이미지와 점군에서 정의된 판단 기준을 사용하여 구분할 수 있는 변하지 않고 독특합니다.
PCL뿐만 아니라 컴퓨터 시각 시스템의 이미지와 3D의 특징량을 사용하여 다음과 같은 3단계를 순서대로 계산한다.
① Keypoint 테스트(pcl:keypoint)
② Keypoint의 Descriptor 계산(pcl:features)
③ Descriptor 간의 대응 계산 (pcl::search,pcl:kdtree)
Documentation: http://docs.pointclouds.org/trunk/group__keypoints.html
Tutorials: http://pointclouds.org/documentation/tutorials/#keypoints-tutorial

5. KdTree


• 최근 이웃 탐색, 샘플링 강하 등
PCL의 KdTree 모듈은 FLANN이라는 프로그램 라이브러리를 사용하여 가장 가까운 이웃 검색을 신속하게 할 수 있습니다.뒤에 서술한 Octree도 "3D 공간을 효과적으로 분할하기 위해 고속으로 탐색하는 구조"라고 설명했다.
예를 들어 1만 점으로 구성된 3D 점군 데이터에서 특정한 관심점의 10개 부근점을 찾으려고 할 때 kdtree가 없으면 전체 탐색을 하면 1만 점 전체의 관심점과의 거리를 계산하지만 kdtree를 사용하면 2진적 검색이 되기 때문에 검색 범위를 효율적으로 집중해야 한다.비교적 적은 계산 원가로 부근의 탐색을 진행할 수 있다.
Documentation: http://docs.pointclouds.org/1.7.2/a02410.html
Tutorials: http://pointclouds.org/documentation/tutorials/#kdtree-tutorial
다음은 3차원적인 kd트리입니다. 뿌리 단원(흰색)을 먼저 2개 부분 단원(빨간색)으로 분할한 다음에 2개(녹색)로 분할합니다.마지막으로 네 개의 칸을 각각 두 개의 (파란색) 칸으로 나눈다.더 이상 분할되지 않았기 때문에 최종적으로 형성된 8개의 칸을 잎 칸이라고 부른다.노란 공은 나무의 꼭대기를 대표한다.


6. Octree


• 최근 이웃 탐색, 샘플링 강하 등
Octree 모듈은 kd-tree와 마찬가지로 점 그룹 데이터로부터 계층 트리 구조를 효과적으로 만드는 데 사용됩니다.CG업계에서도 자주 사용되는데 대상의 3D 데이터를 탐색하고 처리하기 위해 8분목으로 효율성 있는 구조를 미리 제작하는 공간 분할 데이터 구조다.
Octree는 데이터의 배열 상황에 따라 3차원 공간에서의 대상(점 그룹)에 대해 적응된 공간 분할을 할 수 있기 때문에 각 노드(입방체)에 대해 점의 밀도를 계산할 수 있고, kdtree처럼 나무 구조를 이용하여 8분의 나무 탐색을 할 수도 있고, 격자마다 점유도(Occupancy)를 관리할 수도 있다.
Documentation: http://docs.pointclouds.org/1.7.2/a02412.html
Tutorials: http://pointclouds.org/documentation/tutorials/#octree-tutorial

7. Range Images


각 픽셀 값과 센서의 거리 또는 깊이를 나타내는 이미지를 Range image 또는 Depth map이라고 합니다.
카메라의 내부 매개 변수를 알면 range 이미지를 점 그룹에 잃어버릴 수 있습니다.
Tutorials: http://pointclouds.org/documentation/tutorials/#range-images

8. Recognition


물체 식별
Recongnition 모듈에는 물체 식별 응용에 사용되는 알고리즘이 포함되어 있습니다.다만, 그런 종류 자체가 그렇게 많지 않다는 인상을 준다.RANSAC의 기본적인 인식 등이 있다.
Documentation: http://docs.pointclouds.org/1.7.2/a02414.html
Tutorials: http://pointclouds.org/documentation/tutorials/#recognition-tutorial

9. Registration


등록
일부 현지 데이터 집합을 전 세계 일치 모델에 결합시키는 기술을 등록이라고 한다.이것은 데이터 집합 사이의 대응하는 점(pcl::keypoint,pcl:features)을 확정하고 대응하는 점 사이의 거리(alignment error)를 가장 적게 변환하는 방법입니다.해당 점 검색은 데이터 세트의 자세와 방향에 영향을 미치므로 반복적으로 계산됩니다.대응하는 점 사이의 거리가 어느 한도값 이하일 때 등록 처리가 끝납니다.
Documentation: http://docs.pointclouds.org/trunk/group__registration.html
Tutorials: http://pointclouds.org/documentation/tutorials/#registration-tutorial


10. Sample Consensus


・물체 검측, 분할 등
RANSAC 이런 방법은 평면과 원통의 검측에 쓰인다.평면의 의합은 벽, 마루, 책상 등의 파도타기 검측 임무에 자주 사용된다.
Documentation: http://docs.pointclouds.org/1.7.2/a02416.html
Tutorials: http://pointclouds.org/documentation/tutorials/#sample-consensus

11. Segmentation


분할
PCL의 Segmentation 모듈에는 구분 가능한 클러스터에 병합할 수 있는 알고리즘이 포함되어 있습니다.이러한 알고리즘은 많은 공간에서 독립된 영역으로 구성된 점 그룹을 처리하는 데 적용된다.집합 등을 사용하면 점군을 자동으로 여러 개의 덩어리 모양으로 분리할 수 있다.하지만 그림처럼 예쁜 분할은 어려울 것 같다.
Documentation: http://docs.pointclouds.org/1.7.2/a02418.html
Tutorials: http://pointclouds.org/documentation/tutorials/#segmentation-tutorial

12. Surface


Surface 모듈에는 메쉬 생성, 부드럽게 하기, 재샘플링 등이 포함됩니다.평활화와 재샘플링은 점군이 신경이 과민할 때와 완전히 일치하지 않는 다중 스캐닝으로 구성된 것을 처리할 때 매우 중요하다.
정보는 점군 주변에서 서핑을 만드는 일반적인 방법이다.
convex hull 또는 conceave hull 예를 들어 간단한 파도타기의 모양을 알고 싶거나 경계를 알고 싶을 때 효과적입니다.
Documentation: http://docs.pointclouds.org/1.7.2/a02419.html
Tutorials: http://pointclouds.org/documentation/tutorials/#surface-tutorial

13. Visualization


• 시각화
Visualization 모듈은 점 그룹 및 알고리즘 결과를 3D로 시각화할 수 있습니다.
OpenCV가 말한 하이 gui처럼
Documentation: http://docs.pointclouds.org/1.7.2/a02420.html
Tutorials: http://pointclouds.org/documentation/tutorials/#visualization-tutorial

좋은 웹페이지 즐겨찾기