Как применить обратную варп (grid_sample grid_sample) с прямым оптическим потоком?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как применить обратную варп (grid_sample grid_sample) с прямым оптическим потоком?

Сообщение Anonymous »

Недавно я работал над алгоритмами оптического потока и использовал Pytorch для применения поля оптического потока.
Я заметил, что большинство библиотек реализовали только функцию обратной варп. и направления сетки, поскольку мои изображения были деформированы, аналогичны целевому изображению. Ниже приведены некоторые части моей реализации с учетом 3D -поля потока opt_flow

Код: Выделить всё

# normalize the flow field
# 3, W, H, D
opt_flow[0] /= (W-1)
opt_flow[1] /= (H-1)
opt_flow[2] /= (D-1)

# create the grid
# note that torch.meshgrid returns the directions as z, y, x
grid = torch.stack(torch.meshgrid([torch.linspace(-1, 1, i) for i in opt_flow.shape[1:]], indexing='ij'), 3).to(self.device)

# flip grid so that the directions are x, y, z
grid = torch.flip(grid, [3])

# D, H, W, 3
opt_flow = opt_flow.permute(1, 2, 3, 0)

# add the flow field to the grid to represent the new coordinates
# I have subtracted because initially I have thought that this would account for inverse optical field
grid -= opt_flow

# add batch dimension
grid = grid[None, ...]

applied = F.grid_sample(self._to_Tensor(img)[None, None, ...], grid, mode='bilinear', padding_mode='zeros', align_corners=True).squeeze(dim=(0, 1))
Проблема, которую я заметил, состоит в том, что обратное деформация требует « обратного оптического потока (if) », а не для прямого оптического потока (FF, оптический поток, рассчитываемый из Previs -> cur) . Это связано с тем, что сетка, необходимая в Grid_Sample, обозначает местоположения, из которых должны быть отобраны каждая пиксели. Но отношения не просто if = -ff . (Как применить вектор обратного оптического потока на изображении? Этот вопрос подробно обсуждает это) < /p>
Упрощение до 2D -изображения, предположим, что мой FF имеет вектор смещения (3, 4) в индексе сетки (5, 6). Затем в перспективе GRID_SAMMER мы хотим, чтобы сетка IF хранила (-3, -4) в индексе GRID (8, 10). Просто отрицание приведет к тому, что (-3, -4) хранится в (5, 6), что принесет неправильное значение пикселя во время GRID_SAMPLE. Но кажется нелогичным применением BF к «предварительному» изображению. Но в то же время, поскольку grid_sample является «обратной» деформацией, также представляется интуитивно применять «обратное» оптическое поле для прежнего. j+y_displacement]. Но это будет неинтегрируемой функции. < /P>
Так что мои вопросы: < /p>

Есть ли простой способ применения FF, используя обратную варп, такую ​​как Grid_sample? (Можно ли применить BF к PREV?)>

Подробнее здесь: https://stackoverflow.com/questions/795 ... tical-flow
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»