Contents — find the section you need

탁자, 포스터, 도로 표면과 같이 "동일한 평면"에 있는 두 이미지의 대응점은 일반적인 3D 장면보다 훨씬 간단한 관계를 갖습니다. 카메라의 위치에 관계없이, 해당 평면의 점들은 단 하나의 3\times3 행렬만을 사용하여 서로 변환될 수 있습니다. 이 행렬이 바로 호모그래피(투영 변환)입니다. 에피폴라 기하학 입문에서 장면 깊이를 전제로 하는 대응 제약 조건을 다루는 반면, 호모그래피는 깊이에 전혀 의존하지 않는 대응 관계를 처리한다는 점에서 대조적입니다. 두 가지 방법을 모두 적절하게 사용해야만 두 시점 기하학의 전체적인 그림을 이해할 수 있습니다.

0. 30초 요약

  • 호모그래피 행렬 H은 동일 평면상의 점들 또는 순수 회전을 하는 카메라에 대한 이미지 대응 행렬 \tilde{\mathbf{x}}'\sim H\tilde{\mathbf{x}}을 나타내는 3\times3 행렬입니다. 이 행렬은 스케일 모호성을 제외하고 8개의 자유도를 가집니다.

  • DLT(직접 선형 변환) 방법은 각 점 대응마다 두 개의 선형 방정식을 구성하고, 4개 이상의 대응으로부터 특이값 분해(SVD)를 통해 H을 선형적으로 계산합니다. 하틀리 정규화는 수치적 안정화에 효과적입니다.

  • 실제 대응에는 불일치가 포함되므로, 최종 추정 전에 RANSAC을 사용하여 이상치를 제거합니다. 최소 샘플 크기는 4개 점으로, 필수/기본 행렬 추정보다 강건 추정 반복 횟수가 적습니다.

  • 보정된 카메라가 주어졌을 때, 이는 회전(R), 변환 방향, 그리고 평면 법선(\mathbf{n})으로 분해되는 형태인 H=K(R+\mathbf{t}\mathbf{n}^\mathsf{T}/d)K^{-1}로 표현됩니다. 하지만 일반적으로 물리적으로 타당한 여러 후보 해가 존재하며, 이를 좁히기 위해서는 추가 정보가 필요합니다.

  • 평면 장면이나 순수 회전의 경우, 호모그래피는 필수 행렬이나 기본 행렬보다 더 적합한 모델입니다. 이러한 퇴화를 감지하지 못하면 근본적으로 깊이 복원이 불가능한 상황에서 3D 재구성을 강제로 시도하게 됩니다.

1. 호모그래피란 무엇인가: 평면 투영 변환

두 이미지의 동차 좌표 \tilde{\mathbf{x}}=(x,y,1)^\mathsf{T} , \tilde{\mathbf{x}}'=(x',y',1)^\mathsf{T}가 어떤 3\times3 행렬 H 를 통해 다음 관계식을 만족할 때, 이를 호모그래피라고 합니다. \sim는 스케일까지 동일함을 의미하며, H에 0이 아닌 상수를 곱해도 동일한 변환이 됩니다. 따라서 H의 자유도는 9-1=8입니다.

Diagram 1 · Use the button to switch views
호모그래피 H를 이용하여 이미지 1에서 이미지 2로 매핑된 한 평면상의 네 개의 대응점. 하나의 H만으로는 불충분한 깊이 시차의 경우와 대조적임
Diagram 2 · Use the button to switch views

2. DLT 방법을 이용한 추정

단일 대응점 (x,y)\to(x',y')으로부터, H의 각 요소 h_1,\dots,h_9에 대한 선형 제약 조건(\mathbf{h}=\operatorname{vec}(H))을 도출할 수 있습니다. 외적 \tilde{\mathbf{x}}'\times H\tilde{\mathbf{x}}=\mathbf{0}이 0이 된다는 조건을 전개하면 대응점당 다음과 같은 두 개의 독립적인 방정식을 얻습니다.

\begin{bmatrix} -x & -y & -1 & 0 & 0 & 0 & x'x & x'y & x' \\ 0 & 0 & 0 & -x & -y & -1 & y'x & y'y & y' \end{bmatrix}\mathbf{h}=\mathbf{0}

