TOF 카메라의 원리

영상처리 2013.06.24 14:27

최근에 TOF 카메라의 원리에 대해 배울 기회가 있어서 그 동안 궁금했던 TOF 방식에 대해 알게 되었습니다.




이번에 MS에서 새로 발표한 키넥트 2가 기존의 IR 구조광 방식을 버리고 TOF 방식을 사용한 점이 세인들의 주목을 받고 있는 것으로 알고 있습니다.


TOF는 Time Of Flight로 비행시간 즉, 빛을 쏘아서 반사되어 오는 시간을 측정하여 거리를 계산하는 방식을 말합니다. TOF 카메라는 TOF 방식을 사용하여 아래 그림과 같이 거리(depth) 이미지를 출력해 주는 카메라를 말합니다.




그러면 구체적으로 어떻게 거리 측정이 가능한 것인지 TOF 카메라의 원리에 대해 하나씩 살펴보도록 하겠습니다. 참고로, 아래 설명에 사용되는 그림들은 지금은 MS에 인수되어 사라진 예전 카네스타(Canesta) 제품에 대한 설명문서가 그 출처입니다.



TOF 카메라의 이미지 센서는 위 그림과 같이 각각의 셀이 2개씩의 receptor 쌍으로 구성되어 있습니다.


TOF 카메라의 기본적인 원리는 카메라로부터 강한 빛을 전방에 쏜 후에 반사되어 돌아오는 빛을 감지하여 거리를 측정하는 방식인데, 이 반사되어 오는 빛을 감지하는 부분이 receptor입니다.


각 Receptor들은 그림과 같이 in phase receptor (하늘색)와 out phase receptor (붉은색) 쌍으로 구성되어 있는데, in phase receptor는 in phase에만 활성화되어 빛을 감지하고, out phase receptor는 out phase에만 활성화되어 빛을 감지합니다.


그리고 빛을 쏘는 부분은 위 첫번째 그림에 보면 렌즈 주변에 LED들이 촘촘히 박혀 있는데 여기서 빛이 나갑니다. 즉, 거리를 측정하기 위해 인위적으로 빛을 쏴야 하는데 이러한 방식을 엑티브 광원(active light source) 방식이라 합니다.


TOF 방식의 가장 핵심적인 원리는 LED 발신부에서는 빛을 쏠 때 굉장히 빠른 간격으로 점멸을 시키면서 즉, 모듈레이션(modulation)을 시키면서 쏘고 수신부에서는 이 모듈레이션 간격과 동기화하여 receptor들을 활성화시키는 것입니다. 여기서 LED를 켜는 동안은 in phase라 부르고 LED를 끄는 동안은 out phase라 부릅니다.



즉, 위 그림과 같이 LED를 켜는 동안에는 in phase receptor들만을 활성화시키고, LED를 끌 동안에는 out phase receptor들만을 황성화시킵니다.


이와 같이 in phase receptor들과 out phase receptor들을 시간차를 두고 서로 다르게 활성화시키면 사물과의 거리에 따라서 수신되는(누적되는) 빛의 양에 차이가 발생하게 됩니다. 이 차이 즉, in phase receptor에 수신된 빛의 양과 out phase receptor에 수신된 빛의 양의 차이를 비교하여 사물과의 거리를 측정하는게 TOF 카메라의 기본 원리입니다.


먼저, 사물이 카메라 바로 앞에 있는 경우를 생각해 보겠습니다 (즉, 거리 = 0인 경우).



이 경우, 위 그림과 같이 빛이 갔다가 반사되어 오는 시간이 없기 때문에 LED의 점멸 주기가 그대로 빛의 수신(returning light) 주기가 됩니다. 따라서, 이 경우에는 in phase receptor 들만 빛을 수신하게 되고 out phase receptor들은 전혀 빛을 수신하지 못하게 됩니다.


다음으로 사물이 카메라로부터 어느 정도 떨어져 있어서 빛의 발신부와 수신부 사이에 시간차가 발생하는 경우를 살펴 보겠습니다.



이 경우, 위 그림과 같이 빛이 갔다가 되돌아오는 시간이 있기 때문에 수신부에 도달하는 빛은 LED 점별 주기와 시간차가 발생하게 됩니다. 그런데, in phase와 out phase를 활성화시키는 주기는 LED 점멸 주기와 일치하기 때문에 위 그림처럼 in phase receptor와 out phase receptor에 누적되는 빛의 양(녹색 부분)에 차이가 발생하게 됩니다.


