From c53e98a3c62c6278f40c2c22b83a08b39f80e40a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:07:36 +0100 Subject: [PATCH] Fix bug in inverse warping and add test case --- skimage/transform/_geometric.py | 4 ++-- skimage/transform/tests/test_warps.py | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/skimage/transform/_geometric.py b/skimage/transform/_geometric.py index af193173..a4587c10 100644 --- a/skimage/transform/_geometric.py +++ b/skimage/transform/_geometric.py @@ -1051,8 +1051,8 @@ def warp(image, inverse_map=None, map_args={}, output_shape=None, order=1, # inverse_map is the inverse of a homography elif (hasattr(inverse_map, '__name__') and inverse_map.__name__ == 'inverse' - and isinstance(get_bound_method_class(inverse_map), - HOMOGRAPHY_TRANSFORMS)): + and get_bound_method_class(inverse_map) \ + in HOMOGRAPHY_TRANSFORMS): matrix = np.linalg.inv(six.get_method_self(inverse_map)._matrix) if matrix is not None: diff --git a/skimage/transform/tests/test_warps.py b/skimage/transform/tests/test_warps.py index 760d4696..db936a3a 100644 --- a/skimage/transform/tests/test_warps.py +++ b/skimage/transform/tests/test_warps.py @@ -237,7 +237,15 @@ def test_downscale_local_mean(): def test_invalid(): assert_raises(ValueError, warp, np.ones((4, )), SimilarityTransform()) - assert_raises(ValueError, warp, np.ones((4, 3, 3, 3)), SimilarityTransform()) + assert_raises(ValueError, warp, np.ones((4, 3, 3, 3)), + SimilarityTransform()) + + +def test_inverse(): + tform = SimilarityTransform(scale=0.5, rotation=0.1) + inverse_tform = SimilarityTransform(matrix=np.linalg.inv(tform._matrix)) + image = np.arange(10 * 10).reshape(10, 10).astype(np.double) + assert_array_equal(warp(image, inverse_tform), warp(image, tform.inverse)) if __name__ == "__main__":