diff --git a/project.md b/project.md new file mode 100644 --- /dev/null +++ b/project.md @@ -0,0 +1,35 @@ +OneEye +====== + +Program to extract moves of a go game from video and save them or broadcast online. + +Modules: + - Video: grabbing still frames from a video file / stream. Using FFmpeg. + - Graphic: extracting game position from an image. Using Pillow. + - Watcher: interpreting sequence of game positions as a sequence of moves. + - Broadcaster: interfacing with a go server. + + +Graphic +------- +Interpolating the board grid from specified corner points. Using vanishing points and horizon in projective geometry. + +Determining the point status based on majority voting of pixels in its neighbourhood (deciding by HSI intensity). + +Autodetection of the board? + + +Watcher +------- +Base case: we have two correctly recognized positions differing by a single move (single added stone). Easy. + +Issues: + - illegal positions -> ignorable + - positions unreachable from the previous state + - reachable from any past state. (Incorrect states inbetween). How to pick the correct leaf of such a tree? + - reachable by more than one move. Issues with branching factor. + - board shifts -> repaired manually (or automatically), further positions have to be reevaluated + - stone shifts + - stone stops being recognized -> fixable manually and even ignorable + - stone is recognized at an empty intersection. It can be occupied later for real. What do? +