blob_boundaries — BLOB extract op

• 데이터 종류: labels2d → mask

• 호출: import fullseye as fs; fs.ledger.blob_boundaries(labels: 'Any') -> 'np.ndarray'(구현을 직접 호출하려면 import blob2d; blob2d.blob_boundaries(labels: 'Any') -> 'np.ndarray', 원장에서 가져오려면 opsblob.get("blob_boundaries"))

사용법

물체의 윤곽(1픽셀 폭, bool). 이웃한 물체 사이의 경계도 남는다.

안쪽 가장자리(자신과 다른 라벨에 인접한 전경 화소)를 취하므로, 윤곽은 반드시물체의 내부에 있다 —— 바깥쪽을 취하면 이웃 물체의 화소를 윤곽이라고 말하는 셈이 된다.

절차: 3x3(8 근방)의 그레이 침식 lo 와 팽창 hi 를 라벨 영상에 걸고, (labels > 0) & ((lo != labels) | (hi != labels)). "근방에 자신과 다른 번호(배경 0 포함)가 있는 전경 화소" = 안쪽 1 화소 폭의 가장자리. 침식만으로는 번호가작은 물체 쪽의 경계가 사라지므로, 팽창도 보아 대칭으로 해 두었다.

• labels: 2-D 정수 라벨 영상(blob_label 의 출력). bool / float / 음의번호는 ValueError(blob_region 과 같은 계약).

• 반환값: (H, W) 의 bool. 모든 물체의 가장자리가 1 장에 겹친다(물체별로 나누고 싶으면 blob_region 으로 뽑은 뒤에 건다).

• 영상 가장자리에 닿는 물체는, scipy 의 기본값(반사 경계)이 영상 끝 바깥을 자신의 값으로간주하므로, 영상 끝을 따라가는 변은 가장자리로 나오지 않는다.

• 1 화소 폭의 가는 물체는 전 화소가 가장자리가 된다.

blob_features 의 둘레는 별도의 계수법으로 측정하고 있어, 이 가장자리의 화소 수와는 일치하지 않는다. 윤곽을 꺾은선으로 쓰려면 annotate_outline_layout 이 (x, y) 의 닫힌 다각형을 반환한다.

자세한 사용 가이드

• blob_analysis 패밀리 가이드

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

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

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

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

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

• poc_gear_tooth_metrology — py -3.11 examples/poc_gear_tooth_metrology.py

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

blob_label · blob_distance

같은 카테고리(extract)

blob_region · blob_overlay


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

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