ko.wikipedia.org/wiki/%EA%B5%90%EC%A0%95_(%EA%B3%B5%ED%95%99)
교정 (공학) - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전.
ko.wikipedia.org
이미지의 교정 캘리브레이션 단계는 정밀성을 위해 필요한 단계이다.
캘리브레이션은 보정 교정 단계로 생각하면 된다.
카메라의 경우 렌즈를 통해 들어오는 이미지가 왜곡이 생기기 때문에 필요한 과정이다.
opencv의 카메라 캘리브레이션에 대해 알아보자
카메라를 통해 들어온 이미지는 방사 왜곡으로 인해,
형상이 휘어지게 되며 이미지의 중심으로부터 멀어질수록 심해진다.
이미지의 왜곡에는 크게 2가지가 있다.
1. 방사형 왜곡 (radial distortion)
2. 접선형 왜곡 (tangential distortion)
이미지에 왜곡을 주는 주요 요인으로
내부 요인
1. 렌즈의 종류
2. 렌즈와 이미지 센서 사이의 거리
3. 센서 사이의 각도
이러한 내부적인 요인들의 파라미터를 구하는 과정을 Calibration이라고 합니다. 궁극적으로는, 이러한 파라미터를 통해 카메라 왜곡을 잡는 작업을 Calibration이라고 하는 것 같습니다.
- Calibration 식에 대해
식을 통해 자세히 알아보도록 하겠습니다. 식은 다음과 같습니다.
- x, y : 카메라 좌표계의 좌표
- A : Intrinsic Camera Matrix (내부 파라미터)
- [R|t] : 회전/이동 변환 행렬 (외부 파라미터)
- X, Y, Z : 월드 좌표계 상의 3D 점의 좌표
여기서 카메라 좌표계가 이미지 2D의 좌표이고 (X, Y, Z)를 실세계의 좌표라고 보시면 됩니다. 그리고 A와 [R|t] 를 합쳐 Camera Matrix 또는 Projection Matrix라고 부릅니다.
- 카메라 내부 파라미터 (Intrinsic Parameters)
3.1 초점 거리 (Focal length)
fx 와 fy 입니다. 카메라 모델에서는 상대적인 개념으로 렌즈 중심과 이미지 센서와의 거리를 나타냅니다. 동일한 카메라라도 해상도가 바뀐다면 초점거리도 바뀝니다. 그리고 헷갈리지 말아야 할 것이 초점 거리 f는 픽셀(pixel) 단위로 표현한다는 것입니다. 이것은 초점 거리 f가 이미지 센서의 셀(cell) 크기에 대한 상대적인 값으로 표현된다는 의미입니다. 이미지의 픽셀은 이미지 센서의 cell에 대응한다는 말 또한 동일한 말입니다.
- fx : 초점 거리가 가로 방향 셀(cell) 크기의 몇 배인지를 나타내는 값
- fy : 초점 거리가 세로 방향 셀(cell) 크기의 몇 배인지를 나타내는 값
- 일반적으로, f = fx = fy
예를 들어, cell의 크기가 0.1mm, f = 500pixel인 경우에 카메라의 렌즈 중심에서 이미지 센서까지의 거리는 0.1*500 = 50mm가 됨을 확인할 수 있습니다. 픽셀 단위로 표현하는 이유는 영상에서 기하하적 표현을 용이하게 하기 위함이라고 합니다.
Nomalized Image Plane
- 초점으로부터 거리가 1(unit distance)인 평면
- 이 평면 상의 좌표를 Normalized Image Coordinate라고 함
- 가상의 이미지 평면
3.2 주점 (Principal point)
cx 와 cy 이며 카메라 렌즈의 중심입니다. 다르게 말하면, 핀홀에서 이미지 센서에 내린 수선의 발의 영상 좌표라고 할 수 있습니다. 영상 중심점과는 엄연히 다르며 단위는 픽셀입니다. 영상의 모든 기하학적 해석은 이 주점을 이용하여 이루어진다고 합니다.
방사형 왜곡은
직선을 곡선처럼 보이게 하는 것으로 이미지를 화면 중앙에서 멀어질수록 왜곡이 심해지게 된다.
아래 이미지에서 예시를 보겠다. 아래 이미지를 보면 체스 보드의 양끝에 이미지의 왜곡이 생김을 알 수 있다.
빨간색 직선은 직선이지만 체스보드의 끝은 왜곡으로 인해 직선이 아니다.
방사형 왜곡의 해결법은 다음과 같다.
유사하게, 또 다른 왜곡인 접선형 왜곡은 촬영 렌즈가 잡아낸 이미지가 이미지 평면과
정확하게 평행하게 정렬되지 않아서 발생한다.
따라서 이미지의 일부 영역이 예상보다 가까워 보일 수 있다.
이 문제는 이와 같은 방법으로 해결합니다.
결과적으로, 다음과 같이 주어진 왜곡 계수로 알려진 5개의 매개 변수를 찾아야 왜곡을 제거 할수 있습니다.
추가적으로, 카메라의 내재/외적 파라미터들과 같은 정보를 더 찾아내야 한다.
내재 파라미터는 카메라마다 다르다.
초점 길이 (fx,fy) (렌즈에서 이미지 센서까지의 거리 : 거리값이 커질수록 이미지가 확대되어서 보이게 된다. ),
광학 중심 (cx,cy)등과 같은 정보를 포함한다.
또한 카메라 매트릭스라고도합니다. 카메라에만 따라 다르므로 계산 된 후에는 나중에 사용할 수 있도록 저장할 수 있습니다. 3x3 매트릭스로 표현됩니다.
공부할 때 참고한 블로그 입니다.
[OpenCV] 07-1. Camera Calibration
< 07-1. Camera Calibration > " style="clear: both; font-size: 2.2em; margin: 0px 0px 1em; color: rgb(34, 34, 34); font-family: "Roboto Condensed", Tauri, "Hiragino Sans GB", "Microsoft YaHei", STHei..
leechamin.tistory.com
Camera Calibration — OpenCV-Python Tutorials 1 documentation
Camera Calibration Goal In this section, We will learn about distortions in camera, intrinsic and extrinsic parameters of camera etc. We will learn to find these parameters, undistort images etc. Basics Today’s cheap pinhole cameras introduces a lot of d
opencv-python-tutroals.readthedocs.io
junsk1016.github.io/opencv/Calibration-%EC%9D%B4%EB%A1%A0/
Calibration이란? - OpenCV(C++)
Calibration 이론 공부하기
junsk1016.github.io
[OpenCV]Camera Calibration
OpenCV 관련 서적엔 꼭 있는 내용이며, 그만큼 중요하고, 또 어려운 카메라 캘리브레이션에 대해 소개할...
blog.naver.com
'opencv' 카테고리의 다른 글
캐니엣지 (0) | 2021.04.08 |
---|---|
허프라인 (0) | 2021.04.06 |
이미지 블러 공부하자 (0) | 2021.04.05 |
Python Grayscale (0) | 2021.04.04 |
Python OpenCV (0) | 2021.04.04 |