초점과 화질 결정 요인

방사 왜곡부터 역매핑까지 - 왜곡 보정이 실제로 동작하는 방식.

mvoptics 2026. 6. 23. 19:11
Machine Vision Optics · Camera Calibration

렌즈 왜곡과 캘리브레이션 기초
직선이 휘어 보이는 이유

완벽한 렌즈는 없습니다. 렌즈를 통과한 직선은 미세하게 곡선처럼 휘어 보이는데, 이를 왜곡(Distortion)이라 부릅니다. 왜곡의 종류와 이를 수학적으로 보정하는 캘리브레이션 과정을 정리했습니다.

방사 왜곡 접선 왜곡 체커보드 캘리브레이션 왜곡 계수

렌즈 왜곡(Lens Distortion)이란?

이상적인 렌즈는 실제 공간의 직선을 이미지에도 정확히 직선으로 옮겨야 합니다. 하지만 실제 렌즈는 곡면 형태의 유리를 여러 장 조합해서 만들어지기 때문에, 가장자리로 갈수록 실제 위치와 다른 곳에 상이 맺히는 현상이 생깁니다. 그 결과 원래는 직선이었던 물체의 가장자리가 이미지에서는 살짝 휘어 보입니다.

왜곡과 비네팅, 무엇이 다른가?

이전에 다룬 비네팅(가장자리가 어두워지는 현상)은 "밝기"의 문제였습니다. 왜곡은 "형태(위치)"의 문제입니다. 같은 가장자리 영역에서 동시에 나타날 수 있지만 원인과 보정 방법이 전혀 다릅니다.

비네팅 → 밝기가 달라짐 왜곡 → 위치(형태)가 달라짐

그림으로 보기 - 직선 격자가 휘어지는 모습

왜곡 없음 (이상적) 방사 왜곡 (배럴형) 방사 왜곡 (핀쿠션형)

왼쪽처럼 곧아야 할 격자선이, 렌즈에 따라 바깥으로 볼록(배럴형) 또는 안으로 오목(핀쿠션형)하게 휘어집니다.

실무에서 체감하는 순간: 넓은 화각의 렌즈로 정사각형 부품을 찍었는데 가장자리 변이 살짝 둥글게 보이거나, 화면 끝에서 측정한 길이가 중앙에서 측정한 길이와 미묘하게 다를 때, 바로 이 왜곡이 원인입니다.

방사 왜곡(Radial Distortion)이란?

방사 왜곡은 이미지 중심에서 멀어질수록(반경 방향으로) 점점 심해지는 왜곡입니다. 렌즈를 이루는 곡면 유리의 특성상, 중심부와 외곽부를 지나는 빛이 서로 다른 비율로 굴절되기 때문에 생깁니다. 크게 두 가지 형태로 나타납니다.

배럴 왜곡 (Barrel)

바깥으로 볼록하게

이미지 외곽이 중심보다 축소되어 보이면서, 직선이 바깥으로 부푼 것처럼 휩니다. 광각 렌즈에서 흔히 나타나는 형태입니다.

핀쿠션 왜곡 (Pincushion)

안으로 오목하게

이미지 외곽이 중심보다 확대되어 보이면서, 직선이 안쪽으로 빨려 들어가듯 휩니다. 망원/줌렌즈의 망원 쪽에서 흔히 나타납니다.

수학적으로는 어떻게 표현할까?

방사 왜곡은 이미지 중심으로부터의 거리(r)에 대한 다항식으로 모델링합니다. 보정 시에는 보통 2~3개의 방사 왜곡 계수(k₁, k₂, k₃)를 구해서 사용합니다.

보정된 위치 = 원래 위치 × (1 + k₁r² + k₂r⁴ + k₃r⁶)

k 값이 음수면 배럴 왜곡, 양수면 핀쿠션 왜곡에 가까운 보정이 이루어집니다. r이 작은 중심부는 거의 영향이 없고, r이 커지는 외곽부일수록 보정량이 커집니다.

핵심 포인트: 방사 왜곡은 렌즈의 광축을 중심으로 대칭적으로 나타납니다. 즉 위/아래/좌/우가 같은 패턴으로 휩니다. 이 대칭성이 다음 탭에서 다룰 접선 왜곡과 구분되는 가장 큰 특징입니다.

