feat: helper set_angle_range_around + angle_tolerance hint in auto_tune
LineShapeMatcher.set_angle_range_around(center, tol): restringe
angle_range a (center-tol, center+tol). Use case: feeder/posizionamento
meccanico noto a priori. Esempio:
m.set_angle_range_around(0, 20) # cerca solo in [-20, +20]
auto_tune accetta angle_tolerance_deg + angle_center_deg: emette
angle_min/angle_max ristretti se hint fornito. Cache key include
hint per non collidere con tune default.
Beneficio misurato: angle_step=5 deg, template 80x80
- range 360°: 72 varianti
- range ±15°: 6 varianti (12x meno = matching ~12x piu veloce)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -192,6 +192,26 @@ class LineShapeMatcher:
|
||||
np.array(picked_y, np.int32),
|
||||
np.array(picked_b, np.int8))
|
||||
|
||||
def set_angle_range_around(
|
||||
self, center_deg: float, tolerance_deg: float,
|
||||
) -> None:
|
||||
"""Restringe angle_range a (center - tol, center + tol).
|
||||
|
||||
Comodo helper per scenari in cui l'orientamento del pezzo e'
|
||||
noto a priori entro ±tolerance_deg (es. feeder vibrante con
|
||||
guida meccanica). Riduce drasticamente le varianti generate
|
||||
in train(): es. ±15° vs 360° = 24x meno varianti, training
|
||||
e matching molto piu veloci.
|
||||
|
||||
Esempio:
|
||||
m.set_angle_range_around(0, 20) # cerca solo in [-20, +20]
|
||||
m.train(template)
|
||||
"""
|
||||
self.angle_range_deg = (
|
||||
float(center_deg - tolerance_deg),
|
||||
float(center_deg + tolerance_deg),
|
||||
)
|
||||
|
||||
def _scale_list(self) -> list[float]:
|
||||
s0, s1 = self.scale_range
|
||||
if s0 >= s1 or self.scale_step <= 0:
|
||||
|
||||
Reference in New Issue
Block a user