我想有功能这样做,但它不存在:
from skimage.transform import shift
shifted = shift(image, translation=(15.2, 35.7),
mode='wrap', preserve_range=True)
你能帮我用skimage.transform.AffineTransform写一个函数吗?
from skimage.transform import AffineTransform
def shift(image, translation):
transform = AffineTransform(translation=translation)
# How to do it???
shifted = transform(image) # Does not work, documentation for usage present
# of this class is not present...
return shifted
然而功能scipy.ndimage.interpolation.shift
做我想要的,它是快速的 - 大约甚至比旋转慢10-20倍。 numpy.roll
也不在桌面,因为它不支持小数翻译。
文档有点意思:http://scikit-image.org/docs/stable/api/skimage.transform.html#skimage.transform.AffineTransform
似乎这样工作。然而,如果有人知道更简单和更快的方式 - 请告诉我。
from skimage.transform import AffineTransform, warp
def shift(image, vector):
transform = AffineTransform(translation=vector)
shifted = warp(image, transform, mode='wrap', preserve_range=True)
shifted = shifted.astype(image.dtype)