Image Registration
특징점 또는 밝기값 매칭, 기하학적 변환 및 검증을 사용해 위성 변화 탐지, 의료 영상, 컴퓨터 비전에서 이미지를 정렬하는 이미지 정합 방법을 알아보세요.
이미지 정합은 장면에서 동일한 위치가 서로 대응하는 좌표에 오도록 두 개 이상의 이미지를 정렬하는 과정입니다. 6월에 촬영한 위성 이미지를 1월에 촬영한 이미지 위에 겹쳐 놓는다고 생각해 보세요. 카메라 각도나 위치가 바뀌었다면 실제로 도로가 이동하지 않았더라도 도로가 옮겨진 것처럼 보일 수 있습니다. 정합은 컴퓨터 비전 시스템이 이미지를 비교하거나 이미지 정보를 결합하기 전에 이러한 기하학적 불일치를 바로잡습니다.
이미지 정합의 작동 방식#
정합 워크플로에서는 목표 좌표계를 정의하는 이미지를 고정 이미지로 지정하고, 이에 맞춰 정렬해야 하는 다른 이미지를 이동 이미지로 지정합니다. 시스템은 공간 변환을 추정한 다음 이동 이미지를 리샘플링하여 새 위치의 픽셀 값을 계산합니다. 결과는 오버레이로 확인할 수 있습니다. 변하지 않은 구조는 서로 정렬되어야 하며 실제 변화는 계속 보여야 합니다. ImageJ 정합 개요에서는 대응점, 변환, 정렬된 이미지 사이의 관계를 설명합니다.
변환을 추정하는 일반적인 방법은 두 가지입니다. 특징 기반 정합은 두 이미지에서 모서리와 같이 식별하기 쉬운 위치를 찾고, 동일한 장소를 나타내는 점들을 대응시킵니다. 그런 다음 이러한 대응점에 맞춰 변환을 계산하고, 가능한 경우 잘못 대응된 점을 제외합니다. OpenCV의 특징 매칭 및 호모그래피 가이드에서 이 방법을 확인할 수 있습니다. 강도 기반 정합은 이미지 픽셀 값 간의 유사도 측정값을 높이도록 변환을 조정합니다. 옵티마이저라고 하는 해당 측정값과 탐색 절차는 강도 기반 정합 워크플로의 핵심입니다.
변환 선택#
적절한 변환은 이미지가 서로 다른 이유에 따라 달라집니다. 평행 이동은 단순한 가로 또는 세로 이동을 처리합니다. 강체 변환은 거리를 유지하면서 회전도 허용합니다. 아핀 정합은 크기 조정과 기울어짐도 처리하지만 이미지 전체에 하나의 변환을 적용합니다. 투영 변환 또는 호모그래피는 대응된 장면이 거의 평면일 때 원근 차이를 보정할 수 있습니다. MathWorks에서 설명하는 기하학적 변환 유형을 참고하면 각 유형의 차이를 시각적으로 이해하는 데 도움이 됩니다.
일부 장면에는 영역마다 서로 다른 정도로 이동할 수 있는 변형 가능 정합이 필요합니다. 예를 들어 스캔 사이에 해부학적 형태가 변하는 경우가 이에 해당합니다. 이러한 유연성은 국소 정렬을 개선할 수 있지만, 비현실적인 변형은 실제 차이를 가릴 수 있습니다. 따라서 SimpleITK의 정합 프레임워크와 같은 의료 영상 도구는 변환, 유사도 측정값, 옵티마이저, 보간 방법을 명시적으로 지정합니다.
정합과 관련 비전 작업#
정합의 핵심은 단순한 시각적 유사성이 아니라 공유 좌표계입니다. 이미지 매칭은 시각적으로 대응하는 콘텐츠를 찾아 정합에 필요한 점 쌍을 제공할 수 있습니다. 정합은 한 단계 더 나아가 공간 정렬을 추정하고 적용합니다. 키포인트는 이러한 대응점으로 활용할 수 있지만, 움직이는 사람이나 차량 위의 점은 일반적으로 정지된 배경을 정렬하기 위한 기준점으로 적합하지 않습니다.
마찬가지로 광학 흐름은 프레임 간의 겉보기 움직임을 추정합니다. scikit-image의 광학 흐름 정합 예제에서 보듯이 움직임 추정값은 프레임 정합에 도움이 될 수 있지만, 광학 흐름 자체가 정확한 정렬을 보장하지는 않습니다. 객체 추적의 목표는 시간에 따라 객체의 정체성을 유지하는 것으로 다릅니다. 추적기는 배경 움직임 추정값을 사용해 카메라 움직임과 객체 움직임을 혼동하지 않도록 할 수 있습니다.
AI 애플리케이션에서의 중요성#
위성 변화 탐지에서는 분석가가 몇 달 간격으로 촬영한 농경지 이미지를 비교해 새로 개간된 지역을 식별할 수 있습니다. 정합은 변화 탐지 모델이 이미지를 비교하기 전에 밭, 도로, 경계가 동일한 픽셀 위치에 오도록 합니다. 그렇지 않으면 이동된 밭 경계가 토지 피복 변화처럼 보일 수 있습니다. 정렬 후에도 계절, 조명 또는 센서 유형의 차이를 주의해서 다뤄야 합니다. 이는 위성 이미지 분석에서 흔히 고려해야 하는 사항입니다.
의료 영상 분석에서는 임상의가 병변의 변화를 평가하기 위해 서로 다른 시점에 촬영한 스캔을 비교할 수 있습니다. 스캔을 정렬하면 동일한 해부학적 영역을 더 쉽게 비교하거나 세그멘테이션 모델에 전달할 수 있습니다. 해부학적 구조는 변형될 수 있고 영상 촬영 방법에 따라 밝기 패턴이 달라질 수 있으므로, 우수한 정합은 모든 영역을 동일하게 보이도록 만드는 것이 아니라 임상적으로 의미 있는 차이를 보존해야 합니다.
실무 정합 및 검증#
불일치를 그럴듯하게 설명할 수 있는 가장 단순한 변환부터 시작합니다. 이미지에 서로 겹치는 가시 영역이 충분한지 확인하고, 해상도 차이를 고려하며, 일치도가 가장 높은 위치뿐 아니라 여러 위치에서 정렬 상태를 살펴봅니다. 이후 예측 결과나 어노테이션을 원본 이미지에 매핑해야 한다면 추정한 변환을 저장합니다. OpenCV의 기하학적 변환 가이드에서는 이미지 워핑을 통해 변환된 픽셀을 배치하는 방법을 설명합니다.
다음 독립 실행형 예제에서는 scikit-image 위상 상관 워크플로를 사용해 평행 이동을 추정합니다. pip install scikit-image scipy을 사용해 종속 항목을 설치합니다.
import numpy as np
from scipy.ndimage import shift
from skimage import data
from skimage.io import imsave
from skimage.registration import phase_cross_correlation
# 기준 이미지와 이를 이동시킨 복사본을 생성합니다.
fixed = data.camera()
moving = np.roll(fixed, shift=(12, -8), axis=(0, 1))
# 이동 이미지를 고정 이미지에 정렬하는 데 필요한 이동량을 추정합니다.
estimated_shift, _, _ = phase_cross_correlation(fixed, moving)
aligned = shift(moving, estimated_shift, order=0, mode="grid-wrap")
imsave("registered.png", aligned)
print(estimated_shift)출력된 값은 보정량을 나타내며, registered.png은 정렬된 이미지를 보여 줍니다. 이 예제는 평행 이동만 다루며 회전, 변형 또는 서로 다른 센서로 촬영한 이미지는 다루지 않습니다. 움직이는 카메라를 사용하는 비디오 파이프라인에서 Ultralytics YOLO 추적은 관련 애플리케이션을 제공합니다. 카메라 움직임 보정 기능은 프레임 간 워프를 추정해 추적 중인 객체의 위치를 일관되게 유지하는 데 도움을 줍니다. 이 추적기 기능은 일반적인 정합 이미지를 생성하는 것이 아니라 프레임 간 객체 연관을 지원합니다.









