Деформация изображения полем смещения, выбранным на регулярной сетке - PullRequest
1 голос
/ 15 марта 2019

Допустим, у меня есть изображение I ( x, y ) и векторное поле w ( x,y ), оба сэмплированы на одной и той же регулярной сетке.Моя цель - деформировать изображение в соответствии с векторным полем и создать выходное изображение J ( u, v ).Это делается путем сопоставления точек ( x, y ) в I с точками ( u, v ) в J .Проблема в том, что я не знаю, как проще всего это реализовать.Я читал в Интернете, что есть два основных подхода к решению подобных проблем.

Прямое отображение: просто добавьте вектор смещения к каждой координате ( x, y ) изображения I .Проблема здесь в том, что таким образом я получу нецелые координаты ( u ', v' ) на нерегулярной сетке в J , потому что w ( x, y ) не обязательно является целочисленным значением и изменяется от пикселя к пикселю.Мой вопрос: как я могу интерполировать это изображение в целочисленные координаты?Например, если я хочу вычислить значение пикселя J ( 12,25 ), как узнать, какие точки выборки использовать для интерполяции, если выборки не включены?обычная сетка?

Обратное отображение: выяснить, какие нецелые координаты ( x ', y' ) в I соответствуют целочисленным координатам ( u, v ) в J путем применения обратного преобразования к координатам ( u, v ).Значения, соответствующие нецелочисленным координатам ( x ', y' ) в I , можно затем легко интерполировать.Мой вопрос: могу ли я применить это к моей проблеме как-то?Могу ли я как-то инвертировать свое поле смещения?Как найти обратное значение этого поля смещения, которое отображает целочисленные значения от J до нецелых значений в I ?

Чтобы уточнить, я не ищу существующих реализаций решений этой проблемы (я знаю, что, например, есть функции в Matlab и OpenCV, которые могут это делать).Я хотел бы только понять теорию, стоящую за этим, и начать экспериментировать самостоятельно.

1 Ответ

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

То, что вы можете искать, это билинейная интерполяция .

...