gpt4 book ai didi

python - skimage 变形太慢

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:55 24 4
gpt4 key购买 nike

(尝试不在这里发布示例,但我认为这个问题很笼统,没有必要。)

我正在使用 skimage.transform.warp 来扭曲 200x2000 图像,给定使用 skimage.transform.PiecewiseAffineTransform 计算出的 500 个源控制点和目标控制点。当我在单个图像上运行此命令时,大约需要 3 秒。根据每个人的经验,这是一个合理的计算运行时间吗?

我问的原因是,我可能有数百个相同尺寸的图像,我想对其应用相同的逆变换,但这将花费太长时间。如果我使用 Python 的 multiprocessing 模块,计算将挂起并且永远不会完成。

我想做的是在单个图像上运行warp,然后计算一个多项式,该多项式定义了扭曲图像中每个像素的值(给定输入图像中所有 400000 个像素的值) 。数学上:

f'(x,y) = a0_0*f(0,0) + a0_1*f(0,1) + ... + a200_1999*f(200,1999) + a200_2000*f(200 ,2000)

有人对我如何去做这个或类似的事情或更快地实现一些事情有建议吗?

谢谢!

最佳答案

当我必须纠正光谱相机的一些图像时,我遇到了类似的问题。我最终使用了sp.ndimage.map_coordinates 。您必须构建一个将源点坐标转换为目标坐标的函数(下例中的虚拟函数)。我从问题中了解到,这种转换对于一堆图像来说是相同的,并且您已经拥有此功能。

然后,您生成完整的坐标网格,map_coordinates 将通过样条插值将原始图像映射到这些新坐标上。

from scipy.ndimage import map_coordinates

# stack of 10 images
imgs=np.random.normal(size=[10,200,2000])
x, y = np.arange(imgs.shape[1]), np.arange(imgs.shape[2])
ini_coord=np.meshgrid(x, y)

# dummy function transforms source points into destination points
def dummy(ini_coord):
return [0.9*x.T for x in ini_coord]
out_coord=dummy(ini_coord)

import time
tt=time.clock()
out_img=np.zeros(imgs.shape)
for i, img in enumerate(imgs):
out_img[i]=map_coordinates(img, out_coord, mode='nearest')

print('{:3f} s'.format(time.clock()-tt))

运行时间不到 1 秒。在我的电脑上

关于python - skimage 变形太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com