동적 영역
다각형을 기하학적으로 볼록하게 만들고 요청한 개수의 꼭짓점만 포함하도록 단순화합니다.
마스크를 등고선으로 변환하고, 볼록 껍질을 계산하며, Douglas-Peucker 근사로 폴리곤 꼭짓점을 지정된 개수로 줄이고, 필요에 따라 최소제곱 에지 피팅을 적용한 뒤, 폴리곤을 스케일링하여 검출된 객체 형태를 기반으로 기하학적 영역을 생성함으로써, 영역 기반 분석, 공간 필터링, 관심 영역 정의 워크플로에 사용할 수 있는 단순화된 폴리곤 영역을 생성합니다.
이 블록의 작동 방식
이 블록은 복잡한 마스크 형태를 지정된 꼭짓점 수를 가진 기하학적으로 볼록한 폴리곤으로 변환하여 instance segmentation 검출로부터 단순화된 폴리곤 영역을 생성합니다. 이 블록은:
검출된 객체에 대한 마스크(폴리곤 표현)를 포함한 instance segmentation 예측을 받습니다
마스크를 등고선으로 변환:
마스크-폴리곤 변환을 사용해 각 검출 마스크에서 등고선을 추출합니다
각 검출에서 가장 큰 등고선을 선택합니다(마스크당 여러 등고선을 처리)
볼록 껍질 계산:
OpenCV의 볼록 껍질 알고리즘을 사용해 가장 큰 등고선의 볼록 껍질을 계산합니다
결과 폴리곤이 기하학적으로 볼록하도록 보장합니다(안쪽을 향하는 각이 없음)
등고선의 모든 점을 포함하는 단순화된 외곽 경계를 생성합니다
폴리곤을 필요한 꼭짓점 수로 단순화:
Douglas-Peucker 폴리곤 근사 알고리즘을 사용해 꼭짓점 수를 줄입니다
반복적으로 epsilon 매개변수를 조정하여 목표 꼭짓점 수를 달성합니다
요청된 꼭짓점 수를 생성하는 최적의 epsilon 값을 찾기 위해 이진 탐색을 사용합니다
수렴 처리: 정확한 꼭짓점 수를 달성할 수 없으면 꼭짓점을 채우거나 잘라냅니다
필요에 따라 최소제곱 에지 피팅을 적용합니다:
만약
apply_least_squares가 활성화되면 원래 등고선 점에 선을 맞춰 폴리곤 가장자리를 정제합니다폴리곤 꼭짓점 사이의 등고선 점을 선택합니다
필요에 따라 중간점 비율로 필터링합니다(예: 각 에지의 중앙 부분만 사용하여 에지 효과를 피함)
각 에지에 대해 선택된 등고선 점에 최소제곱 직선을 맞춥니다
정제된 꼭짓점 위치를 만들기 위해 맞춰진 직선의 교점을 계산합니다
원래 등고선 형태와 더 잘 맞는 폴리곤을 생성합니다
폴리곤 스케일링(만약
scale_ratio!= 1):폴리곤 중심점(질량 중심)을 계산합니다
지정된 스케일 비율에 따라 중심점을 기준으로 폴리곤을 스케일링합니다
중심에서 바깥쪽으로 폴리곤을 확장하거나 축소합니다(scale > 1은 확장, scale < 1은 축소)
버퍼 영역을 만들거나 영역 경계를 조정하는 데 유용합니다
단순화된 폴리곤으로 검출 결과를 업데이트합니다:
검출 메타데이터의 polygon 키 아래에 단순화된 폴리곤을 저장합니다
업데이트된 검출 표현을 위해 단순화된 폴리곤에서 마스크를 다시 생성합니다
단순화된 영역과 업데이트된 검출 결과를 반환합니다:
zones: 좌표 목록 형태의 단순화된 폴리곤 목록(검출당 하나)예측: 단순화된 폴리곤과 마스크가 포함된 업데이트된 검출 결과simplification_converged: 모든 폴리곤이 정확한 꼭짓점 수로 수렴했는지를 나타내는 불리언 값
이 블록은 세그멘테이션 모델이 검출한 복잡한 객체 형태로부터 기하학적 영역을 생성할 수 있게 합니다. 특히 생성된 영역이 객체의 윤곽과 일치하되 성능과 사용 편의성을 위해 단순화되어야 하는 경우, 예를 들어 농구 코트, 도로 구간, 주차장, 필드 같은 검출된 객체 형태를 기반으로 영역을 만들어야 할 때 매우 유용합니다.
일반적인 사용 사례
검출에서 영역 생성: 검출된 객체 형태를 기반으로 폴리곤 영역을 생성합니다(예: 코트 검출로부터 농구 코트 영역 생성, 도로 검출로부터 도로 구간 영역 생성, 스포츠 필드 검출로부터 필드 영역 생성), 검출 기반 영역 워크플로를 지원합니다
기하학적 영역 단순화: 복잡한 객체 형태를 제어된 꼭짓점 수를 가진 기하학적으로 볼록한 폴리곤으로 단순화합니다(예: 불규칙한 형태를 직사각형/사각형으로 단순화, 복잡한 폴리곤을 관리 가능한 꼭짓점 수로 축소, 마스크에서 기하학적 영역 생성), 영역 단순화 워크플로를 지원합니다
동적 영역 정의: 이미지에서 검출된 객체를 기반으로 영역을 동적으로 정의합니다(예: 검출된 영역에서 영역 정의, 객체 형태에서 영역 생성, segmentation 결과에서 영역 생성), 동적 영역 워크플로를 지원합니다
영역 기반 분석 설정: 영역 기반 분석 및 필터링을 위한 영역을 준비합니다(예: time-in-zone 분석을 위한 영역 준비, 영역 기반 필터링을 위한 영역 생성, 공간 분석을 위한 영역 설정), 영역 기반 분석 워크플로를 지원합니다
관심 영역 정의: 검출된 객체 경계를 기반으로 관심 영역을 정의합니다(예: 객체 검출로부터 ROI 정의, segmentation에서 ROI 영역 생성, 마스크에서 관심 영역 생성), ROI 정의 워크플로를 지원합니다
공간 필터링 및 분석: 공간 필터링 및 분석 작업을 위한 영역을 생성합니다(예: 공간 필터링을 위한 영역 생성, 면적 계산을 위한 영역 준비, 공간 질의를 위한 영역 생성), 공간 분석 워크플로를 지원합니다
다른 블록에 연결하기
이 블록은 instance segmentation 예측을 받아 단순화된 폴리곤 영역을 생성합니다:
instance segmentation 모델 이후 : 검출된 객체 형태에서 영역을 생성합니다(예: segmentation 모델을 영역으로, 마스크를 단순화된 폴리곤으로, 검출을 기하학적 영역으로 변환), segmentation-to-zone 워크플로를 지원합니다
검출 필터링 블록 이후 : 필터링된 검출에서 영역을 생성합니다(예: 검출을 필터링한 후 영역 생성, 특정 클래스에서 영역 생성, 필터링 결과에서 영역 생성), filter-to-zone 워크플로를 지원합니다
영역 기반 분석 블록 전에 : 분석을 위한 단순화된 영역을 제공합니다(예: time-in-zone용 영역, 영역 분석용 영역, 영역 필터링용 폴리곤), zone-to-analytics 워크플로를 지원합니다
시각화 블록 이전 단순화된 영역을 표시합니다(예: 영역 폴리곤 시각화, 기하학적 영역 표시, 단순화된 영역 표시), 영역 시각화 워크플로를 지원합니다
공간 필터링 블록 전에 : 공간 작업을 위한 영역을 제공합니다(예: 겹침 필터링용 영역, 공간 질의용 폴리곤, 면적 계산용 영역), zone-to-filter 워크플로를 지원합니다
워크플로 출력에서 : 단순화된 영역을 최종 출력으로 제공합니다(예: 영역 생성 워크플로, 폴리곤 추출 워크플로, 기하학적 영역 출력), 영역 출력 워크플로를 지원합니다
요구 사항
이 블록은 마스크(폴리곤 데이터)가 포함된 instance segmentation 예측을 필요로 합니다. 입력 검출은 처리 전에 원하는 관심 클래스만 포함하도록 필터링해야 합니다. 해당 required_number_of_vertices 매개변수는 단순화된 폴리곤의 목표 꼭짓점 수를 지정합니다(예: 직사각형/사각형은 4, 삼각형은 3). 이 블록은 반복적 이진 탐색을 사용하는 Douglas-Peucker 근사로 목표 꼭짓점 수를 달성하며, 최대 1000회 반복합니다. 정확한 꼭짓점 수로 수렴하지 못하면 꼭짓점을 채우거나 잘라 수에 맞춥니다. 이 scale_ratio 매개변수(기본값 1)는 중심점을 기준으로 폴리곤을 스케일링합니다. 이 apply_least_squares 매개변수(기본값 False)는 폴리곤 가장자리를 원래 등고선과 더 잘 맞추기 위해 에지 피팅을 활성화합니다. 이 midpoint_fraction 매개변수(0-1, 기본값 1)는 최소제곱 맞춤에 사용할 등고선 점의 범위를 제어합니다(1 = 모든 점, 더 낮은 값은 각 에지의 중앙 부분만 사용). 이 블록은 단순화된 폴리곤을 좌표 쌍 목록, 단순화된 폴리곤이 포함된 업데이트된 검출 결과, 그리고 수렴 플래그로 출력합니다.
유형 식별자
단계에서 다음 식별자를 사용하세요 "type" 필드: roboflow_core/dynamic_zone@v1 워크플로우에 이 블록을 단계로 추가하려면.
속성
이름
유형
설명
참조
name
str
이 단계에 대한 고유 식별자를 입력하세요..
❌
required_number_of_vertices
정수
단순화된 폴리곤의 목표 꼭짓점 수입니다. 이 블록은 Douglas-Peucker 폴리곤 근사와 반복적 이진 탐색을 사용해 폴리곤 꼭짓점을 이 수로 줄입니다. 일반적인 값: 직사각형/사각형은 4, 삼각형은 3, 더 복잡한 형태는 6 이상. 알고리즘은 이 정확한 수로 수렴을 시도하며, 수렴에 실패하면(반복 횟수 제한 내에서) 꼭짓점을 채우거나 잘라서 수에 맞춥니다..
✅
scale_ratio
float
결과 폴리곤을 중심점을 기준으로 확장하거나 축소하는 스케일 계수입니다. 값이 1보다 크면 폴리곤을 중심에서 바깥쪽으로 확장하고(버퍼 영역 생성), 1보다 작으면 안쪽으로 축소합니다. 값이 1(기본값)이면 스케일링이 없습니다. 스케일링은 폴리곤 단순화 후에 적용됩니다. 버퍼 영역을 만들거나 영역 경계를 조정하는 데 유용합니다..
✅
apply_least_squares
bool
참이면, 원래 등고선 점에 맞춰 폴리곤 가장자리를 정제하기 위해 최소제곱 직선 맞춤을 적용합니다. 단순화된 폴리곤의 각 에지에 대해 꼭짓점 사이의 등고선 점에 선을 맞춘 다음, 맞춰진 선의 교점을 계산해 정제된 꼭짓점 위치를 만듭니다. 특히 단순화된 폴리곤 꼭짓점이 등고선 에지와 잘 맞지 않을 때 원래 등고선 형태를 더 잘 반영하는 폴리곤을 생성합니다..
✅
midpoint_fraction
float
각 에지의 최소제곱 맞춤에 사용할 등고선 점의 비율(0-1)입니다. 값이 1(기본값)이면 꼭짓점 사이의 모든 등고선 점을 사용합니다. 더 낮은 값은 각 에지의 중앙 부분만 사용합니다(예: 0.9는 점의 90%를 중앙 정렬로 사용). 볼록 폴리곤 꼭짓점이 에지와 잘 맞지 않을 때 유용하며, 꼭짓점 근처의 에지 효과보다 에지의 중앙 부분에 맞춤을 집중합니다. apply_least_squares가 True일 때만 적용됩니다..
✅
이 참조 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 워크플로우 런타임입니다. 자세한 내용은 바인딩 을 참조하세요.
입력 및 출력 바인딩
사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 동적 영역 버전 v1 을 가지고 있는지.
입력 및 출력 바인딩
입력
예측(instance_segmentation_prediction): 검출된 객체에 대한 마스크(폴리곤 데이터)를 포함한 instance segmentation 예측입니다. 검출 결과는 원하는 관심 클래스만 포함하도록 필터링해야 합니다. 각 검출의 마스크는 등고선으로 변환되며, 가장 큰 등고선이 단순화된 폴리곤 영역을 생성하는 데 사용됩니다. 마스크 데이터를 포함한 instance segmentation 형식을 지원합니다..required_number_of_vertices(정수): 단순화된 폴리곤의 목표 꼭짓점 수입니다. 이 블록은 Douglas-Peucker 폴리곤 근사와 반복적 이진 탐색을 사용해 폴리곤 꼭짓점을 이 수로 줄입니다. 일반적인 값: 직사각형/사각형은 4, 삼각형은 3, 더 복잡한 형태는 6 이상. 알고리즘은 이 정확한 수로 수렴을 시도하며, 수렴에 실패하면(반복 횟수 제한 내에서) 꼭짓점을 채우거나 잘라서 수에 맞춥니다..scale_ratio(float): 결과 폴리곤을 중심점을 기준으로 확장하거나 축소하는 스케일 계수입니다. 값이 1보다 크면 폴리곤을 중심에서 바깥쪽으로 확장하고(버퍼 영역 생성), 1보다 작으면 안쪽으로 축소합니다. 값이 1(기본값)이면 스케일링이 없습니다. 스케일링은 폴리곤 단순화 후에 적용됩니다. 버퍼 영역을 만들거나 영역 경계를 조정하는 데 유용합니다..apply_least_squares(boolean): 참이면, 원래 등고선 점에 맞춰 폴리곤 가장자리를 정제하기 위해 최소제곱 직선 맞춤을 적용합니다. 단순화된 폴리곤의 각 에지에 대해 꼭짓점 사이의 등고선 점에 선을 맞춘 다음, 맞춰진 선의 교점을 계산해 정제된 꼭짓점 위치를 만듭니다. 특히 단순화된 폴리곤 꼭짓점이 등고선 에지와 잘 맞지 않을 때 원래 등고선 형태를 더 잘 반영하는 폴리곤을 생성합니다..midpoint_fraction(0에서 1 사이의 실수): 각 에지의 최소제곱 맞춤에 사용할 등고선 점의 비율(0-1)입니다. 값이 1(기본값)이면 꼭짓점 사이의 모든 등고선 점을 사용합니다. 더 낮은 값은 각 에지의 중앙 부분만 사용합니다(예: 0.9는 점의 90%를 중앙 정렬로 사용). 볼록 폴리곤 꼭짓점이 에지와 잘 맞지 않을 때 유용하며, 꼭짓점 근처의 에지 효과보다 에지의 중앙 부분에 맞춤을 집중합니다. apply_least_squares가 True일 때만 적용됩니다..
출력
zones(list_of_values): 모든 유형의 값 목록.예측(instance_segmentation_prediction): 감지된 바운딩 박스와 sv.Detections(...) 객체 형식의 세분화 마스크가 포함된 예측.simplification_converged(boolean): 불리언 플래그.
마지막 업데이트
도움이 되었나요?