Как отменить операцию torch.nn.functional.grid_sample? - PullRequest
1 голос
/ 26 марта 2019

Если мы получим два изображения, целевое изображение 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)

Я пытался прочитать данные в сетке и создать inv_grid, но я хочу знать, есть ли лучший и более быстрый метод

Вот пример, grid дается так, как показано ниже: сетка, представляющая соответствие координат от src_img до tgt_img

Затем я хочу использовать эту сетку для генерации inv_grid, который представляет соответствие координат от tgt_img до src_img. Результат показан здесь: от tgt_img до src_img

1 Ответ

0 голосов
/ 27 марта 2019

Во-первых, это зависит от того, как вы создали grid.
Если grid было создано с использованием F.affine_grid, то вам просто нужно создать inv_grid с использованием обратной theta - аффинное преобразование, используемое для создания grid.
В более общем случае grid может вообще не иметь inv_grid!Предположим, что grid отображает несколько src_img пикселей на один tgt_img пиксель - как вы можете инвертировать эту особенность?

...