-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Alberto Pasqualetto edited this page Nov 1, 2024
·
3 revisions
-
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
- vector di Tracker per ogni pallina
- eseguire “in parallelo” per per ogni pallina per ogni frame
- ritorna la bbox nella palla
- 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
- 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)
- 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