Skip to content

simsgood2/jy-camera-calibration

Repository files navigation

카메라 캘리브레이션 및 렌즈 왜곡 보정

체스보드 영상을 이용해 카메라 내부 파라미터를 추정하고, 추정된 결과로 렌즈 왜곡을 보정하는 OpenCV 프로젝트입니다.

주요 기능

  • 체스보드 영상으로 카메라 캘리브레이션 수행
  • 캘리브레이션 결과를 JSON 파일로 저장
  • 저장한 파라미터를 사용해 동영상 왜곡 보정
  • 체스보드 코너 검출 결과 이미지를 저장하여 보고서에 활용 가능

실행 환경

  • Python 3
  • OpenCV
  • NumPy

PowerShell에서 가상환경 활성화:

.\venv\Scripts\Activate.ps1

필요 패키지 설치:

pip install opencv-python numpy

저장소 설명

OpenCV camera calibration project with chessboard-based intrinsic estimation and lens distortion correction
체스보드 영상을 이용한 OpenCV 카메라 캘리브레이션 및 렌즈 왜곡 보정

파일 구성

  • camera_calibration.py: 체스보드 기반 카메라 캘리브레이션
  • distortion_correction.py: 캘리브레이션 결과를 이용한 왜곡 보정
  • calibration_result.json: 캘리브레이션 결과 파일
  • undistorted.mp4: 왜곡 보정 결과 동영상
  • debug_corners/: 체스보드 코너 검출 결과 이미지 폴더
  • images/: README.md에 쓸 사진

실행 방법

1. 카메라 캘리브레이션

python .\camera_calibration.py --input .\chessboard_input.mp4 --pattern-size 11 7 --square-size 1.0 --output .\calibration_result.json
  • --pattern-size 11 7: 체스보드 내부 코너 개수
  • --square-size 1.0: 한 칸의 실제 크기
  • --output: 캘리브레이션 결과 JSON 파일 경로

실행 후 저장되는 정보:

  • fx, fy
  • cx, cy
  • dist_coeffs
  • rmse
  • num_views

또한 debug_corners/ 폴더에 코너 검출 결과 이미지가 저장됩니다.

2. 렌즈 왜곡 보정

python .\distortion_correction.py --input .\chessboard_input.mp4 --calibration .\calibration_result.json --output .\undistorted.mp4 --crop

실행 후 왜곡이 보정된 동영상 undistorted.mp4가 생성됩니다.

캘리브레이션 결과

  • fx: 1643.5867
  • fy: 1638.9056
  • cx: 942.7436
  • cy: 549.9805
  • dist_coeffs: [0.2396245978788045, -2.7042708308291297, 0.004078891722683209, -0.007235170473665011, 10.155674047239529]
  • rmse: 0.506168
  • num_views: 27

결과 설명

체스보드 영상을 이용해 카메라 캘리브레이션을 수행하였고, 총 27개의 유효한 프레임이 사용되었다. 추정된 내부 파라미터는 fx=1643.5867, fy=1638.9056, cx=942.7436, cy=549.9805이며, 재투영 오차 RMSE는 0.506168이었다. 추정된 왜곡 계수를 이용해 원본 영상의 렌즈 왜곡을 보정하였고, 결과 영상은 undistorted.mp4로 저장하였다.

시연 자료

  • 왜곡 보정 전 원본 프레임 이미지 alt text alt text
  • 왜곡 보정 후 결과 프레임 이미지 alt text alt text
  • debug_corners/ 폴더의 체스보드 코너 검출 이미지 alt text alt text

  • 스마트폰 광각 카메라처럼 왜곡이 큰 카메라일수록 보정 전후 차이가 잘 보입니다.
  • 다양한 거리와 각도에서 촬영할수록 캘리브레이션 결과가 더 안정적입니다.
  • 체스보드 종이는 평평한 판에 붙여야 정확도가 좋아집니다.

About

체스보드 영상을 이용한 OpenCV 카메라 캘리브레이션 및 렌즈 왜곡 보정

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages