https://github.com/vfdev-5/dobblegamevision
Computer vision for "Dobble" game
https://github.com/vfdev-5/dobblegamevision
Last synced: 8 months ago
JSON representation
Computer vision for "Dobble" game
- Host: GitHub
- URL: https://github.com/vfdev-5/dobblegamevision
- Owner: vfdev-5
- Created: 2015-07-01T21:36:57.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2016-03-15T16:59:39.000Z (about 10 years ago)
- Last Synced: 2025-04-02T20:16:01.369Z (about 1 year ago)
- Language: C++
- Homepage:
- Size: 13.2 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Computer vision for 'Dobble' game
Idea : Support player with computer vision system to recognize and compare objects on the cards

### Algorithm (08/09/2015) :
1) Detect cards on the image
a) Simplify image (i.g. low-band pass filtering, median blur, etc)
b) Derivate -> Threhold -> Morpho -> Find contours
c) Select contours by size and length/surface ratio
2) 'Unify' size of detected cards
a) Resize all detected cards to a unique size
3) Extract and match objects between any two cards
a) Loop on cards taking two different cards
b) For each card extract objects
1) Median blur -> Canny -> Morpho -> Find contours
2) Select contours :
a) bounding rect of the contour larger min area and smaller 1/4 of card size
b) distance between center of the contour and the card center is smaller than card radius
c) max dimension of contour is smaller than card radius
d) contour brect should not touch (+/- 1 pixel) image boundaries
c) Extract keypoints and descriptors for the reference object of the card one
1) Feature extraction uses AKAZE algorithm: http://docs.opencv.org/master/d8/d30/classcv_1_1AKAZE.html
Pablo F Alcantarilla, Jesús Nuevo, and Adrien Bartoli. Fast explicit diffusion for accelerated
features in nonlinear scale spaces. Trans. Pattern Anal. Machine Intell, 34(7):1281–1298, 2011.
d) Extract keypoints and descriptors for a test object of the card two
e) Match keypoints and select matched keypoints
f) Decide whether objects match and continue the loop
Problems :
1) Card contours are too weak -> no card detection
- weak card contours, strong small contours
- weak card contours are neglected on threshold
=> Use a generic method to extract cards or objects