본문 바로가기

Study/ReadingPapers

How to calibrate your event camera 리뷰

https://github.com/uzh-rpg/e2calib

카메라 칼리브레이션은 보통 미리 알고 있는 calibration pattern(e.g. checker board, april tag)에서 코너를 찾아내고, 최적화 문제로 해결해 intrinsic, extrinsic parameter를 구한다.

이벤트 카메라는 고정된 주기로 프레임을 획득하는 일반 카메라와 다르게 asynchronous한 센서다. 이게 무슨 뜻이냐. 픽셀 단위에서 brightness의 변화(polarity)와 픽셀 위치, 시간을 묶어 event라고 하는데, 이 event가 asynchronous하게 생성되고 event들이 stream으로 쫙 나온걸 기록한게 events다.

time, Xp, Yp, polarity 순서

이게 이벤트 카메라의 출력물이다. 모든 이벤트들이 각자 다른 시간대에 생성된 것을 확인할 수 있다. 이 때문에 이벤트 카메라는 기존의 카메라 칼리브레이션 방법을 사용할 수 없지만 각종 컴퓨터 비전 응용을 위해서는 intrinsic, extrinsic parameter가 필수적이기 때문에 칼리브레이션은 수행되어야 하고, 선행연구들이 다음과 같이 있다.

기존에 이벤트 카메라를 calibrate하는 방식은 두 종류가 있었다.

  1. LED의 밝기 변화 패턴을 사용 ”Bio-inspired stereo vision calibration for dynamic vision sensors”
  1. LCD 화면 사용?
    1. “Event-based, 6-DOF pose tracking for high-speed maneuvers”
    1. “Calibration toolbox by garrick orchard”
    1. “Calibration toolbox by vlo group”
    1. “Calibration toolbox by prophessee”

이 방식들은 이벤트 카메라만을 위해 고안된 것들이기 때문에 기존의 카메라들은 사용할 수 없어 이벤트 카메라와 기존 카메라를 동시에 칼리브레이션 할 수 없다는 단점이 있다. 또한, 전자 디스플레이 장치들은 다양한 움직임과 거리에서 패턴을 확인할 수 있도록(good coverage) 화면이 커야 하는데 이는 비싼 가격, 움직이기 힘듦으로 번거롭고 실용적이지 않다는 단점이 있다. 초반에 나온 연구용 이벤트 카메라는 글로벌 셔터의 monochrome image를 제공하지만(이거… 나 그냥 이거로 사진 찍어서 하면 되는 거였나?!?!?!!? 생각보다 나 좀 돌아왔구나…) 최근의 industrial 수준의 이벤트 카메라는 제공하지 않기 때문에 이벤트만으로 칼리브레이션을 할 수 있는 기술이 필요하다고 말한다.

저자들이 제안하고 공개한 방법인 e2calib은 세 가지를 장점으로 말한다.

  1. 비싼 장치 필요 없이 출력한 패턴만 있으면 된다.
  1. 이벤트 카메라와 기존 카메라를 동시에 칼리브레이션 할 수 있다.
  1. 기존 카메라를 대상으로 사용하던 칼리브레이션 프로그램 및 알고리즘을 사용할 수 있다.

그 방법은 앞서 공개된 E2VID를 사용해 events를 image reconstruction하는 것이다. 이 방법으로 다양한 이벤트 카메라에 대해 카메라 칼리브레이션을 했을 때 얼마나 잘 되는지를 말하는게 이 논문의 주된 내용이다.

방법론

생각보다 내용은 별 것 없다.

원래 카메라 칼리브레이션을 하기 위해서는 교차점을 검출해야 한다. 이때 코너 검출을 위해서 Harris나 Shi-Tomasi 검출기를 사용하는데, events 데이터는 sparse하기도 하고 생 데이터는 이미지 데이터가 아니기 때문에 사용할 수 없다는 것이다. 이를 위해서 sparse한 event stream을 dense image로 바꾸는 image reconstruction method(E2VID)를 사용한다. 이렇게 생성된 이미지를 가지고, 기존의 알고리즘을 돌린다.

