Reqirements Spec
- watch pool game (start with individual shot)
A standard Pool table with NTSC camera
- ease of setup
Image of table should be maximized on monitor
Camera should be placed directly above center of the table
Camera should not be moved once game is started
Additional apperatus will not affect game play
- does not interfere with game play
- replay of a particular shot
After shot, the user should be able to replay any shot at different speeds.
The most recent shot can be seen with live video;
All shots can be viewed using the computer's generated (interal) image
- bonus--> Real Time (go for as close as possible)
- User(s) should be able to call shots/specify intent
Via GUI, the user will select a ball and pocket for current shot.
(Call his/her shot). By default, a safety is assumed.
- it should critique shots taken, point out what went wrong
- maybe suggest better course of action for particular goal
- bonus--> Bonus/Reward for good play
- screenshots will be provided to show how GUI should look
- bonus --> options b/ critiquing, recommend, solve
Func Spec
Vision Part
- Initize camera
Find points on edge of table (Dimonds)
Use points to figure out perspective (Create matrix)
Use points to mask out non-table portions of image.
Use felt color to create initial color space and 'mask'
Calculate noise (from light frequency..etc) and use as threshold
- Read Frames from camera
- ID environment from frame -> ball, table, elvis, etc.
Break Frame into RGB color space.
Mask out Green felt (as much as possible).
What remains should be balls, pockets, and table.
Use nearest neighbor method to ID each specific ball based on location in color space
Once balls are ID'd in color space, figure out coordinates in image, then calculate ball locations on 2D grid representing table plane.
- deduce events (change in shots) b/b, b/rail, b/pocket, b/cool?
- display internal model to screen
- analyze / recommend shot