def __init__(self, img,
ransac_options=RANSAC_OPTIONS,
opt_method=OPTIMIZATION_METHOD,
opt_options=OPTIMIZATION_OPTIONS,
mask=None,
min_line_length=20,
max_line_gap=3,
angle_tolerance=30
):
self.angle_tolerance = angle_tolerance
self.ransac_options = ransac_options
self.opt_method = opt_method
self.opt_options = opt_options
self.data = img
self.mask = mask
if mask is not None and np.all(mask == False):
self.mask = None
self.l, self.w = img.shape[:2]
self.lines = _extract_lines(img,
mask=self.mask,
min_line_length=min_line_length,
max_line_gap=max_line_gap)
if len(self.lines) > 0:
self.vlines, self.hlines = _vh_lines(self.lines,
ransac_options=self.ransac_options,
angle_lo=90 - self.angle_tolerance,
angle_hi=90 + self.angle_tolerance
)
lrud = _solve_lrud(self.hlines, self.vlines, self.w, self.l,
opt_options=opt_options,
opt_method=opt_method)
self.dl, self.dr, self.du, self.dd = lrud
self.H = H(self.dl, self.dr, self.du, self.dd, self.w, self.l)
self.inv_H = np.linalg.inv(self.H)
self.rectified = tf.warp(img, self.H)
if mask is not None:
self.rectified_mask = tf.warp(mask, self.H)
else:
self.rectified_mask = None
else:
self.vlines = []
self.hlines = []
self.H = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=float)
self.inv_H = self.H
self.rectified = img.copy()
if self.mask is not None:
self.rectified_mask = self.mask.copy()
else:
self.rectified_mask = None
评论列表
文章目录