[ArUCo Marker] Intro

서대철·2023년 11월 16일
0

개요

ArUCo Marker는 OpenCV의 오픈소스 라이브러리로, 컴퓨터 비전 분야(증강현실, 로보틱스) 에서 널리 사용되는 피델리티 마커(fiducial marker)다. 다른 말로 특정한 패턴을 가진 마커를 컴퓨터가 식별해 위치와 방향을 파악할 수 있도록 도와주는 레퍼런스 마커인 셈이다.

흑백의 정사각형들이 NxN 크기의 고유한 패턴을 이루고 있어 QR코드와 유사하게 생겼다.

각각의 마커는 좌표 체계가 있어 컴퓨터가 물체의 위치와 3차원 상의 자세(pose)를 파악할 수 있게 해준다.


먼저 마커를 검출하고 4개 코너의 좌표를 구한다.


코너 좌표와 카메라 캘리브레이션을 통해 카메라 좌표계에서 3차원 자세를 추정한다.

사용법

  1. 개별 마커를 생성

  2. 고유한 마커들이 모여있는 딕셔너리 생성
    - 각 마커는 딕셔너리 내에서 고유한 ID를 가짐

  3. 마커 검출을 위한 파라미터 정의

    • openCV의 디폴트 값을 사용해도 무방
  4. 마커 검출

    • 코너(꼭짓점) 좌표 구하기
    • contour (등고선) 알고리즘의 활용
      - cv2.aruco.detectMarkers 함수 활용
  5. 3차원 자세 추정

  • cv2.aruco.estimatePoseSingleMarkers함수 활용
  • 필요한 파라미터: 1) 내부 카메라 행렬 2) 렌즈 왜곡 계수
    - 3차원 이미지(world 좌표계)를 2차원으로 변환(camera 좌표계)하는 과정에서의 오차를 최소화하기 위함 (=카메라 캘리브레이션)

camera calibration (보정)

카메라의 파라미터를 알면, 2D 이미지와 3D 세계 사이의 관계를 정확히 이해할 수 있다(=월드 좌표계를 카메라 좌표계로 변환). 이는 더욱 정확한 측정으로 이어진다.

카메라의 렌즈 왜곡, 내부 파라미터(예: 초점거리, 주요지점) 및 외부 파라미터(예: 카메라의 위치와 방향)를 정확하게 이해하고 조정해야 한다.

내부 카메라 행렬

  • 카메라 파라미터에 대한 3X3 행렬
  • 초점 거리, 이미지 중심 좌표, 축 사이의 기울기 등의 행렬

외부 카메라 행렬

  • 3X1 회전 행렬과 3X1 이동 벡터의 조합

카메라 보정 방법

카메라 보정은 대체로 다음과 같은 단계로 이루어진다.

  1. 보정 패턴 준비: 체스보드 패턴과 같은 표준화된 보정 패턴을 사용. 이 패턴은 카메라에 의해 쉽게 인식되고 분석될 수 있는 명확한 기하학적 특징을 가지고 있다.
    업로드중..

  2. 이미지 캡처: 다양한 각도와 거리에서 보정 패턴의 여러 이미지를 캡처. 이렇게 하여 카메라가 다양한 시나리오에서 보정 패턴을 어떻게 감지하는지 이해할 수 있.

  3. 파라미터 계산: 캡처된 이미지를 분석하여 카메라의 내부 및 외부 파라미터를 계산. 이 과정에서는 일반적으로 OpenCV와 같은 컴퓨터 비전 라이브러리를 사용(calibrateCamera 함수).

  4. 왜곡 교정: 계산된 파라미터를 사용하여 카메라의 렌즈 왜곡을 교정.

  5. 결과 검증: 보정된 카메라를 사용하여 추가 이미지를 캡처하고, 보정이 성공적으로 이루어졌는지 확인.


참고자료

0개의 댓글