카메라 캘리브레이션과 bird eye view

udacity self driving car의 computer vision 부분을 통해 학습한 내용을 정리한 페이지 입니다.

개요

저번 강의에서는 간단한 직선 차선을 인식하는 방법을 알아보았다면, 이제부턴 고급 알고리즘을 통한 곡선차선 인식과 카메라를 통한 물체감지를 목표로 합니다. 그렇기 위해서 먼저 카메라를 사용하는 이유부터 알아보도록 합시다.

물체를 감지하는데에 있어 다양한 센서를 사용할 수 있습니다. 레이더나 라이더가 그 예입니다. 그러나 여전히 카메라를 사용하여 물체를 감지하거나 아니면 복합적으로 사용하는 데에는 이유가 있습니다. 감지 해상도가 높다거나 등등 여러가지 이유가 있지만 가장 중요한 점은 가격이라고 합니다. 다른 센서들이 카메라에 비해 가격이 높기 때문에 카메라를 이용한 감지가 널리 쓰이는 이유라고 합니다.,

카메라 캘리브레이션

카메라를 다루기 위해선 먼저 카메라를 세팅해야 합니다. 이상적으로 3차원 형태의 입체를 2차원 이미지로 정확히 옮길 수 있으면 좋으나 어디에서든지 오차나 noise는 존재합니다. 당연히 그 오차를 줄이기 위하여 여러 계산을 거쳐야 합니다.

핀 홀 카메라를 생각해 봅시다. 카메라의 이미지는 핀홀을 통과 하여 상이 반대로 그려지게 됩니다. 이상적인 모델의 경우 핀홀은 1차원의 형태이므로, 왜곡이 잘 일어나지 않습니다. 그러나 실제 카메라는 렌즈를 통해서 상이 그려지게 되는데, 이러한 렌즈가 이상적이지 않은 형태를 가지고 있거나 빛이 굴절, 산란되는 경우 방사왜곡이 나타나게 되고, 렌즈가 상이 그려지는 부분과 평행하지 않은 경우 접선 왜곡이 나타나게 됩니다.

이러한 왜곡을 보정하기 위해 캘리브레이션으로 계산을 하게 되는데, 이는 (f1,f2,P1,P2,f3) 로 표현됩니다.

f1과 f2의 경우 방사 왜곡에 영향을 주는 파라미터이고 P1과 P2는 접선 왜곡에 영향을 주는 파라미터 입니다. f3의 경우 카메라 비대칭 왜곡 파라미터 인데 특수한 형태의 카메라 (어안 렌즈같은)가 아닌 이상 0으로 취급합니다.

조감도 (bird eye view)

카메라 캘리브레이션은 이미지의 왜곡을 없애는 과정입니다. 반대로 원하는 결과를 얻기위해 이미지를 왜곡시킬 수도 있습니다.

굽이진 도로를 달린다고 생각해 봅시다. 커브가 많은 차선에선 차량의 조향을 조절하며 운전을 해야합니다. 그러기 위해선 조향을 어느정도 줘야 하는지를 알아야합니다. 이를 차선의 곡률을 계산하여 알아낼 수 있습니다.

그런데 카메라로 받아온 도로 이미지에서는 차선의 곡률을 계산하기 쉽지 않습니다. 원근법에 의해 차선이 평행하게 보이지 않기 때문입니다. 이를 보정하기 위해서 사용하는 방법이 조감도 입니다.

Note

도로를 마치 위에서 바라보는 것과 같다고 하여 조감도이나, 위에서 바라보는 것 말고도 여러 각도에서 바라보는 것처럼 이미지를 처리할 수 있습니다.

사용자가 이미지에서 기준이 될 4개의 픽셀지점을 설정 한 후 왜곡된 형태의 픽셀 지점을 설정하면 이미지를 역으로 왜곡시켜 마치 사용자가 원하는 방향으로 바라보는 것처럼 이미지를 조정합니다.