Image warping은 좌표 변환을 이용해 이미지를 이동, 확대/축소, 회전, 기울임, 보정 등을 하는 기술이다.
지금까지 영상 처리에서 다룬 것은 픽셀의 값을 어떻게 바꿀지에 집중을 했다. 그런데 실제 영상 처리에서는 픽셀의 값보다 먼저 해결해야 하는 문제가 있다. 바로 이미지의 기하학적 위치가 틀어진 경우이다.

Image warping을 이용하면 위와 같이, 건물 등이 비스듬히 찍힌 사진을 보정하여 이어붙이는 것이 가능하다.
Parametric, global warping
Image warping은 결국 다음 질문에서 시작한다.
원본 이미지의 한 점 (x, y)가 변환 후 이미지에서는 어디 (x', y')으로 가야 하는가?

수식으로 이해하면 위 그림과 같이 T라는 변환함수를 통해 새로운 좌표를 구할 수 있다.
Global warping이라는 말은 이미지의 모든 점에 같은 규칙을 적용한다는 뜻이다. 예를 들어, 모든 픽셀을 오른쪽으로 30만큼, 아래로 10만큼 옮겨라 라고 하면 이미지 전체의 모든 픽셀에 대해 동일한 변환을 적용해야 한다.
Parametric이라는 말은 이 변환을 몇 개의 숫자, 즉 parameter로 표현할 수 있다는 뜻이다. 예를 들어 이미지 확대는 a, b 같은 배율로 표현할 수 있고, 회전은 θ로 표현할 수 있다.
Scaling
가장 먼저 생각할 수 있는 변환은 킄기 조절, 즉 scaling이다. 이미지를 2배 확대한다는 것은 좌표 관점에서 보면 원래 점 (x, y)를 (2x, 2y)로 보내는 것이다. 예를 들어, 원본에서 어떤 점이 (3, 4)에 있었다면 2배 확대 후에는 (6, 8) 위치에 있게 된다.

이를 수식으로 표현하면 위 그림과 같다.
Shearing
Shearing은 이미지를 한쪽 방향으로 밀어서 기울이는 변환이다.
예를 들어 직사각형을 생각해보자. 위쪽으로 갈수록 오른쪽으로 조금씩 밀리면 직사각형이 평행사변형처럼 변한다. 이것이 shear이다.

이를 수식으로 표현하면 위와 같다. 즉, 새로운 x좌표가 원래 x좌표만으로 결정되는 것이 아니라 y좌표의 영향을 받고, 새로운 y좌표도 x좌표의 영향을 받을 수 있다. 위 수식에서 a는 y값엥 따라 x방향으로 얼마나 밀지를 의미하고, b는 x값에 따라 y방향으로 얼마나 밀지를 의미한다.
Rotation
회전은 어떤 점을 원점을 기줒으로 각도 θ만큼 돌리는 변환이라고 생각하면 된다.
원래 점 (x, y)가 있을 때, 이를 원점 기준으로 θ만큼 회전시키면 새로운 점 (x', y')은 다음과 같이 계산된다.

위 수식이 나오게 되는 과정은 아래와 같다.

어떤 점을 반지금 r과 각도 φ로 표현하면 회전 후에는 각도만 φ + θ가 된다. 이를 삼각함수 덧셈정리로 풀면 x' = xcosθ−ysinθ, y' = xsinθ+ycosθ가 나오게 된다.
주의할 점은 이 회전은 기본적으로 원점 기준 회전이라는 것이다. 이미지의 중심을 기준으로 회전하고 싶다면, 먼저 이미지 중심을 원점으로 옮긴 뒤 회전하고 다시 원래 위치로 옮겨야 한다.
- 중심을 원점으로 이동
- 회전
- 다시 원래 중심 위치로 이동
위 순서가 필요하다.
Forward warping
지금까지는 픽셀 (x, y)가 어디 (x', y')로 가는지를 다뤘다. 이때, 만약 (x', y')의 변환 결과가 정수가 아닌 실수라면 어떻게 할까? 이에 대한 두 가지 접근이 바로 forward warping과 backward warping이다.
Forward warping은 이름 그대로 원본 픽셀 f(x, y)의 intensity를 결과 이미지 g(x', y')에 보내는 방식이다. 우리가 일반적으로 생각하는 warping의 순서를 그대로 따라간다고 생각하면 된다.
Forward warping의 한 방법으로 splatting에 대해 알아보자. Splatting은 원본 픽셀의 intensity를 주변 픽셀들에게 나눠주는 방식이다. 이렇게 말하면 무슨 말인지 헷갈리는데... 예시를 들어 살펴보자.
예를 들어 변환된 좌표 (x', y')이 (13.6, 24.2)라고 해보자. 이 위치는 주변 네개의 픽셀인 (13, 24), (14, 24), (13, 25), (14, 25) 사이에 있다. 이때 원본 픽셀값을 이 네 픽셀에 적절히 나눠줄 수 있다. 변환된 좌표로부터 가까운 픽셀에는 더 많이, 먼 픽셀에는 더 적게 나눠주는 방식이다.

