2017-01-25 73 views
0

ORB-SLAM2을 사용하여 응용 프로그램을 구현했습니다. 현재 내 활동에 OpenCV JavaCameraView이 있고 카메라 프레임을 Mat으로 변환하여 SLAM 시스템으로 보냅니다. 모든 것이 제대로 작동하지만 카메라 화면의 올바른 위치에 가상 객체를 렌더링하고 표시하는 방법을 모르겠습니다.ORB SLAM 2 - AR 구현 Android 용

가상 객체로 화면에 간단한 텍스트를 보여주는 간단한 AR 응용 프로그램을 구현하고 싶습니다. 이를 달성하기위한 조치를 취하실 수 있도록 도움을 주실 수 있습니다.

+0

기본 텍스트 그리기를 원한다면 카메라 표면보기에서 검색된 캔버스를 사용하고 감지 된 좌표가있는 텍스트를 그릴 수 있습니다. 정확한 어려움은 무엇입니까? – yakobom

+0

@yakobom, 현재 SLAM 시스템 만 실행할 수 있으며 사용자가 새 가상 텍스트를 추가하려고 할 때 x와 y를 계산하는 방법을 모를 때 무엇을 수집해야하는지 모릅니다. 추적 스레드가 실행 중일 때 언급 한 캔버스에 그 텍스트를 그립니다. –

답변

0

은 무엇 당신이 할 수있는 것은 :

  1. ORB-SLAM에서 당신이 3D 점의 포인트 클라우드가 있습니다. 이 포인트 클라우드에 가상 객체를 놓아야합니다. 즉, 가상 객체의 점에 x, y 및 z 좌표를 지정해야합니다.
  2. 그런 다음 이러한 3D 점을 이미지 평면에서 카메라의 특정 투영 행렬을 사용하여 2D 이미지 평면에서 3D 점의 위치를 ​​알려줍니다.
  3. 그러면 2D 위치에 따라 이미지에 객체/점을 그려야합니다 (2).

ORB-SLAM 자체도 간단한 AR을 수행하는 기능을 가지고 있습니다. 사용하는 코드를 살펴볼 수도 있습니다.

+0

예, AR 샘플을 보았습니다. 하지만 안드로이드로 변환 할 수 없습니다. 모든 기능은 Linux 라이브러리 용이었습니다. –

+0

현재 모든 3D 점을 가져 와서 화면에 투사 할 수 있습니다. 이제 문제는 사용자가 2D 화면에서 3D 점을 터치 한 곳으로 어떻게 변환 할 수 있습니까? 원래 ORB_SLAM의 샘플 AR 소스 코드는 카메라 아래의 평면 만 생성한다는 것을 알고 있습니다. –

+0

저는 또한 지금도 같은 작업을하고 있습니다. 유니티 사용법에 대해 열려 있습니까? 나는 그것을 iOS에서 성공적으로 사용했다. 나는 움직일 수있는 3D 공간에 물체를 놓았다. –