Files @ 5fe83c3dfb92
Branch filter:

Location: OneEye/project.md

Laman
splitting core from gui
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?