def chain_tps_before_tps_test(): a = PointCloud(np.random.random([10, 2])) b = PointCloud(np.random.random([10, 2])) tps_one = ThinPlateSplines(a, b) tps_two = ThinPlateSplines(b, a) chain = tps_one.compose_before(tps_two) assert(isinstance(chain, TransformChain)) points = PointCloud(np.random.random([10, 2])) chain_res = chain.apply(points) manual_res = tps_two.apply(tps_one.apply(points)) assert (np.all(chain_res.points == manual_res.points))
def test_tps_apply_batched(): src = PointCloud(np.array([[-1.0, -1.0], [-1, 1], [1, -1], [1, 1]])) tgt = PointCloud(np.array([[-2.0, -2.0], [-2, 2], [2, -2], [2, 2]])) pts = PointCloud(np.array([[-0.1, -1.0], [-0.5, 1.0], [2.1, -2.5]])) tps = ThinPlateSplines(src, tgt) result = tps.apply(pts, batch_size=2) expected = np.array([[-0.2, -2.], [-1., 2.], [4.2, -5.]]) assert_allclose(result.points, expected)
def chain_compose_before_tps_test(): a = PointCloud(np.random.random([10, 2])) b = PointCloud(np.random.random([10, 2])) tps = ThinPlateSplines(a, b) t = Translation([3, 4]) s = Scale([4, 2]) chain = TransformChain([t, s]) chain_mod = chain.compose_before(tps) points = PointCloud(np.random.random([10, 2])) manual_res = tps.apply(s.apply(t.apply(points))) chain_res = chain_mod.apply(points) assert(np.all(manual_res.points == chain_res.points))
def test_chain_compose_after_inplace_tps(): a = PointCloud(np.random.random([10, 2])) b = PointCloud(np.random.random([10, 2])) tps = ThinPlateSplines(a, b) t = Translation([3, 4]) s = Scale([4, 2]) chain = TransformChain([t, s]) chain.compose_after_inplace(tps) points = PointCloud(np.random.random([10, 2])) manual_res = s.apply(t.apply(tps.apply(points))) chain_res = chain.apply(points) assert (np.all(manual_res.points == chain_res.points))
def test_tps_maps_src_to_tgt(): tps = ThinPlateSplines(src, tgt_perturbed) assert_allclose(tps.apply(square_src_landmarks), perturbed_tgt_landmarks)