4개의 대응점이 있는 경우, 총 8개의 방정식이 얻어지며, 이 방정식들은 (일반적인 위치에서) 8자유도 요소 H을 고유하게 결정합니다. 5개 이상의 대응점이 존재하는 현실적인 경우, 모든 대응점을 쌓아 만든 행렬 A에 대한 최소제곱 해를 구합니다. 즉, 특이값 분해(SVD)를 통해 A의 가장 작은 특이값에 해당하는 오른쪽 특이 벡터를 구합니다. 이것이 DLT(Direct Linear Transform) 방법입니다.

에피폴라 기하학의 8점 알고리즘과 마찬가지로, 원시 픽셀 좌표를 직접 사용하는 것은 수치적으로 불안정한 경향이 있습니다. 표준 구현은 Hartley의 정규화된 DLT입니다. 각 이미지의 점 집합에 유사 변환 T,T'을 적용하여 중심점이 0이고 평균 거리가 \sqrt{2}이 되도록 한 다음, 정규화된 좌표계에서 계산하고, 마지막으로 H=T'^{-1}H_{\text{norm}}T을 사용하여 좌표를 원래대로 변환합니다.

3. RANSAC을 이용한 강건한 추정

실제 대응점에는 불일치가 포함되어 있으므로, 모든 대응점에 DLT를 직접 적용하면 이상치가 해를 심하게 왜곡할 수 있습니다. RANSAC은 다음 단계를 반복합니다.

  1. 4개의 대응점을 무작위로 선택하고, DLT를 통해 H에 대한 가설을 구축합니다.

  2. 각 대응점에 대해 H가 예측한 위치와 실제 대응점 사이의 재투영 오차를 계산합니다.

  3. 임계값 내에 있는 대응점(인라이어)이 가장 많은 가설을 채택합니다.

  4. 최종 인라이어를 모두 사용하여 DLT를 다시 한 번 수행하고, 필요한 경우 비선형 최적화(재투영 오차의 직접 최소화)를 통해 마무리합니다.

인라이어 비율 w, 최소 샘플 크기 s=4, 목표 성공 확률 p이 주어졌을 때 필요한 반복 횟수는 다음과 같이 추정할 수 있습니다.

N=\frac{\log(1-p)}{\log\!\left(1-w^{s}\right)}

동일한 인라이어 비율에서 호모그래피의 s=4는 필수/기본 행렬 추정보다 적은 반복 횟수를 필요로 합니다. 필수/기본 행렬 추정에는 s=5 – 8이 필요합니다. 이것이 바로 SIFT 또는 ORB 매칭 직후에 전체 3D 추정으로 넘어가기 전에 호모그래피를 사용하여 먼저 대략적인 기하학적 검증을 수행하는 것이 일반적인 이유 중 하나입니다.

4. H 분해: 회전, 병진 및 평면 법선 추출

카메라가 보정되어 있고 내부 매개변수 K_1,K_2가 알려져 있는 경우, 평면의 단위 법선 \mathbf{n}(카메라 1의 좌표계 기준), 평면까지의 거리 d, 그리고 상대 자세 R,\mathbf{t}를 사용하여 정규화된 호모그래피 \tilde H = K_2^{-1}HK_1를 다음과 같이 나타낼 수 있습니다.

\tilde H = R+\frac{\mathbf{t}\,\mathbf{n}^\mathsf{T}}{d}

카메라가 병진 이동 없이 순수 회전만 하는 경우, \mathbf{t}=\mathbf{0}이므로, \tilde H=R는 회전 행렬 자체가 됩니다.

\tilde H에서 R,\mathbf{t}/d,\mathbf{n}을 복원하는 과정을 호모그래피 분해라고 합니다. 고전적인 포게라스-러스트만 방법과 해석적인 말리스-바르가스 방법을 포함하여, \tilde H^\mathsf{T}\tilde H의 고유값 분해를 이용하여 폐쇄형 해를 구하는 여러 알고리즘이 알려져 있습니다. 그러나 순전히 수학적인 관점에서만 보면, 물리적으로 가능한 해는 최대 4개까지 존재할 수 있습니다(부호 반전이나 반사에 해당하는 해 포함). 실제로는 다음과 같은 기준을 사용하여 해의 범위를 좁힙니다.

  • 양의 깊이(키어럴리티): 삼각 측량된 점들이 두 카메라 모두 앞에 위치해야 합니다.

  • 평면 법선의 타당성: 지면이나 벽과 같이 응용 프로그램에서 이미 알려진 대략적인 법선 방향과 일관성이 있어야 합니다.

  • 여러 프레임에 걸친 일관성: 단일 프레임에서 모호하더라도, 시간 경과에 따른 추적을 통해 연속성이 부족한 부자연스러운 해를 찾아낼 수 있어야 합니다.

