For the complete documentation index, see llms.txt. This page is also available as Markdown.

이미지 이어붙이기

공통 부분을 기준으로 두 이미지를 이어 붙입니다.

SIFT(스케일 불변 특징 변환) 특징 매칭과 호모그래피 기반 이미지 정렬을 사용하여 겹치는 두 이미지를 하나의 파노라마 이미지로 이어 붙입니다. 공통 특징을 자동으로 감지하고, 기하학적 변환을 계산하며, 이미지를 블렌딩하여 겹치는 장면들로부터 자연스러운 파노라마 구성을 만듭니다.

이 블록의 작동 방식

이 블록은 공통 특징을 감지하고, 기하학적 변환을 계산하며, 이미지를 하나의 파노라마 결과로 정렬하여 겹치는 두 이미지를 이어 붙입니다. 이 블록은:

  1. 특징 매칭에 충분한 세부 정보를 가진 겹치는 영역이 포함된 두 입력 이미지(image1 및 image2)를 받습니다

  2. 두 이미지 모두에 대해 SIFT(스케일 불변 특징 변환)를 사용하여 키포인트를 감지하고 디스크립터를 계산합니다:

    • 각 이미지에서 스케일과 회전에 불변인 독특한 특징점(키포인트)을 식별합니다

    • 각 키포인트 주변의 시각적 특성을 설명하는 특징 디스크립터(128차원 벡터)를 계산합니다

  3. 브루트 포스 매칭을 사용하여 두 이미지 간 키포인트를 매칭합니다:

    • image1의 각 키포인트에 대해 image2의 모든 키포인트 중 가장 잘 일치하는 디스크립터를 찾습니다

    • k-최근접 이웃 매칭(count_of_best_matches_per_query_descriptor로 구성 가능)을 사용하여 각 쿼리 키포인트당 여러 개의 잠재적 매치를 찾습니다

  4. Lowe의 비율 테스트를 사용하여 좋은 매치를 필터링합니다:

    • 최상의 매치까지의 거리와 두 번째로 좋은 매치까지의 거리를 비교합니다

    • 최상의 매치 거리가 두 번째로 좋은 매치 거리의 0.75배보다 작은 매치만 유지합니다(오탐지를 줄임)

  5. 키포인트 위치를 기반으로 이미지 순서를 결정합니다(매칭된 특징의 공간적 분포를 바탕으로 어느 이미지를 먼저 배치해야 하는지 식별)

  6. RANSAC(랜덤 샘플 합의)를 사용하여 호모그래피 변환 행렬을 계산합니다:

    • 한 이미지의 점들을 다른 이미지에 매핑하는 원근 변환 행렬을 찾습니다

    • RANSAC을 사용하여 이상치 매치를 걸러내면서 변환을 강건하게 추정합니다

    • 구성 가능한 최대 재투영 오차(max_allowed_reprojection_error)가 어떤 점 쌍을 인라이어로 간주할지 제어합니다

  7. 캔버스 크기와 이동을 계산합니다:

    • 변환 후 두 이미지를 모두 포함하는 데 필요한 크기를 결정합니다

    • 두 이미지가 캔버스 경계 안에 들어가도록 하기 위해 필요한 이동량을 계산합니다

  8. 호모그래피 변환을 사용하여 두 번째 이미지를 워핑합니다:

    • 두 번째 이미지를 첫 번째 이미지에 맞게 정렬하도록 원근 변환을 적용합니다

    • 올바른 위치 배치를 위해 호모그래피 행렬을 이동 행렬과 결합합니다

  9. 이미지를 함께 이어 붙입니다:

    • 첫 번째 이미지를 워핑된 두 번째 이미지 캔버스 위에 배치합니다

    • 정렬되고 블렌딩된 두 입력 이미지를 포함하는 최종 스티칭 파노라마 이미지를 만듭니다

  10. 이어 붙인 이미지를 반환하거나, 스티칭이 실패하면 None을 반환합니다(예: 매치 수 부족, 변환 계산 실패)

이 블록은 충분한 세부 정보와 텍스처를 가진 이미지에서 잘 작동하는 강건한 특징 감지를 위해 SIFT를 사용합니다. RANSAC 기반 호모그래피 계산은 원근 왜곡을 처리하고 일부 잘못된 매치가 있어도 강건한 정렬을 보장합니다. 재투영 오차 임계값은 정렬의 민감도를 제어합니다. 값이 낮을수록 더 정밀한 매치가 필요하고, 값이 높을수록(세부 정보가 적은 이미지에 유용) 매칭 변동에 더 큰 허용 범위를 제공합니다.

