在Scikit-image中移位图像[Python]

问题描述 投票:1回答:1

我想有功能这样做,但它不存在:

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

python image-processing scikit-image
1个回答
1
投票

似乎这样工作。然而,如果有人知道更简单和更快的方式 - 请告诉我。

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)
© www.soinside.com 2019 - 2024. All rights reserved.