Forward warping의 대표적인 문제는 위 그림과 같다. 원본의 서로 다른 픽셀 (x1, y1), (x2, y2), (x3, y3)의 변환 결과 이미지의 거의 같은 위치인 (x', y')로 오게 될 수 있다. 이때 (x', y')이 실수라고 가정하면 그 주변 4개의 픽셀이 여러개의 intensity에 영향을 받게되는 것이다.
또 다른 문제로는 결과 이미지에 빈 픽셀이 생길 수 있다. 원본 픽셀들을 하나씩 결과 이미지로 보냈다고 가정하자. 그런데 결과 이미지의 모든 픽셀에 원본 픽셀이 도착한다는 보장이 없다. 어떤 결과 픽셀은 아무 원본 픽셀의 intensity도 받지 못할 수 있다. 이런 빈 공간을 hole이라고 한다. 특히 이미지를 확대하거나 회전 시킬 때 이런 문제가 쉽게 생긴다.
Backward warping
Backward warping은 이름 그대로 forward warping과 방향이 반대이다. Forward warping에서는 원본 이미지의 각 픽셀을 결과 이미지로 보냈다. 반면 backward warping에서는 결과 이미지의 각 픽셀 (x', y')에서 출발하여 이 픽셀의 값이 원본 이미지의 어디에서 와야하는지를 거꾸로 찾는다.
위와 같은 방식으로 픽셀을 채우기 때문에 forward warping의 hole문제를 해결할 수 있다.
Backward warping도 예시를 통해 그 과정을 확인해보자. 결과 이미지의 픽셀 (x', y')에서 역변환을 하여 원본 좌표 (x, y) = (10.3, 20.6) 을 구했다고 가정하자. 실수값이므로 forward warping에서와 같이 주변 네 픽셀 (10, 20), (11, 20), (10, 21), (11, 21)로부터의 intensity를 적절하게 반영하여 값을 추정해야 한다. 이때 이 적절한 추정 과정을 interpolation이라고 한다.
Nearest Negihbor Interpolation
Interpolation 방법 중 가장 간단한 방법으로, (x, y)에서 가장 가까운 픽셀을 선택하는 방식이다. 빠르고 구현이 쉬운 대신 결과 이미지가 거칠어질 수 있다.
Bilinear Interpolation
더 자연스러운 방법으로는 bilinear interpolation이 있다. 소수 좌표 주변의 네 픽셀을 보고 거리 비율에 따라 값을 섞는 방식이다. 예를 들어, 원본 좌표가 (10.3, 20.6) 이라고 가정하면 주변 네 픽셀은 다음과 같다.

좌표 (10.3, 20.6)은 x방향으로는 10에서 11 사이에서 0.3만큼 이동했고, y방향으로는 20에서 21사이에서 0.6만큼 이동한 위치이다. 그래서 가까운 픽셀의 영향은 크게, 먼 픽셀의 영향은 작게 반영한다.
'CS > 영상처리' 카테고리의 다른 글
| [영상처리] Edge detection (0) | 2026.06.11 |
|---|---|
| [영상처리] Image Resizing (0) | 2026.06.08 |
| [영상처리] Compression (0) | 2026.05.22 |
| [영상처리] Image Restoration (0) | 2026.05.15 |
| [영상처리] Week4. Image filtering (0) | 2026.03.30 |