eho69 commited on
Commit
8b52e4e
Β·
verified Β·
1 Parent(s): 6facc94
Files changed (1) hide show
  1. app.py +28 -5
app.py CHANGED
@@ -250,7 +250,6 @@
250
  # if __name__ == "__main__":
251
  # demo.launch()
252
 
253
-
254
  import gradio as gr
255
  import cv2
256
  import numpy as np
@@ -425,6 +424,24 @@ class EnginePartDetector:
425
 
426
  return vis_img, cropped_img, stats_text
427
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428
  # ── Internal Helpers ──────────────────────────────────────────────────────
429
 
430
  @staticmethod
@@ -449,11 +466,14 @@ class EnginePartDetector:
449
  if "❌" in log or "⚠️" in log:
450
  return log, None
451
 
 
 
 
452
  # Layer 2
453
- features = self.feature_extractor.extract(roi)
454
  self.templates[part_name] = {
455
  "features": features,
456
- "roi": roi
457
  }
458
  self._persist_templates()
459
 
@@ -474,8 +494,11 @@ class EnginePartDetector:
474
  if "❌" in log or "⚠️" in log:
475
  return log, None, vis, None
476
 
 
 
 
477
  # Layer 2
478
- query_feat = self.feature_extractor.extract(roi)
479
 
480
  # Matching logic
481
  scores = []
@@ -504,7 +527,7 @@ class EnginePartDetector:
504
  lines.append(f" β€’ `{name}`: {sim:.3f}")
505
 
506
  label_dict = {name: float(sim) for name, sim in scores[:5]}
507
- return "\n".join(lines), label_dict, vis, roi
508
 
509
  def get_template_roi(self, part_name: str) -> np.ndarray | None:
510
  if part_name in self.templates:
 
250
  # if __name__ == "__main__":
251
  # demo.launch()
252
 
 
253
  import gradio as gr
254
  import cv2
255
  import numpy as np
 
424
 
425
  return vis_img, cropped_img, stats_text
426
 
427
+ @staticmethod
428
+ def enhance_roi(roi: np.ndarray) -> np.ndarray:
429
+ """Apply high-contrast CLAHE to highlight blurred lines/features."""
430
+ if roi is None or roi.size == 0:
431
+ return roi
432
+
433
+ # Convert to LAB space to apply CLAHE on L (luminance) channel
434
+ lab = cv2.cvtColor(roi, cv2.COLOR_RGB2LAB)
435
+ l, a, b = cv2.split(lab)
436
+
437
+ # ClipLimit 10.0 provides very high contrast as requested
438
+ clahe = cv2.createCLAHE(clipLimit=10.0, tileGridSize=(8, 8))
439
+ cl = clahe.apply(l)
440
+
441
+ merged = cv2.merge((cl, a, b))
442
+ enhanced = cv2.cvtColor(merged, cv2.COLOR_LAB2RGB)
443
+ return enhanced
444
+
445
  # ── Internal Helpers ──────────────────────────────────────────────────────
446
 
447
  @staticmethod
 
466
  if "❌" in log or "⚠️" in log:
467
  return log, None
468
 
469
+ # Enhance ROI for better feature matching
470
+ roi_enhanced = self.enhance_roi(roi)
471
+
472
  # Layer 2
473
+ features = self.feature_extractor.extract(roi_enhanced)
474
  self.templates[part_name] = {
475
  "features": features,
476
+ "roi": roi_enhanced
477
  }
478
  self._persist_templates()
479
 
 
494
  if "❌" in log or "⚠️" in log:
495
  return log, None, vis, None
496
 
497
+ # Enhance ROI for better feature matching
498
+ roi_enhanced = self.enhance_roi(roi)
499
+
500
  # Layer 2
501
+ query_feat = self.feature_extractor.extract(roi_enhanced)
502
 
503
  # Matching logic
504
  scores = []
 
527
  lines.append(f" β€’ `{name}`: {sim:.3f}")
528
 
529
  label_dict = {name: float(sim) for name, sim in scores[:5]}
530
+ return "\n".join(lines), label_dict, vis, roi_enhanced
531
 
532
  def get_template_roi(self, part_name: str) -> np.ndarray | None:
533
  if part_name in self.templates: