본문 바로가기
[Public] 신호처리/기초 영상처리

[OpenCV] 카메라 보정 (#3 렌즈왜곡, 방사왜곡, 접선왜곡)

by 차출발 2012. 1. 2.
반응형


앞서 배운 핀홀 카메라 구조에서 영상 획득과 관련한 3차원 기하 모델을 얻을 수 있었다.
그러나 적은 양의 빛만 핀홀을 통과하기 때문에

영상을 구성하기 위해서는 충분한 빛을 받아드릴 수 있는 시간이 많이 필요하다.

카메라가 신속하게 영상을 생성하려면
좀 더 넓은 영역을 통하여 빛을 모아주어야 하며 이 빛이 투영점에 수렴하도록 굴절 시켜야한다.

이러한 작업을 수행하기 위해서 일반적으로 렌즈를 사용하게 된다.
렌즈는 한꺼번에 많은 빛을 모아줌으로 써 빠른 영상 획들을 가능하게 되는 것이다.

하지만 왜곡을 발생시키는 문제점이 있다.



그럼 왜곡이 없는 렌즈를 사용하면 되지 않나여?

왜곡이 전혀 없는 렌즈는 존재하지 않는다.
렌즈 왜곡은 제조 과정에서 발생한다
수학적으로 이상적인 포물선 렌즈보다 구면 렌즈를 만드는 것이 훨신 쉽다.
렌즈와 영상센서를 완벽하게 정렬하는 것도 쉬운일 이 아니다.




그럼 왜곡을 고쳐주면 되겠네여. 렌즈의 왜곡에는 어떠한 왜곡들이 있죠?

첫번째 
렌즈의 모양에 의해서 발생하는 방사왜곡
일반적으로 카메라들은 영상의 센서의 가장자리 부근에서
픽셀의 위치가 왜곡되는 현상이 발생하는 것을 본적이 있을 것이다.

이러한 볼록 현상은 술통 또는 어안 효과의 원인이 된다.

다음 그림은 방사왜곡이 어떻게 해서 생기는지를 직관적으로 알려주는 그림이다.


중심에서 먼곳은을 지나가는 광선은 좀 더 가까운 곳을 지나는 광선 보다
좀더 많이 휘어져서 지나간다.
정사각형 객체를 렌즈가 거쳐 영상 평면에 투영되면 둥그스럼하게 나타난다.


좀더 아래 사진을 보면 쉽게 이해가 갈 것이다.
사진의 중심은 별 차이가 없으나 원을 형성하며
끝으로 갈수록 왜곡이 발생 함을 알 수 있다.



일반적으로 중저가의 렌즈일 수록 이러한 왜곡현상이 더 많이 발생하며
또한 이러한 효과를 얻기 위하여 만들어진 어안렌즈도 존재한다.
특히 술통형 왜곡은 값싼 웹 카메라에서 많이 발생하며
고가의 카메라에서는 방사 왜곡을 최소화 하기 위한 다양한 기법이 들어 있어 가격이 비싼 것이다.




방사왜곡을 줄일려면 식이 필요하겠네영 나타내는 식이 있나여?

방사 왜곡은 영상 센서의 중심에서는 전혀 발생하지 않고 주변으로 갈수록 많이 발생하기 때문에
방사 왜곡은 테일러급수의 처음 몇개 하으로 표현이 된다.

저가의 웹 카메라 경우
처음 두 개의 항으로 왜곡을 표현 가능하며 왜곡이 심할 수록 항의 수를 늘려가면서 조정이 가능하다.
아래는 테일러 급수를 이용하여 나타낸 식이다.



여기서 (x, y)는 왜곡된 점의 원래위치를 나타내고
(X_corrected, Y_corrected)
는 보정된 새로운 위치를 나타낸다.





또다른 왜곡에는 어떠한 왜곡들이 있나영?

두번째 
카메라 제조 과정에서  생기는 접선 왜곡
이는 렌즈와 영상의 평면이 완벽히 이루어지지 않아서 생기는 왜곡이다. 
카메라 제조 과정에서 영상의 센서를 카메라 안쪽에 붙이는 작업이 생긴다.
하지만 이를 완벽하게 수평을 이루게 붙여야하는데 저가의 카메라 경우 정밀하지 않기 때문에
왜곡이 발생하게 된다.

아래 그림을 보면 쉽게 이해가 갈것이다.



이렇게 잘못 붙이면 다음과 같은 현상이 일어난다.


영상에서 왜곡이 생김을 알수 있다.


접선왜곡을 나타내는 식이 있나영?

접선 왜곡은 두개의 파라메터 P1 P2 에 의해 표현이 가능하다.



위의 수식을 표현하기 위해서는 다섯 개의 파라미터가 필요한데
이 다섯개의 파라미터(K1, K2, P1, P2, K3) 5x1행렬로 표현을 한다.
이는 OpenCV에서 행렬로 표현하기 때문에 다음시간에 설명하도록 한다.

이 수식의 유도과정을 원한다면
D.C.Brown
"Decentering Distortion of Lenses"를 참고하면 좋다고 한다.



이 두가지 왜곡만 있나여? 다른 왜곡도 존재 할 것 같은데?
당연히 영상을 획득하는 과정에서
다양한 형태의 왜곡이 발생할 수 있다.
하지만 위에서 설명한 방사왜곡과 접선왜곡에 비하면 큰 왜곡이 아니기 때문에 넘어가도록 한다.




도움이 되셨다면 리플 하나 달아주는 센스 !
리플 하나가 큰 힘이 된답니다 ^^