일반적인 사용 사례

  • 파노라마 이미지 생성: 겹치는 이미지를 이어 붙여 넓은 파노라마 뷰를 만듭니다(예: 겹치는 카메라 촬영본으로 파노라마 사진 만들기, 회전 카메라의 이미지를 이어 붙이기, 여러 겹치는 이미지를 파노라마로 결합하기). 파노라마 이미지 생성 워크플로를 지원합니다

  • 광역 장면 복원: 장면의 여러 겹치는 뷰를 하나의 포괄적인 이미지로 결합합니다(예: 여러 카메라 각도에서 넓은 장면 복원, 겹치는 감시 카메라 뷰 결합, 여러 시점의 이미지를 이어 붙이기). 광역 장면 시각화를 지원합니다

  • 다중 이미지 모자이크: 겹치는 이미지 타일 또는 섹션으로부터 이미지 모자이크를 만듭니다(예: 대규모 매핑을 위한 이미지 타일 이어 붙이기, 겹치는 위성 이미지 섹션 결합, 겹치는 이미지 캡처로 모자이크 만들기). 이미지 모자이크 생성 워크플로를 지원합니다

  • 장면 문서화: 여러 겹치는 이미지를 결합하여 큰 장면이나 영역을 문서화합니다(예: 여러 겹치는 사진으로 넓은 공간 문서화, 장면 문서를 위한 겹치는 뷰 결합, 포괄적인 장면 캡처를 위한 이미지 이어 붙이기). 종합적인 장면 문서화를 지원합니다

  • 비디오 프레임 스티칭: 비디오 시퀀스의 겹치는 프레임을 이어 붙입니다(예: 비디오 프레임으로 파노라마 뷰 만들기, 움직이는 카메라의 겹치는 프레임 결합, 연속 비디오 프레임 이어 붙이기). 비디오 기반 파노라마 워크플로를 지원합니다

  • 다중 카메라 뷰 결합: 여러 카메라의 겹치는 뷰를 하나의 통합된 뷰로 결합합니다(예: 겹치는 카메라 피드 이어 붙이기, 모니터링을 위한 다중 카메라 뷰 결합, 겹치는 카메라 시점 병합). 다중 카메라 뷰 통합 워크플로를 지원합니다

다른 블록에 연결하기

이 블록은 두 이미지를 받아 하나의 이어 붙인 이미지를 생성합니다:

  • 이미지 입력 블록 뒤에 또는 이미지 전처리 블록 전처리된 이미지를 함께 이어 붙이기 위해(예: 전처리 후 이미지 이어 붙이기, 향상 후 이미지 결합, 필터링 후 이미지 병합), 이미지 스티칭 워크플로를 지원합니다

  • 자르기 블록 뒤에 서로 다른 소스에서 자른 이미지 영역을 함께 이어 붙이기 위해(예: 서로 다른 이미지의 자른 영역 이어 붙이기, 여러 소스의 자른 부분 결합, 자른 영역을 파노라마로 병합), 자른 영역 스티칭 워크플로를 지원합니다

  • 변환 블록 뒤에 변환되었거나 조정된 이미지를 이어 붙이기 위해(예: 원근 보정 후 이미지 이어 붙이기, 기하학적 변환 후 이미지 결합, 조정 후 이미지 병합), 변환 이미지 스티칭 워크플로를 지원합니다

  • 파노라마 뷰의 이점을 얻는 감지 또는 분석 블록 앞에 에서 파노라마 뷰의 이점을 얻는 블록(예: 이어 붙인 파노라마 이미지에서 객체 감지, 넓은 영역의 이어 붙인 장면 분석, 포괄적인 이어 붙인 뷰 처리), 파노라마 분석 워크플로를 지원합니다

  • 시각화 블록 이전 이어 붙인 파노라마 이미지를 표시하기 위해(예: 이어 붙인 파노라마 시각화, 넓은 영역의 이어 붙인 뷰 표시, 포괄적인 이어 붙인 장면 표시), 파노라마 시각화 출력을 지원합니다

  • 다단계 이미지 처리 워크플로에서 추가 처리 전에 이미지를 이어 붙여야 하는 경우(예: 감지 전에 이미지 이어 붙이기, 분석 전에 이미지 결합, 포괄적인 처리를 위한 이미지 병합), 다단계 파노라마 처리 워크플로를 지원합니다

유형 식별자

단계에서 다음 식별자를 사용하세요 "type" 필드: roboflow_core/stitch_images@v1 워크플로우에 이 블록을 단계로 추가하려면.

속성

이름

유형

설명

참조

name

str

이 단계에 대한 고유 식별자를 입력하세요..

max_allowed_reprojection_error

float

RANSAC 호모그래피 계산 중 점 쌍을 인라이어로 처리하기 위한 최대 허용 재투영 오차(픽셀 단위)입니다. 이는 cv.findHomography의 ransacReprojThreshold 파라미터에 해당합니다. 값이 낮을수록 더 정밀한 매치가 필요하지만(더 엄격한 정렬) 노이즈가 있는 매치에서는 실패할 수 있습니다. 값이 높을수록 매칭 변동에 대한 허용 범위가 커지고(더 관대한 정렬) 세부 정보가 적은 이미지나 특징 매치가 완벽하지 않은 이미지의 결과를 개선할 수 있습니다. 기본값은 3픽셀입니다. 세부 정보가 적은 이미지이거나 기본 설정에서 스티칭이 실패할 때 이 값을 늘리십시오(예: 5-10)..

