如何反转torch.nn.functional.grid_sample的操作?

gl *_*hua 5 machine-learning image-processing computer-vision pytorch

如果我们得到两个图像,目标图像tgt_img和源图像src_img。而且,我们也知道grid从源图像到目标图像的网格。因此,我们可以使用 F.grid_sample 从源图像生成目标图像。

tgt_img = F.grid_sample(src_img, grid)
Run Code Online (Sandbox Code Playgroud)

inv_grid从目标图像到源图像有什么好主意。以便:

inv_grid = ?
src_img =  F.grid_sample(tgt_img, inv_grid)
Run Code Online (Sandbox Code Playgroud)

我试图读取网格中的数据并生成一个 inv_grid,但我想知道是否有更好更快的方法

下面是一个例子,agrid给出如下所示: 一个网格,表示从 src_img 到 tgt_img 的坐标对应关系

然后我想用这个网格来生成inv_grid,它代表了从tgt_img到src_img的坐标对应关系。结果如下所示: tgt_img to src_img

Sha*_*hai 0

grid这首先取决于您如何创建。
如果grid是使用创建的F.affine_grid,那么您只需使用用于创建的仿射变换inv_grid的逆变换来创建。 在更一般的情况下,可能根本没有!假设将多个像素映射到同一个像素 - 如何反转这个奇点?thetagrid
gridinv_gridgridsrc_imgtgt_img