ArUCo Marker는 OpenCV의 오픈소스 라이브러리로, 컴퓨터 비전 분야(증강현실, 로보틱스) 에서 널리 사용되는 피델리티 마커(fiducial marker)다. 다른 말로 특정한 패턴을 가진 마커를 컴퓨터가 식별해 위치와 방향을 파악할 수 있도록 도와주는 레퍼런스 마커인 셈이다.
흑백의 정사각형들이 NxN 크기의 고유한 패턴을 이루고 있어 QR코드와 유사하게 생겼다.
각각의 마커는 좌표 체계가 있어 컴퓨터가 물체의 위치와 3차원 상의 자세(pose)를 파악할 수 있게 해준다.
먼저 마커를 검출하고 4개 코너의 좌표를 구한다.
코너 좌표와 카메라 캘리브레이션을 통해 카메라 좌표계에서 3차원 자세를 추정한다.
개별 마커를 생성
고유한 마커들이 모여있는 딕셔너리 생성
- 각 마커는 딕셔너리 내에서 고유한 ID를 가짐
마커 검출을 위한 파라미터 정의
마커 검출
3차원 자세 추정
카메라의 파라미터를 알면, 2D 이미지와 3D 세계 사이의 관계를 정확히 이해할 수 있다(=월드 좌표계를 카메라 좌표계로 변환). 이는 더욱 정확한 측정으로 이어진다.
카메라의 렌즈 왜곡, 내부 파라미터(예: 초점거리, 주요지점) 및 외부 파라미터(예: 카메라의 위치와 방향)를 정확하게 이해하고 조정해야 한다.
내부 카메라 행렬
외부 카메라 행렬
카메라 보정은 대체로 다음과 같은 단계로 이루어진다.
보정 패턴 준비: 체스보드 패턴과 같은 표준화된 보정 패턴을 사용. 이 패턴은 카메라에 의해 쉽게 인식되고 분석될 수 있는 명확한 기하학적 특징을 가지고 있다.
이미지 캡처: 다양한 각도와 거리에서 보정 패턴의 여러 이미지를 캡처. 이렇게 하여 카메라가 다양한 시나리오에서 보정 패턴을 어떻게 감지하는지 이해할 수 있.
파라미터 계산: 캡처된 이미지를 분석하여 카메라의 내부 및 외부 파라미터를 계산. 이 과정에서는 일반적으로 OpenCV와 같은 컴퓨터 비전 라이브러리를 사용(calibrateCamera 함수).
왜곡 교정: 계산된 파라미터를 사용하여 카메라의 렌즈 왜곡을 교정.
결과 검증: 보정된 카메라를 사용하여 추가 이미지를 캡처하고, 보정이 성공적으로 이루어졌는지 확인.
참고자료