접선 왜곡(Tangential Distortion)이란?

접선 왜곡은 방사 왜곡과 원인이 다릅니다. 렌즈와 이미지 센서가 완벽하게 평행하게 정렬되지 않았을 때 발생합니다. 즉 렌즈 제작이나 카메라 조립 과정에서 생기는 미세한 기울어짐(misalignment)이 원인입니다.

그림으로 보기 - 비대칭적으로 휘는 패턴

렌즈와 센서가 살짝 기울어진 경우 렌즈 (살짝 기울어짐) 센서 면 (수직) 결과: 비대칭 왜곡 한쪽으로 치우친 패턴 비교: 방사 왜곡(대칭) 위아래로 대칭적인 패턴

접선 왜곡(왼쪽 아래)은 렌즈-센서 정렬 오차 때문에 한쪽 방향으로 치우친 비대칭 패턴을 보입니다. 방사 왜곡(오른쪽 아래)은 중심을 기준으로 대칭적입니다.

수학적 표현

접선 왜곡은 보통 2개의 접선 왜곡 계수(p₁, p₂)로 모델링합니다. 방사 왜곡(k₁,k₂,k₃)과 접선 왜곡(p₁,p₂)을 합쳐 총 5개의 계수가 렌즈의 왜곡 특성을 표현하는 표준적인 모델로 널리 쓰입니다.

방사 왜곡 계수: k₁, k₂, k₃ 접선 왜곡 계수: p₁, p₂
실무 팁: 일반적으로 접선 왜곡은 방사 왜곡보다 영향이 작은 경우가 많지만, 정밀 측정 애플리케이션에서는 두 가지를 모두 보정해야 신뢰할 수 있는 결과를 얻을 수 있습니다.

캘리브레이션(Calibration) - 왜곡 계수를 구하는 과정

왜곡을 보정하려면 먼저 그 렌즈가 정확히 얼마나, 어떤 패턴으로 왜곡되는지를 알아야 합니다. 이를 구하는 표준적인 방법이 체커보드(Checkerboard) 패턴을 이용한 캘리브레이션입니다.

그림으로 보기 - 체커보드로 왜곡 계수 구하기

① 다양한 각도로 촬영 여러 장(보통 10~30장 이상) ② 코너점 좌표 추출 실제 위치 vs 이미지 위치 비교 ③ 왜곡계수 계산 → 보정 곧게 펴진 격자로 보정 완료

체커보드를 여러 각도에서 찍고, 코너점이 이미지에서 어디에 찍혔는지(왜곡된 위치)와 실제로 어디에 있어야 하는지(이상적 위치)를 비교해 왜곡 계수를 역으로 계산합니다.

캘리브레이션으로 얻는 두 가지 정보

내부 파라미터 (Intrinsic)

초점거리, 주점(principal point) 위치, 왜곡 계수(k₁,k₂,k₃,p₁,p₂) 등 카메라 자체의 고유한 특성입니다.

외부 파라미터 (Extrinsic)

카메라가 공간상에서 어떤 위치·각도(회전, 이동)로 놓여 있는지를 나타내는 정보입니다.

Reprojection Error: 캘리브레이션 결과가 얼마나 정확한지는 "보정 계수를 적용했을 때 코너점이 실제 위치에 얼마나 가깝게 돌아오는가"로 검증합니다. 이 오차를 Reprojection Error라고 하며, 값이 작을수록 캘리브레이션 품질이 좋다는 뜻입니다.

캘리브레이션 진행 절차

1

체커보드 패턴 준비

정사각형 한 칸의 크기를 정확히 알고 있는 평면 체커보드를 사용합니다. 칸 크기가 실제 측정 정밀도의 기준이 됩니다.

2

다양한 각도·위치에서 촬영

화면의 중앙뿐 아니라 네 귀퉁이, 기울어진 각도까지 포함해 충분히 많은 장(보통 10~30장 이상)을 찍어야 왜곡 계수를 안정적으로 구할 수 있습니다.

3

코너점 검출 및 계수 계산

각 사진에서 체커보드의 코너점을 자동으로 검출하고, 실제 좌표와 비교해 내부/외부 파라미터와 왜곡 계수를 계산합니다.

4

Reprojection Error 확인