이상의 내용을 정리해 보면 다음과 같습니다.


먼저, 거리가 0인 경우에는 in phase receptor에만 빛이 수신(누적)됩니다. 그리고 사물과의 거리가 점점 멀어지면 in phase receptor에 수신(누적)되는 빛의 양은 줄어들고 out phase receptor에 수신(누적)되는 빛의 양은 증가합니다. 그러다가 어느 순간에는 out phase receptor에서만 빛이 수신될 것입니다.


즉, TOF 카메라의 기본 감지 거리(one light pulse distance의 2분의 1)를 d라 하고 receptor들에 수신되는 빛의 총합을 1이라 했을 때, 카메라와 사물과의 거리에 따라 receptor에 수신되는 빛의 양은 다음과 같이 변할 것입니다.



여기서, d는 한 펄스 동안 빛이 이동하는 거리의 1/2로서 d = 빛의 속도 x 모듈레이션 간격 / 2로 계산할 수 있습니다(빛은 사물까지 갔다가 되돌아오기 때문에 실제 사물까지의 거리는 빛의 이동거리/2임).


이상으로 TOF 카메라의 기본적인 거리 측정 원리에 대해 설명을 드렸습니다.


물론 실제 제품화될 때에는 이러한 기본 원리를 바탕으로 여러 기법들이 들어갑니다. 예를 들어, 거리 d를 전후로 수신 특성이 대칭되는 모호성(ambiguity) 문제를 해결하기 위해 receptor 활성화 주기를 LED 점멸 주기와 약간 어긋나게(shift) 하거나 수신 특성이 2d를 주기로 반복되는 문제를 해결하기 위해 한 영상 프레임을 획득하는 동안 서로 다른 두 종류의 점멸주기를 사용하는 등의 기법들이 사용된다고 합니다.


---------------


TOF 카메라의 특징은 잘 알려졌다시피 거리 분해능이 뛰어나고 정확한 반면 비교적 크기가 크고 고가이며, 측정 가능한 거리가 제한적이고 (7 m?) 실내에서만 사용 가능합니다. TOF 카메라에서 쏜 특정 파장대의 LED 빛이 사물에 맞고 되돌아오는 동안 많이 약해지기 때문에 감지 거리가 제한되며 실외나 강한 태양광 밑에서는 LED 빛과 태양광을 구분할 수가 없기 때문에 거리 측정이 불가능합니다 (태양광에는 모든 파장대의 빛이 포함되어 있습니다). 또한 TOF 카메라는 각각의 receptor 쌍마다 즉, 이미지 센서 셀(cell)마다 프로세싱 칩(chip)이 들어가기 때문에 비교적 셀의 크기가 크다고 합니다. 이로 인해서 TOF 카메라에 들어가는 이미지 센서의 크기가 커지거나 또는 이미지 센서의 해상도가 낮아지는 문제가 있습니다. 이번 발표된 키넥트 2에 들어간 TOF 센서는 이러한 문제들이 어떻게 처리되었는지 궁금합니다..


by 다크 프로그래머


'영상처리' 카테고리의 다른 글