OpenCV의 decomposeHomographyMat은 이러한 분해를 수행하고, 여러 후보를 평가하는 데 도움이 되는 필터 함수(예: 알려진 평면 법선에 가까운 솔루션을 선택하는 filterHomographyDecompByVisibleRefpoints)를 제공합니다.

5. 에피폴라 기하학과의 관계: H가 정답인 경우

에피폴라 기하학 입문에서 살펴본 것처럼, 일반적인 3D 장면에서의 두 시점 대응은 기본/필수 행렬로 설명됩니다. 호모그래피는 이 행렬의 특수한 경우이며, 둘 중 하나를 선택하는 기준은 다음과 같습니다.

상황 적합한 모델 이유
변환이 포함된 일반 3D 구조 F (보정되지 않음) / E (보정됨) 시차는 깊이에 따라 달라지며 단일 평면에 담을 수 없습니다.
전체 장면 또는 관심 영역이 단일 평면인 경우 H 평면상의 점들은 호모그래피로 정확하게 기술됩니다.
카메라가 순수 회전(팬/틸트만)하는 경우 H 이동이 없으면 시차가 없으므로 F/E가 성립하지 않습니다.
멀리 있는 장면을 보거나 시차가 매우 작은 경우 H (실질적인 근사치) 깊이 차이로 인한 시차는 픽셀 노이즈에 묻힙니다.

문제는 "H에 해당하는 많은 인라이어"와 "장면이 실제로 평면이거나 카메라가 실제로 순수 회전하는 경우"를 관찰만으로는 구별하기 어려울 수 있다는 것입니다. 일반적인 3D 장면에서도 시야를 지배하는 벽이나 테이블은 호모그래피에 강하게 부합할 수 있습니다. ORB-SLAM의 초기화 과정은 RANSAC 알고리즘을 통해 H와 F을 병렬로 추정하고, 각 모델의 적합도를 평가하여 장면 구조와 카메라 움직임에 가장 적합한 모델을 자동으로 선택함으로써 이러한 모호성을 처리합니다. 구현 수준에서 중요한 점은 단순히 인라이어 개수를 비교하는 대신, 각 모델의 자유도 차이를 고려한 점수(GRIC와 관련된 개념)를 사용하는 것입니다.

6. 응용 분야: 이미지 스티칭, AR 평면 추적 및 지면 평면 추정

이미지 스티칭(파노라마 합성)은 카메라를 제자리에서 회전시켜 촬영한 여러 이미지를 하나의 이미지로 결합하는 것으로, 호모그래피의 대표적인 응용 분야입니다. 인접한 이미지 간의 호모그래피를 추정하고, 각 이미지를 공통 기준 프레임으로 변환한 후 합성합니다. 카메라가 거의 회전만 한다는 가정이 성립하지 않는 경우(걷는 동안 촬영하거나 장면 내 피사체가 가까이 있는 경우), 시차로 인해 고스트 현상이나 이중 이미지가 발생할 수 있습니다.

AR에서의 평면 앵커 추적은 첫 번째 프레임에서 책상이나 포스터와 같은 평면을 감지하고, 이후 각 프레임에 대한 호모그래피를 추적하여 해당 평면에 대한 상대적인 자세를 프레임별로 안정적으로 결정합니다. 분해된 R,\mathbf{t}/d를 사용하면 시각적 불일치 없이 평면의 좌표계에 고정된 가상 객체를 오버레이할 수 있습니다.

지면 추정은 도로 또는 바닥 표면이 "거의 평평하다"는 강력한 사전 지식을 활용합니다. 차량 카메라나 로봇의 지면 감지는 연속적인 프레임 간의 호모그래피를 추적하고, 호모그래피에서 벗어나는 영역(장애물, 지면이 아닌 물체)을 감지하는 방법을 사용합니다. 이는 객체 자체를 인식하는 것이 아니라 기하학적 일관성의 파괴를 감지하는 접근 방식입니다.

