2016-09-27 3 views
5

저는 Lidar 센서 (Pepperl-Fuchs R2000)에서 데이터 (거리 및 진폭)를 얻는 객체 추적 프로젝트를 진행하고 있습니다. OpenGL 및 C++ 사용하기 리눅스 머신에 데이터를 표시하고 있습니다.
enter image description here 이제 점을 기준으로 클러스터에 포인트를 그룹화하려고합니다. C++에서 별도의 컨테이너에 모든 클러스터를 저장하는 방법을 모르겠습니다. 오브젝트 추적을 위해 OpenGL의 출력 데이터를 OpenCV의 입력 데이터로 사용할 수 있습니까?OpenGL을 사용한 C++의 데이터 클러스터링

+0

이미지에 질문을 추가 할 수 있습니다. – ChronoTrigger

답변

5

OpenCV 구조로 OpenGL 데이터를 변환해야합니다. OpenCV에는 데이터를 공유하기위한 몇 가지 기본 제공 함수가 있습니다 (look here). 또한 OpenGL 포인트를 OpenCV Mat 또는 OpenCV cv::Point3f의 벡터로 복사 할 수 있습니다. OpenGL에서 행렬을 OpenCV로 변환해야하는 경우 OpenGL이 행렬 순서로 행렬을 저장하는 반면 OpenCV는 행 우선 순서로 행렬을 저장한다는 점을 고려해야합니다.

그런 다음 OpenCV는 일부 (제한적) clustering solutions을 제공합니다. 응용 프로그램에 따라 k-means가 작동 할 수도 있지만 QuickShift 또는 DBSCAN과 같은 다른 클러스터링 기술을 사용하는 것이 좋습니다.

1

OpenCV에서 Map (또는 [Point_] 또는 [KeyPoint] 사용시 2) 기능을 사용하여 모든 데이터를 쉽게 매핑 할 수 있습니다.
밀도를 기반으로 작동하고 K- 평균과 같은 클러스터의 수를 미리 정의 할 수 있다고 생각하지 않기 때문에 클러스터 수를 필요로하지 않으므로 사용을 제안합니다.

참고 : 인터넷에서 DBSCAN의 C++ 코드를 쉽게 찾을 수 있습니다.