Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Homography

호모그래피는 뷰 간 평면을 매핑하는 사영 변환으로, 원근 보정, 이미지 정합, 파노라마 스티칭을 가능하게 합니다.

호모그래피는 한 평면의 점을 다른 평면의 점으로 매핑하면서 직선을 보존하는 가역 사영 변환입니다. 컴퓨터 비전에서 호모그래피는 평평한 표면이 서로 다른 시점에서 어떻게 보이는지를 설명합니다. 예를 들어 비스듬한 각도에서 촬영한 직사각형 페이지를 정면에서 본 직사각형으로 변환할 수 있습니다. 호모그래피는 이미지 정합, 원근 보정, 파노라마 스티칭에 사용됩니다. "사영 변환"은 동의어이며, 언어학 용어인 "동형어"는 철자가 같은 단어를 가리킵니다.

호모그래피 행렬의 작동 원리#

호모그래피는 일반적으로 H라고 부르는 3 x 3 행렬로 표현됩니다. 이 행렬은 2차원 점을 세 개의 값으로 나타내는 동차 좌표에 적용됩니다. 행렬 곱셈 후 출력값의 첫 두 값을 세 번째 값으로 나누면 일반적인 이미지 좌표를 얻을 수 있습니다.

H에는 아홉 개의 항목이 있지만, 자유도는 여덟 개입니다. 모든 항목에 동일한 0이 아닌 수를 곱해도 매핑은 변하지 않습니다. 이러한 평면 이미지 매핑의 기하학을 바탕으로 적절한 점 대응 네 쌍이 호모그래피를 결정하는 이유를 알 수 있습니다.

아핀 변환은 평행선을 보존하는 제한된 호모그래피입니다. 일반 호모그래피는 소실점을 향해 수렴하는 평행한 가장자리 등 원근 효과도 나타냅니다. 거리와 각도는 일반적으로 달라집니다. 미셸 샤슬은 1837년 쌍대성과 호모그래피에 관한 회고록에서 이 개념을 발전시켰습니다.

호모그래피 추정 방법#

추정은 두 이미지에서 동일한 물리적 특징을 나타내는 위치인 대응점에서 시작합니다. 대응점은 직접 선택한 모서리일 수도 있고, 특징점 매칭을 통해 찾을 수도 있습니다. 특징 추출로 얻은 특징점을 활용할 수 있습니다. Scale-Invariant Feature Transform과 같은 방법은 뷰 간 특징을 매칭하기 위해 국소 외관을 수치로 요약한 디스크립터를 제공합니다.

최소 네 쌍의 점이 필요하며, 어느 집합에서도 세 점이 한 직선 위에 놓여서는 안 됩니다. 직접 선형 변환(DLT) 알고리즘은 점의 좌표 관계를 선형 시스템으로 변환합니다. 측정값에 노이즈가 있을 경우 대응점을 추가하면 추정 결과가 개선됩니다.

잘못된 매칭에는 강건한 피팅이 필요합니다. 무작위 표본 합의(RANSAC)는 작은 부분 집합에 후보 변환을 반복적으로 피팅하고, 후보 변환과 일치하는 매칭인 인라이어를 식별합니다. 재투영 오차는 변환된 원본 점과 관측된 목적지 점 사이의 거리를 측정합니다. OpenCV의 호모그래피 추정 API는 cv2.findHomography을 통해 이 과정을 수행하며, H와 인라이어 마스크를 모두 반환합니다.

Python에서 호모그래피 적용하기#

OpenCV는 행렬 추정과 이미지 워핑에 별도의 연산을 제공합니다. pip install opencv-python numpy로 종속 항목을 설치합니다. 다음 예제에서는 샘플 이미지의 직사각형 경계를 사다리꼴로 매핑합니다.

from urllib.request import urlopen

import cv2
import numpy as np

image_url = "https://ultralytics.com/images/bus.jpg"
with urlopen(image_url) as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_COLOR)
height, width = image.shape[:2]

# 두 배열에서 동일한 시계 방향 모서리 순서를 유지합니다.
source = np.float32([[0, 0], [width - 1, 0], [width - 1, height - 1], [0, height - 1]])
target = np.float32([[120, 80], [width - 121, 80], [width - 1, height - 1], [0, height - 1]])
matrix, _ = cv2.findHomography(source, target)
warped = cv2.warpPerspective(image, matrix, (width, height))
cv2.imwrite("homography_result.jpg", warped)

저장된 이미지에는 원근 단축 효과가 나타납니다. 위쪽 가장자리는 더 좁아지고 장면의 직선 가장자리는 직선으로 유지됩니다.

호모그래피의 활용 분야#

  • 문서 처리: 원근 보정을 통해 평면 문서의 네 모서리를 직사각형에 매핑합니다. 이 전처리 단계는 광학 문자 인식 전에 텍스트 레이아웃을 정규화하며, OpenCV의 원근 보정 예제에서 보여 주는 것과 동일한 평면 워프 기하학을 따릅니다.
  • 파노라마 스티칭: 겹치는 사진을 정렬한 뒤 블렌딩합니다. 매튜 브라운과 데이비드 로우의 Autostitch 시스템은 매칭된 국소 특징을 사용해 파노라마 제작을 자동화하며, 순서가 정해지지 않은 컬렉션에서 겹치는 이미지를 식별하는 기능도 포함합니다.

Ultralytics YOLO의 RandomPerspective 증강은 학습 중에 사영 워프를 적용하여 이미지와 이에 연결된 바운딩 박스, 세그멘테이션 윤곽선, 특징점을 함께 변환합니다. perspective 설정은 이 데이터 증강의 원근 구성 요소를 제어합니다.

단일 호모그래피는 하나의 평면을 촬영한 이상적인 핀홀 카메라 뷰 간의 관계를 정확히 나타내거나, 투영 중심을 기준으로 카메라를 회전해 촬영한 뷰 간의 관계를 정확히 나타냅니다. 카메라가 이동하고 물체가 서로 다른 깊이에 있으면 시차로 인해 깊이에 따라 변위가 달라집니다. 배경 평면을 정렬하면 전경 물체는 변위된 상태로 남아 스티칭 이미지에서 가장자리가 이중으로 보이거나 고스트 현상이 발생합니다.

카메라 보정은 렌즈 왜곡을 다룹니다. 렌즈 왜곡으로 발생하는 이미지의 곡선 기하학은 평면 정렬 전에 보정해야 합니다. 일반적인 3차원 장면에서 에피폴라 기하학은 대응점을 직선 위의 위치로 제한하지만, 호모그래피는 점의 위치를 직접 예측합니다. 스테레오 비전에서는 에피폴라 직선을 따라 남은 위치가 시차 정보를 제공하며, 이를 깊이 추정에 사용합니다.

Explore solutions

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요