feat: PM2D standalone shape-based matcher

Programma standalone Pattern Matching 2D con GUI cv2/tk + algoritmo
puro riusabile. Due backend:

- LineShapeMatcher (default): porting Python di line2Dup (linemod-style)
  - Gradient orientation quantized 8-bin modulo π + spreading
  - Feature sparse top-magnitude con spacing minimo
  - Score via shift-add vettorizzato numpy (O(N_features·H·W))
  - Piramide multi-risoluzione con pruning varianti al top-level
  - Supporto mask binaria per modello non-rettangolare

- EdgeShapeMatcher (fallback): Canny + matchTemplate multi-rotazione

GUI separata da algoritmo. Benchmark clip.png (13 istanze):
  - Edge backend:  84s, 6/13 score ~0.3
  - Line backend:  4.1s, 13/13 score 0.98-1.00

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 00:46:59 +02:00
commit b9a4d51fac
14 changed files with 2499 additions and 0 deletions
+7
View File
@@ -0,0 +1,7 @@
from pm2d.matcher import EdgeShapeMatcher, Match, Template
from pm2d.line_matcher import LineShapeMatcher, Match as LineMatch
__all__ = [
"EdgeShapeMatcher", "Match", "Template",
"LineShapeMatcher", "LineMatch",
]