Fix bug in inverse warping and add test case

This commit is contained in:
Johannes Schönberger
2013-11-22 12:07:36 +01:00
parent 396b686bab
commit c53e98a3c6
2 changed files with 11 additions and 3 deletions
+2 -2
View File
@@ -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:
+9 -1
View File
@@ -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__":