count_of_best_matches_per_query_descriptor

정수

키포인트 매칭 동안 각 쿼리 디스크립터에 대해 찾을 최상의 매치 수입니다. 이는 cv.BFMatcher.knnMatch의 k 파라미터에 해당합니다. 0보다 커야 합니다. 이 블록은 image2의 모든 디스크립터 중에서 image1의 각 키포인트 디스크립터에 대한 k개의 최근접 이웃 매치를 찾습니다. 그런 다음 Lowe의 비율 테스트를 사용하여 좋은 매치를 필터링합니다(최상의 매치 거리와 두 번째로 좋은 매치 거리 비교). 값이 높을수록 후보 매치가 많아지지만 계산량이 증가합니다. 기본값은 2입니다(디스크립터당 최상위 2개 매치 찾기). 일반적인 값 범위는 2~5입니다. 어려운 이미지에서 더 많은 매치 후보가 필요하면 더 높은 값을 사용하십시오..

참조 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 워크플로우 런타임입니다. 자세한 내용은 바인딩 을 참조하세요.

입력 및 출력 바인딩

사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 이미지 스티칭 버전 v1 을 가지고 있는지.

입력 및 출력 바인딩
  • 입력

    • image1 (이미지): 첫 번째 입력 이미지이며, 이어 붙일 대상입니다. image2와 겹치는 영역이 있어야 하며, SIFT 특징 감지를 위한 충분한 세부 정보/텍스처를 포함해야 합니다. 성공적인 스티칭을 위해서는 이미지에 겹치는 내용이 있어야 합니다. 이 블록은 스티칭 중 이 이미지를 image2에 상대적으로 배치하고 정렬하는 최적의 위치를 결정합니다. 풍부한 텍스처와 세부 정보를 가진 이미지가 SIFT 기반 특징 매칭에 가장 적합합니다..

    • image2 (이미지): 두 번째 입력 이미지이며, 이어 붙일 대상입니다. image1과 겹치는 영역이 있어야 하며, SIFT 특징 감지를 위한 충분한 세부 정보/텍스처를 포함해야 합니다. 성공적인 스티칭을 위해서는 이미지에 겹치는 내용이 있어야 합니다. 이 블록은 스티칭 중 이 이미지를 image1의 원근에 맞게 워핑하고 정렬합니다. 풍부한 텍스처와 세부 정보를 가진 이미지가 SIFT 기반 특징 매칭에 가장 적합합니다..

    • max_allowed_reprojection_error (0에서 1 사이의 실수): RANSAC 호모그래피 계산 중 점 쌍을 인라이어로 처리하기 위한 최대 허용 재투영 오차(픽셀 단위)입니다. 이는 cv.findHomography의 ransacReprojThreshold 파라미터에 해당합니다. 값이 낮을수록 더 정밀한 매치가 필요하지만(더 엄격한 정렬) 노이즈가 있는 매치에서는 실패할 수 있습니다. 값이 높을수록 매칭 변동에 대한 허용 범위가 커지고(더 관대한 정렬) 세부 정보가 적은 이미지나 특징 매치가 완벽하지 않은 이미지의 결과를 개선할 수 있습니다. 기본값은 3픽셀입니다. 세부 정보가 적은 이미지이거나 기본 설정에서 스티칭이 실패할 때 이 값을 늘리십시오(예: 5-10)..

    • count_of_best_matches_per_query_descriptor (정수): 키포인트 매칭 동안 각 쿼리 디스크립터에 대해 찾을 최상의 매치 수입니다. 이는 cv.BFMatcher.knnMatch의 k 파라미터에 해당합니다. 0보다 커야 합니다. 이 블록은 image2의 모든 디스크립터 중에서 image1의 각 키포인트 디스크립터에 대한 k개의 최근접 이웃 매치를 찾습니다. 그런 다음 Lowe의 비율 테스트를 사용하여 좋은 매치를 필터링합니다(최상의 매치 거리와 두 번째로 좋은 매치 거리 비교). 값이 높을수록 후보 매치가 많아지지만 계산량이 증가합니다. 기본값은 2입니다(디스크립터당 최상위 2개 매치 찾기). 일반적인 값 범위는 2~5입니다. 어려운 이미지에서 더 많은 매치 후보가 필요하면 더 높은 값을 사용하십시오..

  • 출력

    • stitched_image (이미지): 워크플로의 이미지입니다.

예시 JSON 정의

마지막 업데이트

도움이 되었나요?