[영상 Geometry #1] 좌표계  (63) 2013.07.06
TOF 카메라의 원리  (19) 2013.06.24
OpenCV Haar/cascade training 튜토리얼  (206) 2013.05.31
영상인식과 색상모델(Gray,RGB,HSV,YCbCr)  (48) 2013.05.17
  • 수제자 2013.06.25 17:35 ADDR 수정/삭제 답글

    국내에서는 나무가 라는 회사가 관련 제품을 만들고 있습니다. 관계자에게 들은 말인데 현재 보드크기가 엄지손가락 만하다고 하네요..^^ 단점은 태양광에서는 무용지물이 된다는것입니다.
    근데 올리시는 이런글 정말 극찬을 해드리고 싶습니다.

    • BlogIcon 다크pgmr 2013.06.25 18:59 신고 수정/삭제

      네 그렇군요 ^^ 태양광 문제만 아니라면 정말 최고의 센서가 될텐데.. 최근 발표된 kinect 2 동영상을 보면 참 대단하다는 생각이 듭니다.

  • beomjoon3 2014.10.15 13:46 ADDR 수정/삭제 답글

    ToF카메라에대한 설명이 너무 잘되어었는것 같네요
    자료 감사합니다~"

  • 젤다 2016.03.28 16:02 ADDR 수정/삭제 답글

    궁금한 점이 있습니다! 인터넷에서도 찾아보다가 못 찾았는데 궁금해서 올립니다.
    tof 카메라에서 한 픽셀이 데이터를 어떻게 얻는진 알겠는데, 120x160 전체의 픽셀의 데이터가 어떤 과정으로 얻는지 잘 모르겠어요.
    생각한 것은 1. 동시에 얻는다. 2. 시간을 나누어서 각 픽셀마다 순차적으로 값을 얻는다. 이 두가지였습니다.

    1번이 아니라고 생각한 이유는, https://en.wikipedia.org/wiki/Time-of-flight_camera
    의 Principle 부분을 보면 첫 문장에 single light pulse를 쓴다고 되어 있습니다. 감지되는 빛의
    양으로 거리를 측정하는 상황에서, 동시에 두 픽셀 이상이 측정을 하면 서로 영향을 줄 것이라 생각했기 때문입니다. 그나마 방법일까? 하고 생각했던 파장대를 다르게 하는 것도 아닌 것 같고요.
    (파장대역 filter을 이미 지난 상황에서 주파수별로 Current를 유발시키는게 애초에 존재하나요??)

    그래서 픽셀마다 순서대로 측정하지 않을까 하는 추측이 드네요.
    https://hal.inria.fr/hal-00725654/PDF/TOF.pdf의 7쪽 첫 문단을 보면 한 integration time에 빛을 송신 수신을 n번 반복하면서 SNR을 올린다고 되어 있는데, 이들을 조합해서 생각해봤을 때
    1.각 픽셀을 순서대로 돌면서 픽셀마다 송수신을 n번씩 반복한다.
    2.한번엔 한 픽셀에서만 송수신을 하고 그럼으로써 그 픽셀의 데이터를 얻는다.

    한번 송수신 하는데 드는 시간이 50ns이고 30fps로 depth카메라가 촬영한다고 하면,
    1장엔 30ms 정도가 들고, 120x160 = 19200 대충 20000픽셀이라고 하면 한 픽셀에 배당되는 시간이
    1.5마이크로s, 즉 1500ns이므로 n을 10 정도로 잡거나, 송수신 시간이 길어진다/사이에 시간이 필요하다 해도 시간이 맞아떨어지지 않나 싶었습니다.

    이에 대한 견해가 어떤지 궁금합니다. 읽어주셔서 감사합니다!

    • BlogIcon 다크pgmr 2016.03.28 17:15 신고 수정/삭제

      1. 동시에 얻는다고 생각합니다.. 일반 카메라가 모든 픽셀의 값을 한번에 얻는 것과 차이가 없다고 생각합니다.

    • 무무무 2016.04.06 20:02 수정/삭제

      당연히 일반 카메라처럼 동시에 얻습니다. 시간을 나누어 데이타를 취득하면 움직이는 물체에 대해서는 이상한 값이 얻어지겠죠.
      나중에 시간이 되면 말씀하신 여러 의문에 대해 제가 아는 바를 올리도록 하겠습니다.

  • 젤다 2016.03.28 21:49 ADDR 수정/삭제 답글

    아 그렇군요,, 그것부터 찾아봐야겠네요. 감사합니다

  • BlogIcon 켈러브 2016.09.20 15:35 ADDR 수정/삭제 답글

    햇빛에도 강한 TOF 센서 있습니다.
    www.espros.com 에 가 보시면 엄청난 자료를 다운로드 가능합니다.

  • 질문쟁이 2017.03.23 10:48 ADDR 수정/삭제 답글

    안녕하세요, 친절한 설명 정말 감사합니다.
    글을 읽고 궁금한 점이 있어 문의드립니다.
    설명해주신 부분은 discrete pulse modulation ToF 카메라 인것 같은데요,
    찾아보니 continuous signal을 이용한 phase difference 를 측정하는 방식도 있다고 합니다.
    (제가 이해를 잘못했을 수도 있으니, 위 부분이 맞는지 확인부탁드립니다.)
    대부분의 방식이 후자의 방식을 이용하고 있는 것으로 알고 있는데, 이 부분은 다루실 예정이 없으신지 궁금합니다.
    혹시 제가 이해를 잘못해서 본 글이 후자의 방식이라면, Phase difference는 어떻게 취득되고 있는것인지 궁금합니다.

    항상 많은 정보와 지식에 감탄하고 감사하며 이용하고 있습니다. 감사합니다.

    • BlogIcon 다크pgmr 2017.03.24 11:32 신고 수정/삭제

      안녕하세요. 말씀하신 내용은 사실 저도 잘 모르는 부분이라 좀더 공부를 해야만 답변을 가능할 것 같습니다. 일단 간단히 검색해 본 바로는 말씀하신 바처럼 phase difference 방식이 따로 존재하는 것 같습니다.

    • 질문쟁이 2017.03.24 15:37 수정/삭제

      답변 감사합니다.
      저도 관련된 자료를 찾아봤는데요,
      Time of flight cameras: principles, methods, and applications/M. Hansard et.al 의 1.3 장에 관련 내용이 나옵니다.
      제가 이해한 바로는 다크pgmr 님께서 설명해주신 부분이 continuous signal과 동일한 방식으로 생각되고, phase difference를 구하는 방식이 이해가 안됐었는데 이 부분이 다크pgmr님께서 설명하신점 즉 charge의 비율을 이용하는 것 인것 같습니다. 이후 이 비율을 arctan적용해 phase로 변환하고 이 phase difference를 2pi로 나눠 비율로 환산한 값고, 이를 frequency에 따른 한 phase(즉 2pi)가 갈 수 있는 maximum distance를 구한 값과 서로 곱해 거리를 측정하는 것 같습니다.
      "four bucket" 부분은 정확도를 높이기 위해 사용한다는데 이 부분은 아직 이해도가 떨어져 잘 모르겠습니다.
      댓글 관심가져주셔서 감사하고, 혹시 관련된 내용 확인후에 제가 잘못 이해한 부분이 있다면 지적 및 수정 부탁드립니다. 다시한번 좋은 게시글 감사드립니다.

  • 아아 2017.03.29 10:09 ADDR 수정/삭제 답글

    카네스타(Canesta) 제품에 대한 설명문서가 출처라고 하셨는데 혹시 그 문서좀 참고 할수 있을까요?

    • BlogIcon 다크pgmr 2017.03.29 11:41 신고 수정/삭제

      해당 자료는 제 소유가 아니기에 제공이 어려우며 그 내용은 이미 블로그 글 본문에 정리되어 있습니다..

  • ㅇㅎㅇㅎ 2017.04.03 15:04 ADDR 수정/삭제 답글

    그 ToF 측정거리가 제한적이고 실내에서만 가능하다고 하셨는데
    https://en.wikipedia.org/wiki/3D_scanner 이 링크에서 장점과 단점 부분을 참고하니 원거리 수킬로미터까지 측정가능한 것이 장점이라고 되어있는데 어느것이 맞는지 헷갈립니다.

    • BlogIcon 다크pgmr 2017.04.03 20:25 신고 수정/삭제

      위키에 있는 내용은 tof 레이져스캐너(laser scanner)에 대한 내용으로서 tof 카메라와는 조금 다른 내용입니다. 가장 큰 차이점은 레이져스캐너는 한 시점에 한 지점(point)의 거리만 측정하면 되지만, 카메라는 한 시점에 이미지 해상도 픽셀 개수만큼의 지점의 거리를 동시에 측정해야 합니다. 그만큼 많은 파워(power)가 필요하고 실외에서는 태양광에 거의 모든 파장대의 빛이 포함되어 있기 때문에 카메라에서 나가는 빛과 구분되기 위해서는 그만큼 강한 파워의 빛을 내보내야 합니다.. 제가 알기로는 파워를 엄청 높인다면 이론적으로는 실외에서도 원거리까지 tof 카메라를 사용할 수 있습니다.

  • ㅇㅎㅇㅎ 2017.04.04 09:01 ADDR 수정/삭제 답글

    아... 스캐너랑 카메라가 다르군요 저는 같은 TOF방식이라 같을거라고 생각했는데 감사합니다

  • 켐보이 2019.05.18 09:14 ADDR 수정/삭제 답글

    감사합니다.

    실시간 카메라 칼리브레이션을 공부 중입니다.
    내부 파라메타는 렌즈보정등에서 다루고.. 외부 파라메터는 이런 TOF를 활용할 수 있을까요?