r2_smallest_circle — 2D region op

• 데이터 종류: region → region

• 호출: fullseye.apply(img, "r2_smallest_circle", a=0.5, b=0.5)(2-D 는 이미지 1 장 + 스칼라 노브 2 개 a,b∈[0,1] 모델)

• HALCON 대응: smallest_circle(의미·매개변수는 HALCON 레퍼런스가 참고가 됩니다)

r2_smallest_circle: input → output

*그림은 128×128 합성 입력에서 실제로 실행한 출력. 왼쪽이 입력, 오른쪽이 출력. 점군은 위에서 본 산점도(밝기 = z), 1-D 열은 꺾은선, 볼륨은 z 방향 최대값 투영, 동영상은 가운데 프레임, 복소 영상은 진폭이며, 그림이 되지 않는 반환값은 값 자체를 표시한다.*

노브 a 를 훑기(0.1 / 0.5 / 0.9, 다른 노브는 기본값):

▸ r2_smallest_circle: 노브 a 스윕 (문서 사이트)

*노브 b 는 출력을 바꾸지 않는다(실측: 0.1 / 0.5 / 0.9에서 동일).*

단계(앞에 오는 op → 이 op, 왼쪽에서 오른쪽으로):

▸ r2_smallest_circle: 단계 (문서 사이트)

다른 영상에서도(합성 장면 / 사진 / 동전. 윗줄이 입력, 아랫줄이 그 출력. 노브는 기본값):

▸ r2_smallest_circle: 다른 입력 이미지 (문서 사이트)

사용법

최소 포함원을 마스크로(Welzl). a 는 반지름을 부풀립니다(>=0).

영역의 모든 전경 화소(화소 중심)를 포함하는 최소 포함원을 마스크로 그린다. 전경 좌표를볼록 껍질(Andrew의 단조 체인, 방향 판정은 predicates.orient2d의 견고판)로 줄인뒤 Welzl의 재귀 알고리즘으로 엄밀한 최소원 (cy, cx, r)를 구한다. 볼록 껍질꼭짓점의 순서는 numpy.random.default_rng(0)으로 고정 셔플하므로 결과는결정적.

그리는 반경은 r_draw = (r + 0.75) * (1 + 0.4*a). a=0에서도 0.75 화소여분으로 부풀린다(화소 중심 기반의 r로는 가장자리 화소가 빠지므로, 모든 전경화소를 확실히 포함하는 설계). a=1에서 1.4배. a는 [0,1]로 clip. b는사용하지 않는다. 반환값은 입력과 같은 형태의 float64 0/1 마스크, 전경이 없으면 전부 0.

주의: 출력은 항상 입력 영역을 포함하며, a를 올려도 줄어드는 방향으로는 움직이지 않는다. 여러연결 성분이 있으면 전체를 둘러싸는 1개의 원. 전경이 1 화소이면 r=0으로 반경 0.75 의 원판(1 화소)이 된다. Welzl의 재귀는 볼록 껍질 꼭짓점 수만큼 깊어진다. 원의 중심이나반경의 수치는 반환하지 않는다. 내접원 r2_inner_circle과의 반경비가 진원도의 대략적인지표가 되며, 방향을 갖는 외접형은 r2_smallest_rectangle2.

가장자리 처리: 이미지 바깥은 배경(0)으로 간주한다(실측. tools/impl2/border_probe.py).

자세한 사용 가이드

• gallery2d_region 패밀리 가이드

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

Studio에서 시도하기

아래 프로그램은 실제로 실행됨을 확인했습니다(그림과 같은 입력). Studio 도움말에서는 이 블록이 버튼이 되어 즉시 불러와 실행할 수 있습니다.

threshold 0.50 0.50
r2_smallest_circle 0.50 0.50

▸ 이 파이프라인 불러오기  ·  불러와서 실행

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• gallery2d_region — py -3.11 examples/gallery2d_region.py

타입이 이어지는 다음 연산자(region 를 입력으로 받는 것)

identity · reg_erode · reg_dilate · reg_open · reg_close · fill_holes · select_largest · remove_small

같은 카테고리(region)

reg_erode · reg_dilate · reg_open · reg_close · fill_holes · select_largest · remove_small · invert_region


*Provenance: ops.py — 2D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.