Implements the modified version of the following paper:
Modifcation note: Instead of finding edge direction using structural tensor and its eigenvectors as in paper, I have used more reliable canny edge detection and probabalistic hough line transform.
Input image:
After rectification:
First, compute list of 'edgelets'. An edgelet is a tuple of edge location, edge direction and edge strength.
edgelets1 = compute_edgelets(image)
vis_edgelets(image, edgelets1) # Visualize the edgeletsNext, find dominant vanishing point using ransac algorithm. In our case it turns out to be horizontal.
vp1 = ransac_vanishing_point(edgelets1, num_ransac_iter=2000,
threshold_inlier=5)
vp1 = reestimate_model(vp1, edgelets1, threshold_reestimate=5)
vis_model(image, vp1) # Visualize the vanishing point modelRemove the inliers for horizontal vanishing point. Vertical lines should now be dominant. Recompute the vanishing point using ransac should give us vertical vanishing point.
edgelets2 = remove_inliers(vp1, edgelets1, 10)
vp2 = ransac_vanishing_point(edgelets2, num_ransac_iter=2000,
threshold_inlier=5)
vp2 = reestimate_model(vp2, edgelets2, threshold_reestimate=5)
vis_model(image, vp2) # Visualize the vanishing point modelFinally, compute homography and warp the image so that we have a fronto parellel view with orthogonal axes:
warped_img = compute_homography_and_warp(image, vp1, vp2,
clip_factor=clip_factor)




