Introduction
Imago is a program for automatic processing of Go images. It takes an image (or
a set of images), finds the board-grid and stones and produces an abstract
representation of the game situation (or a game record).
It will supports JPEG, BMP, TIFF (and other) image formats on input. It is
capable of output to ASCII and SGF format. As the process is fully
automatic, the program is operated from command line.
Modules
imago
Go image recognition.
-
imago.
main
()[source]
Main function of the program.
hough
Hough transform module.
-
class
hough.
Hough
(size, dt, init_angle)[source]
Hough transform.
This class stores the parameters of the transformation.
-
angle_distance
(point)[source]
Take a point from the transformed image and return the corresponding
line in the original as (angle, distance) tuple.
-
classmethod
default
(image)[source]
Default parameters for Hough transform of the image.
-
lines_from_list
(p_list)[source]
Take a list of transformed points and return a list of corresponding
lines as (angle, distance) tuples.
ransac.py
RANSAC estimation.
-
class
ransac.
Linear_model
(data)[source]
Linear model for RANSAC.
-
ransac.
estimate
(data, dist, k, modelClass=<class ransac.Linear_model>, model=None)[source]
Estimate model from data with RANSAC.
-
ransac.
filter_near
(data, line, distance)[source]
Find points in data that are closer than distance to line.
-
ransac.
least_squares
(data)[source]
The least squares method.
-
ransac.
points_to_line
((x1, y1), (x2, y2))[source]
Take two points, return coefficitiens for line that connects them.
geometry
Imago geometry module.
-
class
geometry.
V
(x, y)[source]
Class for vector manipulation.
-
geometry.
intersection
(p, q)[source]
Return intersection of two lines.
-
geometry.
l2ad
((a, b), size)[source]
Represent line as (angle, distance).
Take a line (represented by two points) and image size.
Return the line represented by its angle and distance
from the center of the image.
-
geometry.
line
(x, y)[source]
Given two points x and y, compute the line joining them.
x and y are 2-tuples of the (x, y) coordinates of the points.
The function returns a 3-tuple (a, b, c) such that the line through
the points x and y is described by the equation ax + by = c .
filters
Image filters module.
All filters return a filtered copy of the image, the original image is
preserved.
-
filters.
color_enhance
(image)[source]
Stretch all color channels to their full range.
-
filters.
edge_detection
(image)[source]
Edge detection (on BW images).
-
filters.
high_pass
(image, height)[source]
High pass filter (on BW images).
-
filters.
peaks
(image)[source]
Peak filter (on BW images).
linef
Lines finding module.
-
linef.
find_lines
(image, show_image, logger)[source]
Find lines in the image.
-
linef.
line_from_angl_dist
((angle, distance), size)[source]
Take angle and distance (from the center of the image) of a line and
size of the image. Return the line represented by two points.
-
linef.
transform
(image, hough, show_image)[source]
Produces a simplified Hough transformation of the input image.
gridf_new
Imago grid fitting module
RANSAC inspired method.
-
class
gridf_new.
Diagonal_model
(data)[source]
Ransac model for finding diagonals.
-
class
gridf_new.
Line
((a, b, c))[source]
Line with a list of important points that lie on it.
This and the Point class in this module serves to implement a model of
perspective plain – a line has a list of intersections with other lines and
each intersection has two lines that go through it.
-
class
gridf_new.
Point
((x, y))[source]
Class that represents a point in 2D.
-
gridf_new.
dst
(p, l)[source]
Distance from a point to a line.
-
gridf_new.
find
(lines, size, l1, l2, bounds, hough, show_all, do_something, logger)[source]
Find the best grid given the lines and size of the image.
- lines: A list containing two lists of lines detected in the image.
- Each list of lines contains lines that are more-or-less parallel
to each other. The lines in the two lists are more-or-less
perpendicular to each other.
size: A list of (width, height) of the input image, in pixels.
Last three parameters serves for debugging, l1, l2, bounds and hough
are here for compatibility with older version of gridf, so they can be
easily exchanged, tested and compared.
-
gridf_new.
gen_corners
(d1, d2, min_size)[source]
Generate candidates on corner positions from the diagonals.
-
gridf_new.
intersection
((a1, b1, c1), (a2, b2, c2))[source]
Intersection of two lines, given by coefficients in their equations.
-
gridf_new.
plot_line
(line, c, size)[source]
Plot a line with pyplot.
intrsc
Imago intersections module.
-
intrsc.
b_intersects
(image, lines, show_all, do_something, logger)[source]
Compute intersections.
-
intrsc.
board
(image, intersections, show_all, do_something, logger)[source]
Find stone colors and return board situation.
-
intrsc.
dst
(line)[source]
Return normalized line.
-
intrsc.
dst_sort
(lines)[source]
Return lines sorted by distance.
-
intrsc.
intersections_from_angl_dist
(lines, size, get_all=True)[source]
Take grid-lines and size of the image. Return intersections.
-
intrsc.
mean_luma
(cluster)[source]
Return mean luminanace of the cluster of points.
-
intrsc.
rgb2lumsat
(color)[source]
Convert RGB to luminance and HSI model saturation.
-
intrsc.
stone_color_raw
(image, (x, y))[source]
Given image and coordinates, return stone color.
k_means
K-means module.
-
k_means.
centroid
(cluster)[source]
Find the centroid of the cluster.
-
k_means.
cluster
(k, d, data, i_centers=None)[source]
Find k clusters on d dimensional data.
-
k_means.
delta
(c1, c2)[source]
Find the absolute distance between two lists of points.
-
k_means.
nearest
(centers, point)[source]
Find the nearest cluster center for point.
-
k_means.
next_step
(centers, data)[source]
Compute new clusters and centers.
manual
Manual grid selection module
output
Imago output module.
-
class
output.
Board
(size, stones)[source]
Represents the state of the board.
-
addMove
(m)[source]
Add move to the board.
-
asSGFsetPos
()[source]
Returns SGF (set position) representation of the position.
-
getMoveCandidates
(board)[source]
Take the next board in game and return a list of moves that are
new.
-
class
output.
Game
(size, board=None, debug=True)[source]
Represents a game.
-
addMove
(board)[source]
Add next move to the game.
-
asSGF
()[source]
Return the game representation as SGF string.
-
class
output.
Move
(color, y, x, comment=None)[source]
Repsresents a move.
-
sgf_coords
()[source]
Return coordinates of the move in SGF.
im_debug
Debugging image display.
This is a simple module that shows images on screen using PyGame.
It is not used anywhere in the standard UI, serves only for debugging.
-
im_debug.
show
(image, caption='', name=None)[source]
Initialize PyGame and show the image.
camera
Camera module.
This module handles various backends (different for every OS) for streaming the video from a (web)camera.
-
class
camera.
Camera
(vid=0, res=None)[source]
Implement basic camera capabilities
This class has different implementations for different OS. On posix
systems it calls to opencv, on Windows to VideoCapture.
-
get_image
()[source]
Get a new image from the camera.
capture
Go image capture.
This module defines a UI for capturing images with a (web)camera and imediately
proccessing them with Imago.
-
class
capture.
Capture
(device, res)[source]
This object maintains communication between the camera, the PyGame screen
and Imago.
-
auto
(interval)[source]
Take new image every interval seconds.
-
live
(q)[source]
Run live preview on the screen.
-
manual
()[source]
Take images manualy by pressing a key.
-
take
()[source]
Take a new image from the camera.
-
class
capture.
Screen
(res)[source]
Basic PyGame setup.
-
display_picture
(im)[source]
Display image on PyGame screen.
-
capture.
main
()[source]
Parse the argument and setup the UI.
timer
Go timer.
This module defines a UI that combines game clock with automatic game recording.
When player presses the clock, an image of the board is taken. The sequence of
images can later be analysed by Imago to produce a game record in abstract
notation.
-
class
timer.
Timer
(main_time, byop, byot)[source]
Keeps track of time remaining one player.
-
get_time
()[source]
Return string representation of remaining time.
-
is_running
()[source]
Return True if the clock is running.
-
start
()[source]
Start the clock.
-
stop
()[source]
Stop the clock.
-
timer.
main
()[source]
Parse the arguments and run the clock.
\ Sort by:\ best rated\ newest\ oldest\
\\
Add a comment\ (markup):
\``code``
, \ code blocks:::
and an indented block after blank line