정리하면

  1. 일정한 시간을 주기로 이벤트 스트림을 자른다. 저자들은 실험에서 50밀리초를 간격으로 했다. (단일 이벤트 카메라는 다른 카메라와 동기화를 하지 않아도 되기 때문에 fixed duration으로 이벤트를 나누지 않아도 된다)
  1. E2VID를 사용해 이벤트 데이터를 이미지로 변환한다. (글로벌 셔터 카메라와 extrinsic 칼리브레이션을 진행한다면 변환을 셔터 노출 시간의 중간에 맞췄다고 한다)
  1. 준비된 영상을 아무 칼리브레이션 툴을 사용하든 상관없으니 칼리브레이션을 한다.

실험

1.1 Intrinsic - simulation

뭘 하던지간에 되는지부터 확인을 하고 해야지.

저자들도 시뮬레이션부터 시작했다.

일반 카메라를 사용해 이벤트 카메라 데이터를 모사하는 ESIM(https://github.com/uzh-rpg/rpg_esim)을 사용해 실험을 진행했다.

체커보드와 April Tag 두 종류의 칼리브레이션 대상에 대해 No distortion, Equidistant distortion, Radial-tangential distortion 세 가지 왜곡을 가정하고 칼리브레이션을 했더니, 모든 왜곡 경우에서 체커보드를 사용하는게 가장 잘 되었다고 한다.

1.2 Intrinsic - real world

그렇다면 현실 세계에서는?

DAVIS346(해상도 346x260), 삼성 Gen3(640x480), Prophesee Gen3 ATIS(480x360), Prophesee Gen4(1280x720)을 가지고 실험을 해봤다고 한다.

  1. 발광하는 LED 패턴 5x5로 배치된 LED를 500Hz로 발광하도록 한다
  1. LCD 화면 60Hz 재생율의 커다란 LCD 화면에 체커보드를 띄운다(아니 왜 비싸게..?)
  1. 종이로 만든 커다란 체커보드

왼쪽부터 E2VID, LCD 화면, 그리고 exposure measurement(EM)으로 생성된 grayscale 이미지에서 인식된 체커보드의 패턴과 인식된 횟수가 누적된 그림이다. 한 눈에 봐도 E2VID로 reconstruction된게 패턴 인식이 잘 된다는걸 알 수 있다.

이미지 수에 대비헤 패턴이 인식된 비율을 나타낸 표다. Modality는 데이터의 종류가 이벤트 스트림이냐 혹은 이미지냐를 나타낸 것이다.

DAVIS346은 글로벌 셔터로 일반 프레임 이미지를 얻을 수 있기에 프레임으로 얻었을 때 패턴을 잘 인식할 수 있었고, Prophesee Gen3는 이벤트도 획득하지만 앞선 EM으로 grayscale 이미지를 생성할 수도 있는데 이 방법은 노이즈가 많아 패턴이 잘 인식되지 않는다.

칼리브레이션이 얼마나 잘 되었는가를 알기 위한 Root mean square reprojection 오류에 대한 표다.

주의할 점 : 가까이에서 체커보드 패턴이 전부 나올 수 있게 찍어야 하고, 체커보드는 크면 클 수록 좋다.

작은 체커보드는 거리를 다르게 두면 무조건 패턴 간의 간격이 좁게 나와 reprojection error가 작게 나올 수 밖에 없어 칼리브레이션 결과를 신뢰할 수 없기 때문이다.

(교수님을 설득해 커다란 체커보드를 얻을 수 있도록 해야겠다…)

결과적으로는 패턴이 인식되는 것과 RMS reprojection 오류를 포함해 모두 일반 체커보드를 사용하고 E2VID로 reconstruction을 하는 것이 가장 잘 된다고 말한다.

2. Multi-sensor calibration 실험

여기는 아껴뒀다. 학부 졸업 전에 교수님이 FLIR 모노큘러 카메라 아니면 DAVIS를 하나 더 구해오실 것 같은데, DSEC(https://github.com/uzh-rpg/DSEC)의 그것과 SHEF(https://github.com/ziweiWWANG/SHEF)처럼 이벤트-프레임 스테레오 카메라를 구성하고 싶어하시기 때문에 곧 다시 돌아올 것이라 확신한다… 논문을 어케 써야할지 정말 모르겠지만 뭐, 재밌게 되겠지!


Uploaded by N2T

'Study > ReadingPapers' 카테고리의 다른 글

고환으로 맛을 느낄 수 있다?!  (1) 2023.01.03