논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Night Time Vehicle Detection for Driving Assistance LightBeam Controller

맛보기로 본 논문으로, 좋은 논문은 아니나 흔적을 남겨 둡니다. 허술한 부분이 많아 되기는 되는지 의문스럽습니다.

[cite]10.1109/IVS.2008.4621142[/cite]

1. Introduction

현대의 차량들이 가진 헤드 램프(head lamp)는 하향등과 상향등으로 구분되어있습니다. 하지만 불빛에 대해 운전자를 보호하기 위하여 마주오는 차량이 있거나 함께 진행하는 차량의 경우 상향등을 사용하는 것은 대부분의 나라에서 제한되어있습니다. 이러한 차량이 있는 경우 자동적으로 헤드 램프를 제어하기 위하여 이미지에서의 헤드 라이트(head light)나 테일 라이트(tail light)를 이용하여 상대 차량을 인식하고자 합니다. 하지만 차량의 이러한 라이트와 표지판이나 길 바닥 등에서 반사된 다른 빛을 구분하여야만 합니다.

2. Algorithm

여기서는 흑백 카메라를 사용하였습니다. 영상은 밤 시간에 차량의 앞의 영상을 가져오게 됩니다. 이러한 경우 일반적으로 어두운 바탕에 헤드 라이트가 밝게 나오는 특성을 띄게 됩니다. 전체적인 알고리즘 순서는, 먼저 적응적 스레스홀딩(adaptive thresholding)을 수행하여 라이트 부분을 검출하고, 이 중에서 차량에 해당하는 것만을 구분해 냅니다. 다음, 구분된 차량은 칼만 필터 등을 통하여 여러 프레임들을 거치며 추적됩니다. 그 후 Support Vector Machine (SVM)을 이용하여 해당 객체가 차량인지 다른 물체인지를 구분하게 됩니다. 그 결과를 통하여 헤드 라이트를 제어합니다.

다음에서 자세히 각 단계를 설명합니다.

A. Bright Object Segmentation

먼저 흑백 이미지에서 밝은 부분을 검출하기 위하여 스레스홀딩 작업을 할 것입니다. 중요하게 봐야 할 것은 도로의 조명 상태나 차량의 불빛 모양, 다른 가짜 불빛 들, 카메라의 파라미터들입니다.

일반적인 차량의 불빛은 가우시안 모양을 갖게 되며 그 중심은 값이 250 이상을 갖게 됩니다. 그리고 배경과의 차이는 50 이상의 값을 갖습니다. 그리고 다른 가짜 불빛들은 일반적으로 200 이하의 값을 가집니다. 문제는 도로의 표지판에서 반사되는 빛의 경우 자동차와 비슷한 값을 갖기 때문에 구분하기가 어렵다는 것입니다. 이들을 스레스홀딩으로 구분하기는 불가능에 가깝습니다. 또다른 문제는 헤드 라이트와 테일 라이트가 다른 밝기 값을 갖는다는 것입니다. 상대적으로 낮은 밝기를 갖는 테일 라이트는 어둡게 비춰지는 가짜 불빛들과 혼동을 일으키게 됩니다.

B. Clustering Process

이전 단계에서 검출된 블랍(blob)들을 클러스터링(clustering)하고자 합니다. 이전 프레임에서 검출된 각 블랍에 대하여 다음 프레임에서 매우 가까운 객체가 있는지 검사합니다. 만약 존재한다면 이들은 같은 객체로 연결짓습니다. 그리고 검출된 객체들 중 같은 차량으로 판단되는 것이 있다면 객체 리스트에 등록합니다. 그리고 이 객체들은 칼만 필터로 추적합니다. 각 객체가 일정 이상 프레임 동안 유지가 된다면 올바른 객체로 간주합니다.

중요한 점은 다가오는 차량인지 따라가는 차량인지 구분해야 한다는 것입니다. 이것은 다음과 같은 조건으로 구분합니다. 이전에 검출된 다른 객체보다 두배 이상 먼 거리에 있는 객체차렴 따라가고 있는 객체로 생각하며 그렇지 않은 경우는 다가오는 객체로 생각합니다.

C. Distance Estimation

카메라와 차량과의 거리를 원근법(perspective)에 의해 계산합니다. 좌표계는 논문의 그림을 참고하면 됩니다. 차량의 카메라 높이와 그 각도, 그리고 램프의 높이 등을 고려하여 그 거리를 구할 수 있습니다. 여기에 추가로 이미지의 중심으로부터 좌우 거리를 고려하여 더 정교한 거리를 계산합니다.

어려운 점은 차량마다 램프의 높이가 다르다는 점인데 여기서는 평균적으로 사용되는 높이를 사용하여 헤드 라이트의 경우 0.6m, 테일 라이트의 경우 0.4m를 사용하였습니다.

D. Black Hat transformation

Top-hat 변환은 유용한 기법입니다. Top-hat 변환은 두가지로 나뉘어 Black hat과 White hat으로 나뉩니다. 각각은 아래와 같습니다.

$$\text{WH}_T (x, y) = (f - f \circ B)$$

$$\text{BH}_T (x, y) = (f \bullet B - f)$$

여기서 $f$는 이미지의 픽셀 값을 나타내며, $ \circ$는 Opening 연산을, $\bullet$은 Closing 연산을 나타냅니다. 일반적으로 White hat 이미지는 피크 값들을 가지게 되고, Black hat 이미지는 낮은 계곡들을 가지게 되므로, 여기서는 black hat 이미지를 사용하여 라이트의 halo 현상을 검출하도록 합니다. 표지판에서 반사된 빛들은 이 halo 가 없기 때문입니다.

변환이 끝나면 halo를 포함하는 객체의 평균 픽셀 값을 사용하여 파라미터를 결정합니다.

E. Classification Using Support Vector Machines

표지판과 같은 다른 객체들과 차량을 구분하기 위하여 SVM을 사용합니다. SVM에 입력 벡터는 다음과 같은 값으로 구성됩니다.

  • 픽셀들의 영역
  • 객체의 세로 위치 v
  • Hat 값
  • 사각형 모양
  • 비율
  • 객체의 컨투어 길이
  • 원형도

그 결과 먼 거리에 있어도 차량의 불빛과 표지판을 구분이 잘 되었습니다.

3. Experimental Results

펜티엄 4 3Ghz 에서 720 * 480 크기의 이미지에 대해서 작업하고였고, 초당 20프레임 정도의 속도를 처리하였습니다.

실제로 거리를 잘 판단하는 지에 대해서와 SVM이 얼마나 잘 구분하는지에 대해서 실험하였습니다.


Add a Comment Trackback