7. OpenCV 구현 예시

import cv2 as cv
import numpy as np

orb = cv.ORB_create(nfeatures=3000)
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
matches = cv.BFMatcher(cv.NORM_HAMMING).knnMatch(des1, des2, k=2)
good = [m for m, n in matches if m.distance < 0.75 * n.distance]

p1 = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1, 1, 2)
p2 = np.float32([kp2[m.trainIdx].pt for m in good]).reshape(-1, 1, 2)

# threshold is the allowed reprojection error, in pixels. USAC_MAGSAC is also selectable in place of RANSAC.
H, mask = cv.findHomography(p1, p2, method=cv.RANSAC, ransacReprojThreshold=3.0)
inliers = mask.ravel().astype(bool)

# if K is known, decompose into candidate solutions
num_solutions, Rs, ts, ns = cv.decomposeHomographyMat(H, K)

findHomography에서 반환되는 H은 스케일 모호성을 가집니다. 에피폴라 기하학 입문서의 필수 행렬과 마찬가지로, 분해에서 얻은 변환 벡터는 방향만 결정하며, 절대 스케일은 다른 방법(알려진 평면 거리, 스테레오 기준선, 관성 센서 등)을 통해 제공되어야 합니다.

8. 어려운 조건

  • 평면성 파괴: 평면처럼 보이는 장면이라도 실제 두께를 가진 물체(책, 표지판 모서리, 식물 등)가 포함될 수 있으며, 이러한 물체 위의 점들은 체계적인 이상치가 됩니다. RANSAC의 임계값을 완화하면 평면이 아닌 점들이 포함되어 H 자체가 왜곡될 수 있습니다.

  • 순수 회전 가정의 한계: 손으로 촬영한 이미지를 이어붙일 때 미세한 이동이라도 포함되면, 가까운 피사체일수록 더 많이 움직여 고스트 현상이 발생합니다. 삼각대를 사용하거나 렌즈의 광학 중심 근처에서 회전하는 것이 좋습니다.

  • 퇴화된 구성: 대응점이 이미지의 한 줄을 따라 집중되거나 좁은 영역에 집중될 경우, DLT 행렬의 조건이 나빠지고, H의 외삽 영역(대응점에서 멀리 떨어진 영역)에서 오류가 급격하게 증가합니다.

  • 반복 패턴 또는 저질감 평면: 타일 바닥이나 격자 창과 같은 반복 패턴의 경우, 로컬 디스크립터만으로는 한 주기만큼 어긋난 불일치와 정확한 대응점을 구분할 수 없습니다.

  • 분해의 모호성: K이 부정확하거나 노이즈가 큰 경우, 분해 결과에서 여러 후보 중에서 물리적으로 정확한 해를 하나만 골라내는 것이 불가능할 수 있습니다. 항상 추가적인 사전 정보(법선 방향, 양의 깊이)와 함께 활용하십시오.

9. 요약

호모그래피는 평면상의 대응 또는 순수 회전하는 카메라라는 두 가지 제한적이지만 실제 빈번하게 발생하는 상황을 단일 3\times3 행렬로 정확하게 표현하는 프레임워크입니다. DLT 방법은 최소 제곱법의 시작점이고, RANSAC은 이상치에 대한 대책이며, 분해는 물리적 회전, 이동 및 법선을 추출하는 최종 단계입니다. 무엇보다 중요한 것은 호모그래피가 적합한 모델인지, 그리고 언제 기본/필수 행렬로 전환해야 하는지를 판단하는 것입니다. 이 경계를 잘못 판단하면 평면에 불과한 장면에서 존재하지 않는 깊이를 복구하려고 시도하는 결과를 초래할 수 있습니다.

이해력 점검
서로 다른 깊이에 있는 객체를 하나의 호모그래피로 정렬할 수 있습니까?

일반적인 변환은 평면에서 벗어난 객체에 대해 시차를 남깁니다.

단일 호모그래피를 사용하기 전에 평면 장면 또는 순수 회전 가정을 확인하십시오.

참고 문헌

What to read next

Review the background광학 흐름 입문 — 이미지 움직임에서 속도와 구조 읽기Continue the series에피폴라 기하학 — 두 이미지에서 깊이와 카메라 움직임 읽기Explore another aspect of this field이미지 밝기·휘도 Lab — 노출, 감마, 클리핑 비교