Skip to content
Alberto Pasqualetto edited this page Nov 1, 2024 · 3 revisions

TODO Path

  • Input video (VideoReader(filename)... while read/>>)

  • Bordo campo

    • trovare lato lungo o corto (orientazione) (mask e trovare buche)
  • Bordo palle (data un'area in cui cercare) (hough circles o mask tavolo Detecting billiard balls with OpenCV - Stack Overflow; https://github.com/SamuelLBau/Pool-Shot-Tracking-using-FPGA/blob/master/Python-Code/poolBallDetection/houghCircleExample.py)

  • Distinzione piene/vuote/nera/bianca (eventualmente aiutandosi con frame prec/succ) varianza dei colori; percentuale di bianco

  • Bounding boxes (quadrato che inscrive la circonferenza)

  • Segmentation aree campo vs palle

  • Tracking

    1. vector di Tracker per ogni pallina
    2. eseguire “in parallelo” per per ogni pallina per ogni frame
    3. ritorna la bbox nella palla
    4. disegna traiettoria:
      • aggiorna bbox e bboxPrec in vec
      • chiama drawFrame2d(vec)
  • Prospettiva -> 2D top-view (geometric/affine transform)

    • prendere immagine schema 2d biliardo
    • trovare trasformazione tavolo
    • applicare trasformazione per ogni centro della palla (raggio fisso)
    • disegnare palla su minimappa di raggio fissato
  • Superposition video + output (VideoWriter << write frame by frame)

  • Metriche

Classes

  • enum categoria(0:background, 1:cueBall(white), 2:8Ball(black), 3:solidBalls, 4:stripedBalls, 5:playingField)
  • class Ball(Rect bbox, categoria, Rect bboxPrec=null)
  • class Table(Rect, color, transform, vec)

Files

  • main: input + scheletro pipeline + output : Sproc
  • ball : Michela
  • table : Alberto
  • categoria : Michela
  • detection + segmentation : Sproc
  • distinguish colors (da accorpare eventualmente in ball o det+seg)
  • tracking
  • minimap (con superposition)
  • metrics
Clone this wiki locally