Extrinsic Calibration

강형우·2023년 2월 7일
0

CameraCalibration

목록 보기
2/2

Extrinsic

Extrinsic

  • 카메라의 고유한 특성인 Intrinsic Calibration의 의미와 방법을 학습했다.
    • chessboard를 이용하여 카메라의 focal length, principle point, distortion 계수를 구하는 방법과 활용하는 방법을 배웠다.
  • 목표: Extrinsic Calibration의 의미와 방법을 학습한다.
    • 카메라의 외부적인 특성; 카메라와 대상 피사체가 어떠한 위치적 관계를 이루고 있는지 또는 카메라가 어떠한 각도로 피사체를 촬영하고 있는지 위치와 자세에 관한 extrinsic calibration에 대해 의미와 관계에 대해 학습해보자.
  • 지금까지 학습한 내용 중에서 반복하여 언급한 내용이 있다.
    1. computer Vision에서 사용하는 좌표계는 [월드 좌표계], [카메라 좌표계], [이미지 좌표계], [정규 이미지 좌표계]가 있다.
    1. 카메라는 3차원 공간에 존재하는 물체를 2차원 공간에 투영하는 센서이다.
  • Extrinsic Calibration은
      1. 월드 좌표계 -> 카메라 좌표계, 카메라 좌표계 -> 월드좌표계를 이해하기 위한 과정이다.
      1. 카메라가 실제로 존재하는 3차원 공간에 대한 정보를 다룬다.
  • Computer Vision을 활용한 자율주행 분야에서 Extrinsic Calibration은 두 가지 활용 방법을 위해 Extrinsic Calibration을 수행한다.
      1. Sensor Fusion을 위한 정보로 활용
      1. Perception Application을 위한 정보로 활용
  • Extrinsic Calibration은 환경과 조건에 따라 목적과 방법이 달라진다.
    다양한 방법론을 소개하고, 자신에게 주어진 환경에 맞는 고유한 방법을 찾아야 한다.
    (범용적인 솔루션이 없다 -> 센서의 종류, 개수, 장착 위치 등 변수가 많음)
  • 자율주행 차량은 자동차의 경우, 모든 정보를 자동차 좌표계에 정보를 통일한다. 일반적으로 자동차 좌표계는 후륜 구동축의 중심 지면을 원점으로 한다(ISO8855기준)
  • 자율주행 차량에 장착되는 센서는 그 종류가 매우 다양하다.
    1. 카메라: 카메라 좌표계를 따름
    2. LiDAR: LiDAR 좌표계를 따름
    3. GPS, IMU: 각 센서의 좌표계를 따름...
      각 센서의 장착 위치가 다르고, 사용하는 좌표계가 다르기 때문에 이를 통합하는 과정이 필요하다.(Sensor Fusion의 영역)
  • 따라서 카메라의 (Vehicle Coordinate를 기준으로) 장착 위치와 자세를 파악해야 한다.
    • 원점에서 카메라로 -> Extrinsic, 카메라에서 원점으로 -> Extrinssic의 역행렬
  • Intrinsic Calibration에서 objpoints를 설정했던 것을 생각해보자.

    • (0,0,0)지점에서 카메라가 실제로 있는 위치의 rvec, tvec를 출력했다.
    • 원하는 특정한 지점을 기준으로 지점으로부터의 카메라의 위치와 자세를 표현할 수 있다.
    • 차량의 중심 축으로 부터 포인트를 어떻게 계산 ?
  • 해당 rvec, tvec값을 사용하여 objpoints를 투영하면, 해당 평면의 3차원 물체가 투영된다.
    • 체스보드에서 원점을 Origin으로 설정한 다음에, points들을 실제로 우리가 projectPoints할때 생성을 했다.
    • 1mm단위로 100개가 되는 point array를 object point로 설정을 하고 여기서 얻어낸(Origin에서) rvec와 tvec를 이용을 하면 평면에 대한, 좌표계 기준이 되는 이 지점으로 부터의 투영이 발생하는것을 확인했다.
    • 중요한것은 기준으로부터 rvec,tvec를 계산을 하고 기준으로 부터 생성된 point들이 우리가 원하는 지점에 Projection이 되는지 확인을 해봐야 한다. 그러기 위해선 우리가 Origin을 어떻게 설정하느냐가 매우 어려운 문제일 것이다. 우리가 살고있는 공간은 3차원공간인데, 체스보드를 기준으로 직육면체를 그리게 되면 직육면체에 해당하는 Origin point가 여러개가 있을 수 있다. 그렇게 되면 일정한 공간을 가지는 rvec,tvec가 무수히 나오게 되는데 우리는 특정한 평면을 지정해야 한다.
  • 그러나 카메라가 존재하는 공간은 3차원이기 때문에, Extrinsic Calibration의 Origin을 보드로 설정하기 어렵다.
    • 체스보드가 아닌 다른 방법이 필요하다.
  • 따라서 objpoints의 origin을 어느 한 점으로 설정하고, 카메라 캘리브레이션을 수행하면 해당 origin으로부터의 카메라 rvec, tvec를 얻을 수 있다.
  • 아래 사진에서 Tire clamps와 Distance meter를 사용하면, 후륜 축으로부터의 거리을 파악할 수 있다. 두 개의 거리 측정기를 사용하여 Calibration Pattern과 차량의 수평을 조절할 수 있다.
  • 해당 작업이 추가되면 objpoints는 어떻게 변화할까?
    • Extrinsic Calibration은 rvec와 tvec를 계산하는 것이 가장 중요한데, rvec와 tvec는 어떤 원점으로 생성한 objpoint의 (0,0,0)을 기준으로 하는 지점으로 부터 카메라로 오기까지의 r,t을 의미한다. 그렇다면 어떠한 지점, origin이라고 설정을 하는 방법이 방법에 따라서 다양하게 구분을 지을 수 있다.
  • 해당 작업이 추가되면 objpoints는 어떻게 변화할까 ?

    • Extrinsic Calibration을 할 단계가 됐으면 Intrinsic Calibration은 종료가 되는 경우가 많다. Focal length와 Principle points를 알고있다 라는 상태가 보통은 주를 이루기 때문에 OpenCV에서는 Calibrate Camera 같은 경우엔 Intrinsic과 Extrinsic 모두 한 Point에 대해서 계산을 해주고, 만약 Objectpoints자체가 Intrinsic은 카메라 Extrinsic의 영향을 받지 않고 카메라 고유한 특성을 파악하는 것이기 때문에 Chessboard를 원점으로 두고 하는 작업이 맞고 Extrinsic을 계산할때는 Intrinsic은 변화가 없는 상태에서 Extrinsic만 계산해야 하기 때문에 함수가 두 개로 분리가 되어있다.
  • 해당 작업이 추가되면 objpoints는 어떻게 변화할까?
  • retval, rvec, tvec = cv.solvePnp(objpoints, imgpoints, mtx, dist)
    • solvePnP함수에는 카메라 intrinsic에 해당하는 camera mtx, distcoeff 두 가지를 필요로 한다.
    • 따라서 적용하기 위해서는 Intrinsic Calibration이 종료가 되어야 한다.
  • PnP(Perspective-n-Point)문제를 푼다. -> solvePnP는 Intrinsic matrix를 필요로 한다.(mtx, dist)
    https://docs.opencv.org/3.4/d5/d1f/calib3d_solvePnP.html
  • Mobileye와 같이 높이와 거리를 통해서도 응용이 가능하다.
  • 다수의 Calibration Pattern을 사용하는 방법도 존재한다.
  • Calibration Pattern 사이의 rvec, tve을 계산해 놓으면 (reconstruction),
    카메라에서 촬영한 다수의 Pattern들의 imagepoints로 카메라의 자세를 파악할 수 있다.
    • 체스보드가 고정된 형태로 사용되는 경우가 많다.
    • 카메라로 1번 패턴을 찍었다고 가정해보자.
      • 1번과 카메라의 rvec tvec을 구할 수 있는데 RT1이라고 가정하자.
    • 2번과 카메라와 Calibration을 해서 r,t를 또 구하자. RT2
    • RT를 계산했다고 하면 RT1과 RT2를 왔다 갔다 하는 RT를 추정할 수 있다. 이 방법을 통해서 우리가 아직 구하지않은 RT3번까지도 추정을 할 수 있다.
    • 삼각형이 그려지기 때문에 다수의 멀티카메라 RT를 계산할 수 있다.
    • 중요한것은 작업을 수행하기 전에 미리 외부에서 체스보드를 삼각대를 이용하여 놓고 패턴을 다 찍은 후에 패턴까지의 RT를 다 계산을 해둔다.
    • RT가 타고 타고 타고 가는것을 이용을 해서 3번에서 2번까지도 미리 계산이 가능하다.
    • Calibration이라고 얘기하는 패턴들이 놓여져 있는 공간 자체는 고정이 되어있고 패턴까지의, 패턴끼리의 변환관계는 추정이 되었다 라고 하면 차량이 1번을 찍었다 라고 하는 선이 그어지게 되면 1번에서 3번도 알기 때문에 카메라가 3번을 찍지 않아도 RT3이 추론이 가능하다. 이러면 360°360\degree, 전 범위에 대해서 모든 Calibration 패턴에 대해서 RT값 추정이 가능하다.

카메라와 라이더 센서퓨전하는 방법

마무리

  • Extrinsic Calibration에서 가장 중요한 것은 3차원 3D obj points와 2D Img points의 대칭쌍을 만드는것이 가장 중요하다.

0개의 댓글