0

我正在尝试使用 Python cupyx.scipy.ndimage map_coordinates 函数将像素值从一个图像映射到 gpu 上的另一个图像。输出cupy-array全为零。当我使用 scipy.ndimage 运行它的 map_coordinates 时,我得到了插值数组。为什么会发生以及如何解决?

与问题相关的一段代码:

tform = PiecewiseAffineTransform()
tform.estimate(match_p_src, match_p_dst)
warp_coor = warp_coords(tform.inverse, (n_rows, n_cols))
dst_cols = np.reshape(warp_coor[0], (n_rows*n_cols, 1))
dst_rows = np.reshape(warp_coor[1], (n_rows*n_cols, 1))

image_warp = scipy.ndimage.map_coordinates(image, [dst_cols, dst_rows])
image_warp = np.reshape(image_warp, (n_rows, n_cols))

d_image = cp.asanyarray(image)
d_image_warp = cp.ndarray((n_rows*n_cols, 1), dtype=cp.uint16)
cupyx.scipy.ndimage.map_coordinates(d_image, cp.asanyarray([dst_cols, dst_rows]), output=d_image_warp)
d_image_warp = cp.reshape(d_image_warp, (n_rows, n_cols))

谢谢!

4

1 回答 1

1

好的,我发现了问题。虽然文档说明插值顺序的默认值为 1,但它实际上是 None。通过将 order 参数更改为零或一,插值工作正常。

于 2021-05-25T08:22:11.280 回答