[TR 2018] Robust Intrinsic and Extrinsic Calibration of RGB-D Cameras

이번 리뷰 논문은 RGBD 카메라 캘리브레이션 방법론을 다룬 논문입니다.

Intro

RGBD는 크게 Structure-of-Light (SL)과 Time-of-Flight (ToF) 두 가지 타입의 센서로 구분이 됩니다. SL은 스테레오 방식을 유지하되 컨테츠 정보가 적은 곳에서도 작동하기 위해 정형화된 패턴을 가진 빛을 방사하여 인위적으로 풍부한 컨텐츠 정보를 유발시켜 스테레오 성능을 향상 시킨 센서입니다. ToF는 패시브-리시브 센서를 이용하여 투광된 빛이 반사되어 돌아오는 시간을 이용하여 깊이를 측정하는 센서입니다.

두 가지 타입의 센서들은 다른 방식을 이용하지만 정밀하게 설계된 제품을 통해 공장 수준에서 정해진 외부 카메라 파라미터를 이용하여 깊이 추론이 가능합니다. 이러한 장점으로 카메라 개별적으로 정밀한 카메라 보정 없이 일반적인 보정 값으로도 일정 성능의 깊이 추정 능력을 보장 받을 수 있게 됩니다.

특히, 유명 글로벌 기업사의 제춤인 Intel의 RealSense와 MS의 Kinect는 게임 수준에서의 활용 뿐만이 아니라 로보틱스와 연구 분야에서 제품의 높은 신뢰를 기반으로 많이 활용되고 있습니다. 이러한 명성에도 불구하고 저자는 공장에서 제공되는 캘리브레이션 정보는 게임기 수준에서는 적절하지만 약간의 오차가 안전 문제로 연결되는 로보틱스와 연구 수준에서의 데이터 활용 목적을 위해서는 추가적인 캘리브레이션이 필요하다고 주장합니다.

Fig 1은 저자의 주장을 뒷받침하기 위한 실험 결과로 해당 실험은 카메라와 평행한 특정 벽을 기준으로 1m-4m에서의 깊이 추정 값에 대한 시각화 값 입니다. 해당 실험에서의 GT는 레이저 거리 측정기를 이용하였습니다. 실험은 대표적인 SL 센서인 Kinetct v1과 ASUS에서 진행되었습니다. 저자는 해당 실험을 토대로 RGBD 센서에서의 발생 가능한 오차를 3가지로 정의했습니다.

  1. 평평한 벽에서 측정된 결과임에도 불구하고 울퉁불퉁한 특징을 가진 ‘local distortion’ (local error)
  2. 평균 깊이와 회전 값이 틀어진 ‘global error’
  3. 깊이 센서로부터 측정된 값을 디지털화 시키면서 발생하는 ‘quantization error’

위의 세가지 값들은 Fig 1에서 볼 수 있다시피 멀어질 수 록 오차가 심해지는 공통점을 가지고 있으며, 특히 ‘local distortion’은 같은 동종의 센서임에도 불구하고 나타나는 형태가 달라지는 결과(Fig 1-a,b)를 볼 수 있습니다.

‘local distortion’은 물체의 구역적 변화로 인해 정밀성을 헤치며, 해당 문제는 내부 파라미터를 수정함으로써 해소가 가능합니다. global error는 system bias를 더욱 가중시키는 문제가 있습니다. 해당 문제가 발생하는 이유는 정밀하진 못한 외부 파라미터, 정확하지 못한 stereo triangulation으로 인해 발생합니다. 이외에도 SL 특성상 패턴을 인위적으로 생성하기 위한 패턴 프로젝터와 카메라 간의 미정렬 이슈로 오차가 발생하게 됩니다.

++ ‘quantization error’ 는 스테레오 추정 알고리즘의 디스패리티의 빈값으로 인해 발생하는 오차로 RGBD 센서를 이용하는 사용자 수준에서는 해결하기 힘든 문제이기에 저자는 해당 에러에 대해서는 해결 불가능이라는 표현을 사용합니다.

저자는 깊이 정보의 정확도가 중요한 RGBD 특성상 2가지 에러는 서로 연관성을 가지고 있기 때문에 강인한 보정을 위해서는 결합된 보정 방법을 사용해야한다고 주장합니다. 로컬한 영역에서 정밀한 측정이 가능해질 경우에 자연스럽게 global error에 대한 오차가 줄어들고, global error가 줄어든 다는 말은 깊이 정보 추론에 활용되는 cue 들의 신뢰도가 상승되기에 local error가 줄어들게 됩니다.

Method

Pipeline

