def _compute_inliers_bearings(b1, b2, T, threshold=0.01): R = T[:, :3] t = T[:, 3] p = np.array(pygeometry.triangulate_two_bearings_midpoint_many(b1, b2, R, t)) br1 = p.copy() br1 /= np.linalg.norm(br1, axis=1)[:, np.newaxis] br2 = R.T.dot((p - t).T).T br2 /= np.linalg.norm(br2, axis=1)[:, np.newaxis] ok1 = multiview.vector_angle_many(br1, b1) < threshold ok2 = multiview.vector_angle_many(br2, b2) < threshold return ok1 * ok2
def _compute_inliers_bearings(b1, b2, T, threshold=0.01): R = T[:, :3] t = T[:, 3] p = pyopengv.triangulation_triangulate(b1, b2, t, R) br1 = p.copy() br1 /= np.linalg.norm(br1, axis=1)[:, np.newaxis] br2 = R.T.dot((p - t).T).T br2 /= np.linalg.norm(br2, axis=1)[:, np.newaxis] ok1 = multiview.vector_angle_many(br1, b1) < threshold ok2 = multiview.vector_angle_many(br2, b2) < threshold return ok1 * ok2
def _compute_inliers_bearings(b1, b2, T, threshold=0.01): R = T[:, :3] t = T[:, 3] p = pyopengv.triangulation_triangulate(b1, b2, t, R) br1 = p.copy() br1 /= np.linalg.norm(br1, axis=1)[:, np.newaxis] br2 = R.T.dot((p - t).T).T br2 /= np.linalg.norm(br2, axis=1)[:, np.newaxis] ok1 = multiview.vector_angle_many(br1, b1) < threshold ok2 = multiview.vector_angle_many(br2, b2) < threshold return ok1 * ok2