matching op• 資料種類:image → match
• 呼叫:fullseye.apply(img, "shape_locate", a=0.5, b=0.5)(2-D 的模型是一張圖 + 兩個純量旋鈕 a,b∈[0,1])
• HALCON 對應:find_shape_model(其含義與參數可參考 HALCON 手冊)
• GPU:無(僅 CPU 參考實作)

*圖為在 128×128 合成輸入上實際執行的輸出。左為輸入,右為輸出。點雲以俯視散點顯示(亮度 = z),一維序列為折線,體資料為沿 z 的最大值投影,影片為中間影格,複數影像為振幅;無法成像的回傳值直接顯示數值。*
*旋鈕 a 不改變輸出(實測: 0.1 / 0.5 / 0.9 相同)。*
*旋鈕 b 不改變輸出(實測: 0.1 / 0.5 / 0.9 相同)。*
考量旋轉的樣板匹配(基於形狀的匹配)。相當於 HALCON 的 find_shape_model(Find the best matches of a shape model in an image.)。
a、b 未使用——樣板與 _ncc_locate 一樣以 set_match_template 預先登錄。把樣板從 0°〜330° 以 30° 為步長旋轉,分別計算 _ncc_map(NCC),並以 [相關值, y, x, 角度] 回傳所有位置、所有角度中最佳的相關。由於角度步長較粗(30°),達不到 HALCON 的 find_shape_model 那樣連續的角度精度——用於大致的方向偵測(要指定步長並細化到步長以下,用 matching.shape_locate_fine)。未設定樣板時為 [0,0,0,0]。
旋轉樣板的四角不計入相關(★2026-11-09 op 檢查)。以 reshape=False 旋轉時四角來自樣板之外,因此用遮罩去掉這些像素,只用剩下的像素計算 Pearson 相關(matching._MaskedNCC)。以前把填 0 的四角也當作樣板的一部分計算相關,所以在背景不為 0 的影像上,即使角度正確得分也會結構性地偏低(背景 0.5、旋轉 30°:0.7794 → 修正後 0.981)。只搜尋旋轉後樣板的有效像素全部落在影像內的位置(角度 0 時與 ncc_locate 的 full-overlap 相同,得分在捨入誤差內一致)。含 NaN / inf 的影像拋出 FsValueError(在管線路徑 ops.RT / run_stages 中回傳 4 個元素的 [0,0,0,0] 並記錄到 fs.fallbacks())。
• gallery2d_contour_measure 族使用指南
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• 演算法的正典(作者、年份)與用途見上面的族使用指南。
下面的程式已確認可以執行(與圖相同的輸入)。在 Studio 說明中,此區塊會變成按鈕,可當場載入並執行。
shape_locate 0.50 0.50
• gallery2d_contour_measure — py -3.11 examples/gallery2d_contour_measure.py
• poc_template_tracking — py -3.11 examples/poc_template_tracking.py
match 作為輸入)matching)*Provenance: ops.py — 2D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.