저자가 제안한 보정 알고리즘의 파이프라인은 fig 4와 같습니다. 가장 먼저 체크 보드가 촬영된 RGB 영상 \mathcal{I_{C,k}} 으로부터 체크보드의 코너 B_k 를 추출합니다. 그 다음 깊이 영상 \mathcal{I_{D, k}을 3d 포인트 클라우드화 C_k 시킵니다. 코너 값과 포인트 클라우드 뭉치들은 Undistortion Map Estimation을 통해 초기 Transformation T_0 를 기반으로 undistortion map U를 예측합니다. 이를 기반으로 undistorted point clouds \hat{C_k} 추정하여 global correction map G와 최종 카메라-깊이 transformation T 를 추정합니다.

UNDISTORTION MAP ESTIMATION

해당 모듈에서는 local error를 해소하기 위한 모듈로 전반적인 알고리즘은 Fig 5를 따릅니다. 입력 데이터는 깊이 영상으로부터 추출된 point clouds 뭉치와 체크보드가 촬영된 RGB 영상, 그리고 초기 camera-depth inital transformation T_0 (T_0는 공장 레벨에서 제공된 정보)를 입력으로 사용합니다.

local error는 멀어질 수록 정도가 심해지는 경향이 있습니다. 그렇기에 저자는 순차적으로 오차를 보완하기 위해 line 3과 같이 정보들을 측정 깊이에 따라 정렬을 수행합니다.

Wall Points Selection

해당 보정 기법에서는 local error를 잡기 위한 보정 장치로 평평한 평면을 사용합니다. 보정 정확도를 높이기 위해서는 타겟인 벽면이 어느 위치에 있는지를 명확하게 알아야합니다. 저자는 평면을 인지하기 위해 체크보드 코너를 중심으로 포인트 클라우드에 대한 RANSAC을 수행하여 자동적으로 평면을 인지하는 방법을 사용합니다. 추가적으로 자동화된 평면 인지의 성능 향상을 위해 Fig 6과 같은 트릭을 사용합니다. Fig 6은 포인트 클라우드의 undistortion 을 수행한 결과와 수행하지 않은 결과에 대한 정성적 결과로 저자는 line 5-9에서 이전 U를 기반으로 undistortion 수행한 포인트 클라우드를 사용하여 wall point-coordinates \mathbb{I}_{s_k} 를 추출합니다.

Map Update

평면 정보 \mathbb{I}_{s_k} 를 기반으로 원본 포인트 클라우드에서의 평면을 추출합니다. 이러한 연산을 수행하는 이유는 평면을 중심으로 정의된 lay 내의 픽셀만을 사용할 경우, 안정성이 올라간다는 [1]을 토대로 합니다. 해당 연산은 Fig 5-line 11, FITPLANE에서 수행되어집니다.

그 다음 LOSPROJECT를 통해 모든 오리지날 포인트들은 평면에 정의된 plane에 사영 연산이 수행되는 LOSPROJECT를 통해 X_{\pi} 를 추출합니다.

그리고 저자는 추가적인 트릭을 사용합니다. 모든 픽셀에서 오차 추정을 진행할 경우, 노이즈로 인한 불안정이 발생한다고 합니다. 그렇기에 저자는 Fig 8과 같이 파란색 네모에 해당하는 일정 빈 크기의 픽셀에서만 연산을 수행합니다. 수행 후, bilinear interpolation을 통해 원본 크기의 정보를 추정합니다. 이러한 연산이 fig 9-line 6-8에 해당합니다.

추적된 에러는 에러가 깊이에 따라 초선형 형태로 증가하는 특성에 따라 다항 추정을 통해 에러를 추정합니다. 저자는 실험적 분석을 통해 아래와 같은 이차항을 이용한 non-linear least squres problem을 진행합니다.

U(u, v) =u_{u,v}(z) = a + bz + cz^2

위의 수식에서 σ(z)는 이전 연구에서 리포팅 된 quantization error 값들(각 센서 종류별)로 정규화를 위해 사용되어집니다.

GLOBAL CORRECTION MAP ESTIMATION

global error를 해결하기 위한 모듈은 fig 10과 같은 알고리즘을 가지고 있으며, RGB 카메라와 뎁스 센서 간의 정렬 수행을 목적으로 진행되어집니다. 입력 데이터는 이전 모듈에서 추정된 undistorted point cloud와 평면 포인트 좌표계와 체크보드 코너를 이용합니다.

가장 먼전 RGB 영상 정보를 이용하여 체크보드와 영상 간의 외부 보정(Fig 10-line 2. SOLVEPNP)을 수행하여 체크보드와 카메라 간의 tranformation c^_{B_k}T를 추정합니다. 해당 값은 3차원 공간에서의 체크보드 코너를 구하고, 해당 정보에 대한 plane을 추출하기 위해 사용되어집니다. 깊이 영상의 포인트 클라우드의 평면 정보의 평면을 추출 (line 5) 합니다.

그 다음 line 9, ESTIMATETRANSFORM을 통해 체크보드 평면과 포인트 클라우드의 평면 간의 보정을 통해 카메라와 깊이 센서 간의 tranformation을 예측합니다. 해당 값은 line 11과 같이 체크보드 코너를 깊이 센서의 평면 좌표로 이동 시켜 GT로 활용합니다.

이를 수식으로 표현하면 아래와 같습니다.

Reprojection error e_{repr}(k) 는 카메라와 체크보드 위치를 중심적으로 보정하기 위한 수식으로 보시면 됩니다.

해당 수식에서는 체크보드를 GT로 왜곡이 펴진 포인트 클라우드 간의 외부 보정을 위한 에러 모델에 해당합니다. 해당 에러 모델에서는 g를 최적화하기 위한 수식으로 g에 대한 에러 모델은 Undistortion map과 동일한 이차항으로 구성됩니다. p_{D_{\phi_k}} 는 체크 보드 코너를 깊이 센서 좌표로 옮기 평면으로 아래의 수식과 같습니다.

또한 저자는 global error의 특성상, 영상 단위의 보정만 필요하기 땐문에 영상의 각 꼭지 포인트에서만 보정을 수행하고 Undistortion map와 동일하게 biliear interpolation을 수행하여 Global Correction Map을 추론 합니다.

Experiment

Local Error

Planarity error: 평면만 추출한 point cloud와 레이저 거리 측정기의 거리 값과 L2 오차Planarity error: ㅍ펴평

Fig 14에서는 local error에서 사용된 트릭인 bin size에 따른 정량적 실험 결과에 해당합니다. 모든 bin은 원본보다 좋은 결과를 보여주고 있습니다. bin size가 커질수록, 거리가 멀어질수록 노이즈가 누적되어 오차가 커지는 결과를 보여줍니다.

Fig 15는 fig 14에 대한 정성적 결과에 해당합니다. fig 1에 비해 울퉁불퉁한 경향이 줄어듬으로써 좋은 결과를 보여줍니다. 하지만 bin size가 커지면서 local error의 경향이 드러나는 모습을 보여주고 있습니다.

Fig 16는 bin size에 따른 undistoration map을 시각화한 결과에 해당합니다. bin size에 따라 smooth한 결과를 보여줍니다. (smooth 수록 보정시에 부드러운 결과를 보입니다.)

Fig 14-16을 토대로 저자는 4 x 4 bin size를 사용할 것을 제안합니다.

Fig 17에서는 각 센서에서의 에러를 측정한 결과로 깊이 추정 모델로 인해 발생하는 quantization error의 영향에 가까운 결과를 토대로 local error를 매우 많이 줄여다고 주장하는 결과 입니다.

Fig 19는 fig 1과 동일한 세팅에 대한 결과이며 확실하게 울퉁불퉁한 케이스가 줄어든 결과를 보여줍니다. 하지만 평균 거리와 회전에 대한 오차, global error가 그대로인 결과를 보여줍니다.

Global error + local error

Fig 22에서는 제안한 보정 기법에서의 globla error에 대한 실험 결과를 보여줍니다. 확실히 원본보다 월등히 높은 결과를 보여주며 거의 0에 가까운 결과를 보여줍니다.

Fig 23에서는 체크 보드를 이용한 이전 연구 기법을 비교합니다. 해당 실험에서 가장 흥미로운 실험은 fig 23-(b)로 외부 카메라를 이용했을때의 성능 비교 실험에 해당합니다.

Fig 24에서는 회전 오차에 대한 실험 결과입니다.

Fig 25는 fig 1과 동일한 실험 세팅으로 local error와 global error가 해소된 결과를 보여주고 있습니다.

Fig 26에서는 다른 RGBD 보정 알고리즘과의 성능 비교 실험 결과에 해당합니다.

Visual Odometry Use Case

마지막으로 저자는 RGBD의 보정이 다른 태스크에서의 정확도에 어떠한 영향을 끼치는지 보이기 위해 VO 태스크에서의 실험을 진행하였습니다. 보정된 결과에서는 거의 2배 가까운 성능 차이를 보여줌으로써 보정과 해당 알고리즘의 효과를 입증합니다.

[1] M. Di Cicco, L. Iocchi, and G. Grisetti, “Non-parametric calibration for depth sensors,” Robotics and Autonomous Systems, vol. 74, pp. 309–317, 2015.

=============================

가동원전에 태스크에 적용 예정인 카메라 보정 기법

Author: 김 태주

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다