fix more errors
[imago.git] / src / gridf2.py
index ce50be7..8e6936a 100644 (file)
@@ -29,11 +29,13 @@ def nearest(lines, point):
 def nearest2(lines, point):
     return min(map(lambda l: dst(point, points_to_line(*l)), lines))
 
 def nearest2(lines, point):
     return min(map(lambda l: dst(point, points_to_line(*l)), lines))
 
-size = (520, 390)
 
 def generate_models(sgrid, lh):
     for f in [0, 1, 2, 3, 5, 7, 8, 11, 15, 17]:
 
 def generate_models(sgrid, lh):
     for f in [0, 1, 2, 3, 5, 7, 8, 11, 15, 17]:
-        grid = gm.fill(sgrid[0], sgrid[1], lh , f)
+        try:
+            grid = gm.fill(sgrid[0], sgrid[1], lh , f)
+        except ZeroDivisionError:
+            continue
         grid = [sgrid[0]] + grid + [sgrid[1]]
         for s in xrange(17 - f):
             grid = [gm.expand_left(grid, lh)] + grid
         grid = [sgrid[0]] + grid + [sgrid[1]]
         for s in xrange(17 - f):
             grid = [gm.expand_left(grid, lh)] + grid
@@ -68,6 +70,7 @@ def test():
     import matplotlib.pyplot as pyplot
     import time
 
     import matplotlib.pyplot as pyplot
     import time
 
+    size = (520, 390)
     points = pickle.load(open('edges.pickle'))
 
     lines = pickle.load(open('lines.pickle'))
     points = pickle.load(open('edges.pickle'))
 
     lines = pickle.load(open('lines.pickle'))
@@ -134,11 +137,11 @@ def find(lines, size, l1, l2, bounds, hough, show_all, do_something, logger):
         l1s = random.sample(l1, 2)
         l1s.sort(key=lambda l: l[1])
         sgrid = map(lambda l:linef.line_from_angl_dist(l, size), l1s) 
         l1s = random.sample(l1, 2)
         l1s.sort(key=lambda l: l[1])
         sgrid = map(lambda l:linef.line_from_angl_dist(l, size), l1s) 
-        middle = lambda m: ((m, 0),(m, 390))
+        middle = lambda m: ((m, 0),(m, size[1]))
         middle = middle(gm.intersection((sgrid[0][0], sgrid[1][1]), 
                                         (sgrid[0][1], sgrid[1][0]))[0])
         lh = (gm.intersection(sgrid[0], middle), gm.intersection(sgrid[1], middle))
         middle = middle(gm.intersection((sgrid[0][0], sgrid[1][1]), 
                                         (sgrid[0][1], sgrid[1][0]))[0])
         lh = (gm.intersection(sgrid[0], middle), gm.intersection(sgrid[1], middle))
-        sc1_n, gridv_n = min(map(lambda g: (score(g, l1, 210), g), generate_models(sgrid, lh)))
+        sc1_n, gridv_n = min(map(lambda g: (score(g, l1, size[1] / 2 + 15), g), generate_models(sgrid, lh)))
         if sc1_n < sc1:
             sc1, gridv = sc1_n, gridv_n
 
         if sc1_n < sc1:
             sc1, gridv = sc1_n, gridv_n
 
@@ -147,11 +150,11 @@ def find(lines, size, l1, l2, bounds, hough, show_all, do_something, logger):
         l2s = random.sample(l2, 2)
         l2s.sort(key=lambda l: l[1])
         sgrid = map(lambda l:linef.line_from_angl_dist(l, size), l2s) 
         l2s = random.sample(l2, 2)
         l2s.sort(key=lambda l: l[1])
         sgrid = map(lambda l:linef.line_from_angl_dist(l, size), l2s) 
-        middle = lambda m: ((0, m),(520, m))
+        middle = lambda m: ((0, m),(size[0], m))
         middle = middle(gm.intersection((sgrid[0][0], sgrid[1][1]), 
                                         (sgrid[0][1], sgrid[1][0]))[1])
         lh = (gm.intersection(sgrid[0], middle), gm.intersection(sgrid[1], middle))
         middle = middle(gm.intersection((sgrid[0][0], sgrid[1][1]), 
                                         (sgrid[0][1], sgrid[1][0]))[1])
         lh = (gm.intersection(sgrid[0], middle), gm.intersection(sgrid[1], middle))
-        sc2_n, gridh_n = min(map(lambda g: (score(g, l2, 275), g), generate_models(sgrid, lh)))
+        sc2_n, gridh_n = min(map(lambda g: (score(g, l2, size[0] / 2 + 15), g), generate_models(sgrid, lh)))
         if sc2_n < sc2:
             sc2, gridh = sc2_n, gridh_n
     gridv, gridh = lines2grid(gridv, gridh), lines2grid(gridh, gridv)
         if sc2_n < sc2:
             sc2, gridh = sc2_n, gridh_n
     gridv, gridh = lines2grid(gridv, gridh), lines2grid(gridh, gridv)