가장자리 기준 자동 회전
이미지의 주요 직선 가장자리가 수직 및/또는 수평이 되도록 자동으로 회전합니다.
이미지의 주된 직선 가장자리(예: 문서, 패키지, 패널 또는 선반의 측면)가 세로축, 가로축, 또는 둘 중 더 가까운 쪽에 가장 잘 맞도록 회전 각도를 찾아 이미지의 기울기를 자동으로 보정한 다음, 전체 해상도 이미지를 그 각도만큼 자동으로 확장된 캔버스에 회전하여 아무것도 잘리지 않도록 합니다.
이 블록의 작동 방식
이 블록은 이미지의 주된 그라디언트 방향에서 회전 각도를 추정한 다음, 그 회전을 이미지에 적용합니다. 이 블록은:
이미지를 그레이스케일로 변환합니다(컬러 이미지는 다음으로 변환됨
BGR2GRAY)작업용 복사본의 가장 긴 변이 최대
internal_resolution픽셀이 되도록 축소합니다(기본값 1000, 속도 향상용; 검출된 각도는 크기 불변이며 나중에 전체 해상도 원본에 적용됨)평평하거나 저텍스처 이미지(픽셀 표준편차가 매우 낮음)를 확인하고, 발견되면 처리를 건너뛰고
angle = 0.0CLAHE로 로컬 대비를 향상하고 가우시안 블러를 약하게 적용해 노이즈 민감도를 줄여, 후보 각도 점수 계산에만 사용되는 float32 이미지를 만듭니다.
Sobel 그라디언트를 한 번 계산하고 그라디언트 방향의 크기 가중 히스토그램을 만듭니다(180도를 기준으로 모듈로): 주된 선들의 그라디언트는 선 자체에 수직으로 향하므로, 세로선은 히스토그램을 0도 주변에, 가로선은 90도 주변에 집중시킵니다
구분이 잘 안 되는 히스토그램(명확한 지배 방향이 없음)을 제외하고 이미지를 변경 없이 반환합니다
주변 방향들에 대해 두 배 각도 가중 원형 평균을 사용해 히스토그램의 지배 모드를 세부적으로 보정하여 1도 미만 정밀도를 얻고, 보정을
(-90, 90]도 단위로세로/가로또는(-45, 45]도 단위로either최종 각도의 절대값이
skip_below_degrees보다 작으면, 이미지 변경 없이angle = 0.0을 반환합니다(이미 충분히 곧은 이미지에 대한 불필요한 재인코딩/리샘플링을 방지). 마찬가지로, 최종 각도의 절대값이max_correction_degrees보다 크면, 이미지 변경 없이angle = 0.0- 허용 가능한 기울기 범위를 벗어나는 보정은 보통 검색이 관심 있는 선이 아니라 다른 지배 구조(예: 긴 물체 실루엣)에 맞춰졌음을 의미합니다그렇지 않으면 전체 해상도 원본 이미지를 중심을 기준으로 최종 각도만큼 회전하고, 회전된 전체 이미지가 보존되도록 출력 캔버스를 자동으로 확장합니다(
roboflow_core/image_preprocessing@v1의 회전 작업과 동일하게 캔버스 확장 동작을 맞춤)
이 블록은 기울기 보정된 이미지(확장된 캔버스 포함)와 적용된 회전 각도를 도 단위로 모두 출력합니다. 각도는 OpenCV의 규칙을 따릅니다: 양수 각도는 반시계 방향 회전입니다.
일반적인 사용 사례
문서 및 라벨 스캔: OCR 또는 후속 검출 전에 촬영된 문서, 라벨 또는 포장재를 바로잡아 텍스트 및 바코드 판독 정확도를 향상
고정 카메라 검사: 고정 위치 산업용 카메라의 장착으로 인한 작은 기울기를 보정하여 후속 측정 블록(예: 크기 또는 거리 측정)이 축 정렬된 이미지에서 동작하도록 합니다
컨베이어 및 선반 정렬: 가장자리가 세로 또는 가로여야 하는 컨베이어, 선반 또는 패널 이미지의 정렬을 맞춰, 후속 선/에지 기반 분석의 신뢰성을 높입니다
검출 모델용 전처리: 회전에 민감한 객체 검출 또는 분류 모델을 실행하기 전에 입력 이미지를 바로잡습니다
다른 블록에 연결하기
이 블록은 이미지를 받아 기울기 보정된 이미지와 적용된 각도를 생성합니다:
검출 또는 분류 모델 이전에 추론 전에 이미지를 바로잡아, 기울어진 원본 이미지에서도 더 신뢰할 수 있는 모델 출력을 가능하게 합니다
측정 블록 이전 (예: 거리 또는 크기 측정) 축 정렬된 장면을 가정하는
다운스트림 좌표 매핑과 함께 -
각도출력(원본 이미지의 크기와 함께)은 적용된 변환을 완전히 결정하므로, 회전된 이미지에서 수행된 검출은build_auto_rotate_matrix
유형 식별자
단계에서 다음 식별자를 사용하세요 "type" 필드: roboflow_core/auto_rotate_on_edges@v1 워크플로우에 이 블록을 단계로 추가하려면.
속성
이름
유형
설명
참조
name
str
이 단계에 대한 고유 식별자를 입력하세요..
❌
target_orientation
str
이미지의 주된 직선이 어떤 가장자리 방향에 맞춰져야 하는지입니다. 'vertical'은 주된 선이 세로가 되도록 하는 회전을 찾고, 'horizontal'은 주된 선이 가로가 되도록 하는 회전을 찾으며, 'either'는 둘 중 더 가까운 쪽에 맞춥니다(검색은 가장 가까운 직각을 중심으로 +/-45도 범위로 제한됨)..
✅
skip_below_degrees
float
검출된 보정 각도의 절대값이 이 임계값(도 단위)보다 작으면, 블록은 입력 이미지를 변경 없이 반환합니다(동일 통과) with angle = 0.0불필요한 재인코딩/리샘플링을 방지합니다..
✅
max_correction_degrees
float
찾아낸 최적 보정 각도가 이 상한을 초과하면(절대 도 단위), 블록은 입력 이미지를 변경 없이 반환합니다(동일 통과) with angle = 0.0. 이는 이미지의 허용 가능한 기울기 범위가 알려져 있을 때(예: 부품이 축에서 최대 약 40도 정도만 벗어나 촬영되는 경우) 설정하며, 이미지의 다른 지배 구조(예: 관심 있는 선 대신 긴 물체 실루엣)가 지나치고 잘못된 회전을 유발하지 못하게 합니다. 기본값 90.0은 이 상한을 비활성화합니다..
✅
internal_resolution
정수
회전 각도 검색은 가장 긴 변이 최대 이 픽셀 수가 되도록 축소된 작업용 복사본에서 실행되며, 전체 해상도 이미지는 최종 회전에만 사용됩니다. 낮은 값은 검색을 더 빠르게 만들지만 매우 얇은 선을 흐리게 할 수 있고, 높은 값은 검색 시간 증가를 대가로 미세한 선의 디테일을 보존합니다..
✅
이 참조 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 워크플로우 런타임입니다. 자세한 내용은 바인딩 을 참조하세요.
입력 및 출력 바인딩
사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 가장자리에 따라 자동 회전 버전 v1 을 가지고 있는지.
입력 및 출력 바인딩
입력
이미지(이미지): 기울기를 보정할 입력 이미지(컬러 또는 그레이스케일). 컬러 이미지는 각도 검출을 위해 자동으로 그레이스케일로 변환되며, 검출된 회전 각도는 전체 해상도 원본 이미지에 적용됩니다. 출력에는 회전된 이미지(자동으로 확장된 캔버스 포함)와 적용된각도도 단위의 각도..target_orientation(string): 이미지의 주된 직선이 어떤 가장자리 방향에 맞춰져야 하는지입니다. 'vertical'은 주된 선이 세로가 되도록 하는 회전을 찾고, 'horizontal'은 주된 선이 가로가 되도록 하는 회전을 찾으며, 'either'는 둘 중 더 가까운 쪽에 맞춥니다(검색은 가장 가까운 직각을 중심으로 +/-45도 범위로 제한됨)..skip_below_degrees(float): 검출된 보정 각도의 절대값이 이 임계값(도 단위)보다 작으면, 블록은 입력 이미지를 변경 없이 반환합니다(동일 통과) withangle = 0.0불필요한 재인코딩/리샘플링을 방지합니다..max_correction_degrees(float): 찾아낸 최적 보정 각도가 이 상한을 초과하면(절대 도 단위), 블록은 입력 이미지를 변경 없이 반환합니다(동일 통과) withangle = 0.0. 이는 이미지의 허용 가능한 기울기 범위가 알려져 있을 때(예: 부품이 축에서 최대 약 40도 정도만 벗어나 촬영되는 경우) 설정하며, 이미지의 다른 지배 구조(예: 관심 있는 선 대신 긴 물체 실루엣)가 지나치고 잘못된 회전을 유발하지 못하게 합니다. 기본값 90.0은 이 상한을 비활성화합니다..internal_resolution(정수): 회전 각도 검색은 가장 긴 변이 최대 이 픽셀 수가 되도록 축소된 작업용 복사본에서 실행되며, 전체 해상도 이미지는 최종 회전에만 사용됩니다. 낮은 값은 검색을 더 빠르게 만들지만 매우 얇은 선을 흐리게 할 수 있고, 높은 값은 검색 시간 증가를 대가로 미세한 선의 디테일을 보존합니다..
마지막 업데이트
도움이 되었나요?