Image Inpainting
이미지 인페인팅은 고전적 방법, 패치 기반 방법, GAN 또는 디퓨전 방법을 사용해 이미지의 마스크 처리되거나 손상되거나 제거된 영역을 그럴듯한 콘텐츠로 채웁니다.
이미지 인페인팅은 긁힌 자국, 제거된 객체, 누락된 패치처럼 이미지의 마스크된 영역을 주변과 자연스럽게 어우러지는 콘텐츠로 채우는 작업입니다. 모든 방법은 이미지와 교체할 픽셀을 표시하는 이진 마스크, 두 가지 입력을 받으며 마스크 바깥의 모든 부분은 그대로 유지합니다. 이 용어는 복원가가 손상된 그림을 보수하는 미술품 보존 분야에서 유래했습니다. Marcelo Bertalmío, Guillermo Sapiro, Vicent Caselles, Coloma Ballester는 SIGGRAPH 2000에서 구멍 경계의 등휘도선을 구멍 안으로 연장하는 방법을 발표하며 디지털 컴퓨터 비전에 이 개념을 도입했습니다. 마스크 아래의 픽셀은 알 수 없으므로 인페인팅된 영역은 항상 그럴듯하게 만들어낸 결과이지 원래 있던 것을 복원한 결과가 아닙니다.
고전적 방법, 패치 기반 방법 및 학습 기반 방법#
고전적인 방법은 마스크 경계에서 색상과 가장자리를 안쪽으로 전파합니다. OpenCV는 인페인팅 모듈에 두 가지 방법을 제공합니다. Alexandru Telea의 2004년 고속 행진법(cv2.INPAINT_TELEA)과 Bertalmío, Andrea Bertozzi, Sapiro가 2001년에 제안한 Navier-Stokes 방법(cv2.INPAINT_NS)입니다. 이 방법들은 먼지, 긁힌 자국, 얇은 텍스트 오버레이에는 잘 작동하지만, 큰 구멍에서는 흐릿한 얼룩을 만듭니다. 아래 코드는 Telea의 방법에 두 번 동일한 수의 누락 픽셀을 입력합니다. 한 번은 얇은 긁힘 형태로, 한 번은 정사각형 하나의 형태로 입력합니다:
import cv2
import numpy as np
from skimage import data
image = cv2.cvtColor(data.astronaut(), cv2.COLOR_RGB2BGR) # 512x512 sample photo
# Two masks with about the same pixel count: thin scratches and one solid block
scratches = np.zeros(image.shape[:2], np.uint8)
for y in range(40, 512, 40):
cv2.line(scratches, (0, y), (511, y + 30), 255, thickness=2)
block = np.zeros_like(scratches)
side = int(np.sqrt(np.count_nonzero(scratches)))
block[200 : 200 + side, 200 : 200 + side] = 255
for name, mask in [("scratches", scratches), ("block", block)]:
restored = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)
# Mean error inside the mask, where every pixel was reconstructed
error = np.abs(restored.astype(int) - image.astype(int))[mask > 0].mean()
print(f"{name}: {np.count_nonzero(mask)} masked pixels, mean error {error:.1f} gray levels")출력 결과는 긁힘 픽셀 18,432개에서 평균 오차 9.1 그레이 레벨, 픽셀 18,225개로 이루어진 블록에서 36.5를 나타냅니다. 긁힘의 모든 픽셀은 한두 픽셀 떨어진 곳에 알려진 이웃 픽셀이 있지만, 블록 중앙은 가장 가까운 실제 픽셀에서 67픽셀 떨어져 있으므로 동일한 누락 영역에서도 오차가 네 배가 됩니다.
패치 기반 방법은 이미지를 부드럽게 만드는 대신 이미지의 다른 부분에서 텍스처를 복사합니다. Antonio Criminisi, Patrick Pérez, Kentaro Toyama가 2004년에 제안한 예제 기반 알고리즘은 강한 가장자리가 구멍 안으로 들어오는 곳부터 시작해 패치별로 구멍을 채웁니다. Connelly Barnes와 동료들이 2009년에 제안한 PatchMatch 최근접 패치 검색은 이 접근 방식을 인터랙티브하게 사용할 수 있을 만큼 빠르게 만들었으며, Photoshop의 콘텐츠 인식 채우기의 기반이 되었습니다. 패치 방식은 잔디, 벽돌, 하늘에 탁월하지만, 누락된 콘텐츠가 이미지의 다른 곳에 없으면 제대로 작동하지 않습니다.
학습된 모델은 학습 중에 본 내용을 바탕으로 콘텐츠를 추론합니다. Deepak Pathak과 동료들은 적대적 손실을 사용해 합성곱 신경망을 학습하여 마스크 처리된 중앙 영역을 완성하는 Context Encoders(CVPR 2016)를 제안했습니다. 이 적대적 손실은 생성적 적대 신경망에서 가져온 것입니다. Samsung AI의 LaMa(WACV 2022)는 첫 번째 레이어부터 이미지 전체를 아우르는 수용 영역을 가진 고속 푸리에 합성곱을 사용하고, 큰 무작위 마스크로 학습하므로 큰 구멍과 울타리나 창문 같은 반복 구조를 완성합니다. 디퓨전 모델은 보이는 픽셀과 선택적 프롬프트를 조건으로 노이즈를 제거하여 구멍을 채웁니다. Stable Diffusion 인페인팅 체크포인트는 마스크와 마스크 처리된 이미지의 잠재 표현을 위한 입력 채널 5개를 U-Net에 추가합니다. Andreas Lugmayr와 동료들의 RePaint(CVPR 2022)는 수정되지 않은 디퓨전 모델을 사용하며, 매 단계마다 알려진 영역을 원본의 노이즈 처리된 복사본으로 대체합니다. Adobe의 Generative Fill은 2023년 프롬프트 기반 텍스트-이미지 인페인팅을 Photoshop에 도입했습니다.
마스크 및 객체 제거#
객체 제거는 이미지 분할 후 인페인팅을 적용하는 과정입니다. 마스크로 객체를 선택하고, 인페인팅으로 객체가 남긴 구멍을 채웁니다. 객체 가장자리에 딱 맞게 그린 마스크는 가장자리 픽셀, 그림자, 반사를 남겨 잔상처럼 보이게 하므로 편집기는 마스크를 몇 픽셀 확장하고 그림자 영역까지 포함합니다. 인스턴스 분할은 객체마다 하나의 마스크를 생성하므로 제거 마스크의 일반적인 출처이며, Meta의 SAM 2 같은 프롬프트 지정 가능 모델은 클릭 한 번으로 클래스 목록에 없는 객체의 마스크를 생성합니다. YOLO26 분할 모델은 각 객체의 윤곽을 result.masks.xy의 다각형으로 반환하며, cv2.drawContours이 cv2.FILLED을 사용해 이를 인페인팅 마스크로 래스터화합니다. 이는 분할 객체 분리 가이드에서 객체를 잘라낼 때 사용하는 것과 동일한 단계입니다.
비디오 인페인팅에는 시간 축이 추가됩니다. 프레임 간에 채우기 결과가 일관되어야 깜박임이 발생하지 않으므로, AI 비디오 편집 도구는 추적을 이용해 마스크를 전파하고 카메라가 움직일 때 인접 프레임에서 새로 드러난 배경 픽셀을 가져옵니다.
관련 작업#
- 아웃페인팅: 동일한 모델을 사용해 이미지의 원래 경계 밖으로 영역을 확장하며, 새 캔버스 영역을 마스크로 사용합니다.
- 초해상도: 마스크 없이 이미지 전체의 해상도를 높이고 세부 정보를 추가합니다.
- 노이즈 제거: 마스크 없이 장면을 유지하면서 모든 픽셀에 퍼진 노이즈를 제거합니다.
- 프레임 보간: 비디오의 앞뒤 프레임을 바탕으로 그 사이의 전체 프레임을 생성합니다.
응용 분야 및 출처#
사진 복원에서는 스캔한 인화물의 균열, 먼지, 찢어진 부분을 마스킹하며, 필름 복원에서는 보관 영상의 긁힌 자국에 대해 프레임별로 동일한 처리를 합니다. 리터칭과 제품 사진 촬영에서는 불필요한 객체, 전선, 흠집을 제거합니다. 위성 영상 분석에서 갭 채우기는 전통적인 인페인팅 문제입니다. Landsat 7의 스캔 라인 보정기가 2003년 5월 31일에 고장 나 이후 각 장면의 약 22%를 덮는 쐐기형 줄무늬가 남았습니다.
학습 기반 인페인팅은 합성 마스크를 적용한 보류 이미지로 평가하며, 원본 픽셀과 달라도 올바른 채우기가 될 수 있으므로 사실성 평가에 프레셰 인셉션 거리(FID)를 사용합니다. 이와 같은 사실성 때문에 인페인팅은 딥페이크 제작 및 워터마크 제거에도 활용되며, 의료·과학·법의학 이미지에서는 만들어낸 구조가 진단이나 판결을 바꿀 수 있습니다. 콘텐츠 자격 증명은 이러한 편집을 서명된 메타데이터에 기록하며, Adobe는 Generative Fill로 편집한 이미지에 이를 첨부합니다.