오차가 충분히 작은지 확인합니다. 오차가 크다면 촬영 각도를 늘리거나 흔들린 사진을 제외하고 다시 계산합니다.

5

왜곡 보정 적용

구해진 계수로 "보정 맵(remap table)"을 한 번 만들어두면, 이후 들어오는 모든 이미지에 같은 맵을 적용해 실시간으로 왜곡을 제거합니다. 아래에서 이 과정을 좀 더 자세히 설명합니다.

왜곡 보정은 실제로 어떻게 동작하나? - 역매핑(Remap)

왜곡 보정의 핵심 아이디어는 "보정된 이미지의 각 픽셀이, 왜곡된 원본 이미지의 어느 픽셀 값을 가져와야 하는지"를 미리 계산해두는 것입니다. 직접 왜곡된 픽셀을 하나씩 "펴는" 것이 아니라, 거꾸로 결과 이미지를 기준으로 원본에서 값을 가져오는 방식이라 역매핑(inverse mapping)이라고 부릅니다.

1. 캘리브레이션으로 k₁,k₂,k₃,p₁,p₂ 계수 확보 2. 결과 이미지의 픽셀(x,y)마다 → 원본의 어느 좌표(x',y')에서 값을 가져올지 계산 3. 이 좌표 대응표를 맵(Map)으로 저장 4. 이후 모든 프레임에 같은 맵을 적용 (재계산 없이 빠르게 반복)

그림으로 보기 - 픽셀이 옮겨지는 과정

왜곡된 원본 이미지 원본 픽셀 P' 맵 참조 보정된 결과 이미지 결과 픽셀 P 결과의 P 위치를 채우기 위해, 맵에 저장된 대응 좌표를 따라 원본의 P' 값을 그대로 가져와 채웁니다.

결과 이미지(오른쪽)의 곧은 격자를 만들기 위해, 각 픽셀이 원본(왼쪽)의 휘어진 위치에서 값을 "가져오는" 방식으로 동작합니다. 이 대응 관계를 한 번 계산해 맵으로 저장해두면, 매 프레임마다 복잡한 수식을 다시 계산할 필요가 없어 속도가 빠릅니다.

실무에서 적용하는 두 가지 방식

소프트웨어 보정

PC나 비전 컨트롤러에서 캡처된 이미지에 보정 맵을 적용합니다. OpenCV 같은 라이브러리의 보정 함수가 대표적이며, 가장 흔하게 쓰이는 방식입니다. 유연하지만 매 프레임 연산 부담이 있습니다.

카메라/FPGA 내장 보정

일부 산업용 카메라는 보정 맵을 카메라 내부(FPGA)에 미리 저장해두고, 출력되는 영상 자체를 이미 보정된 상태로 내보냅니다. PC 부담이 없어 고속 라인에 유리합니다.

핵심 포인트: 왜곡 보정은 "한 번 계수를 구하면 끝"이 아니라, 그 계수로 좌표 대응 맵을 만들고, 이후 모든 이미지에 그 맵을 일괄 적용하는 방식으로 동작합니다. 그래서 캘리브레이션(계수 계산)과 보정 적용(맵 적용)은 개념적으로 분리해서 이해하는 것이 좋습니다.

상황별 가이드

🔴

캘리브레이션이 꼭 필요한 경우

치수 측정, 좌표 변환이 필요한 애플리케이션(픽업 좌표 계산, 정밀 위치 측정), 광각 렌즈를 사용하는 검사 시스템처럼 정확한 위치·길이 정보가 중요한 모든 경우.

🟡

간단히 넘어갈 수 있는 경우

단순 불량 유무 판별(존재/부존재)처럼 절대적인 위치·치수 정확도가 중요하지 않은 검사라면, 캘리브레이션 없이도 충분한 경우가 많습니다.

도입 전 체크리스트

✔ 체커보드 칸 크기의 정확한 측정값 ✔ 충분한 촬영 각도/위치 다양성 ✔ Reprojection Error 허용 기준 ✔ 렌즈/줌 설정 변경 시 재보정 필요성 ✔ 보정 결과를 적용할 소프트웨어 환경

렌즈의 초점거리나 줌 설정을 바꾸면 왜곡 특성도 달라지므로, 설정을 바꿀 때마다 캘리브레이션을 다시 수행해야 한다는 점을 기억해야 합니다.