【问题标题】:How to reverse the operation of torch.nn.functional.grid_sample?如何反转torch.nn.functional.grid_sample的操作?
【发布时间】:2019-08-16 14:20:03
【问题描述】:

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

tgt_img = F.grid_sample(src_img, grid)

有没有什么好主意来获取从目标图像到源图像的inv_grid。所以:

inv_grid = ?
src_img =  F.grid_sample(tgt_img, inv_grid)

我已经尝试读取grid中的数据并生成一个inv_grid,但是我想知道有没有更好更快的方法

这里是一个例子,一个grid如下所示: a grid that represent the coordinates correspondence from src_img to tgt_img

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

【问题讨论】:

    标签: image-processing machine-learning computer-vision pytorch


    【解决方案1】:

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

    【讨论】:

    • 网格表示src_imgtgt_img坐标的对应关系。由于我们知道这种对应关系,我们可以生成inv_grid。例如,tgt_img[0,0] 应该从 src_img[1,3] 中采样。则相反,src_img[1,3] 可以从tgt_img[0,0] 中采样。
    • 我想知道如何快速实现这个转换。这是一个例子:[[[1,-1],[0,-1],[-1,-1]], [[1, 0],[0, 0],[-1, 0]], [[1, 1],[0, 1],[-1, 1]]] 然后我们可以得到inv_grid[[[-1,1],[0,1],[1,1]], [[-1,0],[0,0],[1,0]], [[-1,-1],[0,-1],[1,-1]]] 对不起,我是堆栈溢出的新手,我不知道如何插入图像并使评论看起来更好。
    • @glhua - 您无法在 cmets 中插入图片 - 但您可以编辑您的问题并在其中添加图片和图表。
    猜你喜欢
    • 2022-08-17
    • 2020-10-06
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多