Knowledge/Vision

Camera undistortion (UCM, DS model)

침닦는수건 2022. 12. 29. 15:23
반응형

2022.12.20 - [Knowhow] - Camera undistortion (pinhole, KB model)에 이어 UCM 카메라와 Double Sphere 카메라의 undistortion에 대해 설명해보고자 한다. 

 

결론부터 말하자면, UCM 카메라와 DS 카메라는 distortion이 큰 의미가 없다. 

 

애초에 UCM와 DS 모델은 3차원 구를 이용해 모델의 표현력을 높였기 때문에 distortion이 크게 나오지 않는다. 모델 자체에 distortion이 최대한 내포되어있도록 설계되어 있다.

 

UCM은 구를 이용해 표현하지 못한 부분을 살짝 커버하는 정도의 distortion이 필요하며, DS 모델은 distortion 자체가 없다.

 

사실 distortion 고려하지 않고 그냥 사용해도 웬만한 경우에 문제가 되지 않는 모델들이기 대문에 글로 적으려 하지 않았는데 앞선 글을 읽고 왜 UCM와 DS 모델은 없는지 궁금하거나 특성이 그래도 궁금한 사람이 있을까 해서 따로 적게 되었다.

 

1. UCM (Unfied Camera Model)

 

UCM은 2022.12.07 - [Knowhow] - Fisheye camera model(KB, UCM, DS 모델) 글에서 설명한 바와 같이,

 

 

UCM은 위와 같이 설계되어 있다. 3차원 점을 구면으로 투영시킨뒤, 구 중심에 있는 카메라를 z축 방향으로 일정 xi 만큼 움직이고, 해당 위치에서 pinhole 카메라가 촬영한다고 가정하는 모델이다. 

 

여기서 distortion에 초점을 맞추어 바라보면, distortion이 개입하는 지점은 마지막 단계인 pinhole 카메라가 사진을 캡처하는 단계다. 이 때 구를 이용해 단순히 image plane으로 보낸 점이 원하는 위치로 투영되지 않았을 때 그 약간의 보정을 위해 추가되는 정도의 distortion이다. 

 

따라서 그 distortion의 형태는 pinhole 카메라를 사용하니, 당연히 우리가 흔히 아는 distortion의 형태와 같다.

 

쉽게 말해, 그냥 pinhole 카메라와 distortion 자체는 같다는 말이다. KB 모델처럼 복잡한 수식 필요없이 그냥 pinhole 카메라와 같이 풀면 된다. 이전 글에서 설명한 gauss newton method 기반 approximation을 풀면 구할 수 있다. 

 

하지만 같은 수식을 쓰면 중복이니, 이전 글에서 추가로 짧게 언급한 error 기반 업데이트 기법을 조금 더 자세히 쓰고 넘어가겠다.

 

 

위 수식은 우리가 흔히 알고 있는 pinhole 카메라의 distortion 수식이다. 간편하게 다음과 같이 쓰겠다.

 

 

error를 다음과 같이 정의한 뒤, iteration을 돌면서 업데이트 해주면 된다.

 

 

iteration이 끝난 뒤에는 얻어진 결과가 undistorted image point들이다. 

 

2. DS model

 

DS model은 distortion parameter가 안 나온다. 그래서 undistortion 과정이 없다. unprojection 과정에 undistortion이 없다. 

 

적을 수식도 없다. 제일 간단하다. 그냥 끝.

반응형