Task: Seeking lines in edge image

Write a python script/function, that finds lines along four dominant straight edges in the given image. The solution should consist of the following steps:

  • load an image,
  • compute set of locations of edge pixels using edge detector from opencv,
  • finds single line using RANSAC algorithm on the edge points,
  • remove the inliers of the line from the point set,
  • repeat for the other lines.

Finally, show the results.

Some tips

In [ ]:
import numpy as np
In [31]:
num_points = 1000
inx = np.random.choice( num_points, 2, False ) # random sample - two indices
In [32]:
inx
Out[32]:
array([ 69, 151])

Example results

In [3]:
%run task_ransac_lines
Ransac iter 1  support 82 ( 82 of 2968 ) N_max 12061
Ransac iter 5  support 156 ( 156 of 2968 ) N_max 3329
Ransac iter 124  support 199 ( 199 of 2968 ) N_max 2044
Ransac iter 181  support 280 ( 280 of 2968 ) N_max 1030
Ransac all iter 1030
Ransac iter 1  support 15 ( 15 of 2688 ) N_max 295763
Ransac iter 2  support 27 ( 27 of 2688 ) N_max 91281
Ransac iter 3  support 70 ( 70 of 2688 ) N_max 13576
Ransac iter 12  support 129 ( 129 of 2688 ) N_max 3994
Ransac iter 42  support 131 ( 131 of 2688 ) N_max 3873
Ransac iter 85  support 165 ( 165 of 2688 ) N_max 2439
Ransac iter 346  support 208 ( 208 of 2688 ) N_max 1533
Ransac iter 369  support 211 ( 211 of 2688 ) N_max 1490
Ransac iter 454  support 212 ( 212 of 2688 ) N_max 1476
Ransac all iter 1476
Ransac iter 1  support 35 ( 35 of 2476 ) N_max 46089
Ransac iter 2  support 111 ( 111 of 2476 ) N_max 4578
Ransac iter 20  support 122 ( 122 of 2476 ) N_max 3789
Ransac iter 37  support 139 ( 139 of 2476 ) N_max 2917
Ransac iter 217  support 144 ( 144 of 2476 ) N_max 2718
Ransac iter 375  support 168 ( 168 of 2476 ) N_max 1995
Ransac iter 579  support 198 ( 198 of 2476 ) N_max 1435
Ransac all iter 1435
Ransac iter 1  support 98 ( 98 of 2278 ) N_max 4971
Ransac iter 33  support 101 ( 101 of 2278 ) N_max 4680
Ransac iter 34  support 102 ( 102 of 2278 ) N_max 4589
Ransac iter 38  support 119 ( 119 of 2278 ) N_max 3370
Ransac iter 43  support 130 ( 130 of 2278 ) N_max 2823
Ransac iter 153  support 132 ( 132 of 2278 ) N_max 2738
Ransac iter 159  support 151 ( 151 of 2278 ) N_max 2091
Ransac all iter 2091
In [ ]: