Issue with skimage.transform.warp - 'numpy.float64' object cannot be interpreted as an index
Alistair Muldal
alimuldal at gmail.com
Sun Jul 21 11:20:03 EDT 2013
Hi all,
I've been using skimage.transform.warp to apply affine transformations to a
series of movie frames, using this wrapper function:
def applytform(img,tmat,**kwargs):
"""
A wrapper to call skimage.transform.warp for fast similarity
transformations. Also returns the mask of the transformed image (a
boolean array, True only in pixels containing the transformed image).
All keyword arguments are passed directly to warp.
"""
# warp needs floating point images -1.0 <= I <= 1.0
origtype, imin, imax = img.dtype, img.min(), img.max()
tmpimg = (np.float64(img) - imin) / (imax-imin)
# tmpimg = np.require(tmpimg,np.float32,'CAOW')
# tmat = np.require(tmat,np.float32,'CAOW')
# construct a callable transform object, apply it using warp
s = SimilarityTransform(matrix=tmat)
# import ipdb;ipdb.set_trace()
tmpimg = warp(tmpimg,s.inverse,mode='constant',cval=np.nan,**kwargs)
mask = ~np.isnan(tmpimg)
tmpimg[~mask] = 0.
# convert back to original scaling and type
img = tmpimg*imax + imin
img = img.astype(origtype)
return img,mask
I've had no problems using skimage v0.7.1, but I've recently tried updating
to v0.8.2 and now the same code gives me this error:
/home/alistair/src/python/ca_tadpoles2/opt/d/imtransform3.pyc in
applytform(img, tmat, **kwar
gs)
50 s = SimilarityTransform(matrix=tmat)
51 # import ipdb;ipdb.set_trace()
---> 52 tmpimg =
warp(tmpimg,s.inverse,mode='constant',cval=np.nan,**kwargs)
53 mask = ~np.isnan(tmpimg)
54 tmpimg[~mask] = 0.
/home/alistair/.venvs/newskimage/lib/python2.7/site-packages/skimage/transform/_geometric.pyc
in warp(image, inverse_map, map_args, output_shape, order, mode, cval,
reverse_map)
989 dims.append(_warp_fast(image[..., dim], matrix,
990 output_shape=output_shape,
--> 991 order=order, mode=mode, cval=cval))
992 out = np.dstack(dims)
993 if orig_ndim == 2:
/home/alistair/.venvs/newskimage/lib/python2.7/site-packages/skimage/transform/_warps_cy.so
i
n skimage.transform._warps_cy._warp_fast
(skimage/transform/_warps_cy.c:1636)()
TypeError: 'numpy.float64' object cannot be interpreted as an index
I've tried casting the image and the transformation matrix to np.float32,
but this gave me a different error:
/home/alistair/src/python/ca_tadpoles2/opt/d/imtransform3.pyc in
applytform(img, tmat, **kwargs)
50 s = SimilarityTransform(matrix=tmat)
51 # import ipdb;ipdb.set_trace()
---> 52 tmpimg =
warp(tmpimg,s.inverse,mode='constant',cval=np.nan,**kwargs)
53 mask = ~np.isnan(tmpimg)
54 tmpimg[~mask] = 0.
/home/alistair/.venvs/newskimage/lib/python2.7/site-packages/skimage/transform/_geometric.pyc
in warp(image, inverse_map, map_args, output_shape, order, mode, cval,
reverse_map)
989 dims.append(_warp_fast(image[..., dim], matrix,
990 output_shape=output_shape,
--> 991 order=order, mode=mode, cval=cval))
992 out = np.dstack(dims)
993 if orig_ndim == 2:
/home/alistair/.venvs/newskimage/lib/python2.7/site-packages/skimage/transform/_warps_cy.so
in skimage.transform._warps_cy._warp_fast
(skimage/transform/_warps_cy.c:1505)()
ValueError: Buffer dtype mismatch, expected 'double_t' but got 'float'
Any idea what's going on here?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-image/attachments/20130721/dcc429a6/attachment.html>
More information about the scikit-image
mailing list