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) 的封閉多邊形。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• 演算法的正典(作者、年份)與用途見上面的族使用指南。
• poc_gear_tooth_metrology — py -3.11 examples/poc_gear_tooth_metrology.py
mask 作為輸入)extract)*Provenance: blob2d.py — BLOB 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.