Я получил два изображения, показывающие абсолютно одинаковое содержание: пятна в 2D-гауссовой форме.Я называю эти два 16-битных png-файла «left.png» и «right.png».Но так как они получены с помощью немного другой оптической системы, соответствующие пятна (физически одинаковые) появляются в немного разных позициях.Значение вправо слегка растянуто, искажено или около того нелинейным образом.Поэтому я хотел бы получить преобразование слева направо.
Так что для каждого пикселя на левой стороне с его координатами x и y мне нужна функция, дающая мне компоненты вектора смещения, который указываетк соответствующему пикселю с правой стороны.
В предыдущем подходе я пытался получить положения соответствующих пятен, чтобы получить относительные расстояния deltaX и deltaY.Затем эти расстояния я подгонял к расширению Тейлора до второго порядка T (x, y), давая мне x- и y-компоненту вектора смещения для каждого пикселя (x, y) слева, указывая на соответствующий пиксель(x ', y') справа.
Чтобы получить более общий результат, я хотел бы использовать нормализованную взаимную корреляцию.Для этого я умножаю каждое пиксельное значение слева на соответствующее пиксельное значение справа и суммирую по этим продуктам.Преобразование, которое я ищу, должно соединить пиксели, которые максимизируют сумму.Поэтому, когда сумма максимальна, я знаю, что я умножил соответствующие пиксели.
Я действительно много пытался с этим, но не смог.Мой вопрос: есть ли у кого-нибудь из вас идея или когда-либо подобное.
import numpy as np
import Image
left = np.array(Image.open('left.png'))
right = np.array(Image.open('right.png'))
# for normalization (http://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross-correlation)
left = (left - left.mean()) / left.std()
right = (right - right.mean()) / right.std()
Пожалуйста, дайте мне знать, если я смогу прояснить этот вопрос.Мне все еще нужно проверить, как отправлять вопросы с использованием латекса.
Большое спасибо за ввод.
![right](https://i.stack.imgur.com/Onqlx.png)
[left.png] http://i.stack.imgur.com/oSTER.png [right.png] http://i.stack.imgur.com/Njahj.png
Боюсь, в большинстве случаев 16-битные изображения выглядят просто черными (по крайней мере, в системах, которые я использую) :( но, конечно, есть данныетам.
ОБНОВЛЕНИЕ 1
Я пытаюсь прояснить свой вопрос. Я ищу векторное поле с векторами смещения, которые указывают от каждого пикселя в left.png ксоответствующий пиксель в right.png . Моя проблема в том, что я не уверен насчет имеющихся у меня ограничений.
![enter image description here](https://i.stack.imgur.com/IuEL0.png)
где vector r (компоненты x и y) указывают на пиксель в left.png, а вектор r-prime (компоненты x-prime и y-prime) указывает на соответствующий пиксель в right.png. для каждого r существует вектор смещения.
То, что я делал ранее, было то, что я вручную нашел компоненты векторного поля d и подгонял их к полиному второй степени:
![enter image description here](https://i.stack.imgur.com/6dz0e.png)
Итак, я установил:
и
![enter image description here](https://i.stack.imgur.com/wdLrT.png)
Имеет ли это для вас смысл?Можно ли получить все дельта-х (х, у) и дельта-у (х, у) с взаимной корреляцией?Кросс-корреляция должна быть максимальной, если соответствующие пиксели связаны друг с другом через векторы смещения, верно?
ОБНОВЛЕНИЕ 2
Итак, алгоритм, о котором я думал, выглядит следующим образом:
- Deform right.png
- Получить значение кросс-корреляции
- Deform right.png далее
- Получить значение кросс-корреляции и сравнить сзначение до
- Если оно больше, хорошая деформация, если нет, переделать деформацию и сделать что-то еще
- После максимизации значения взаимной корреляции, узнать, какая там деформация:)
О деформации: можно сначала сделать сдвиг в направлении x и y, чтобы максимизировать взаимную корреляцию, затем на втором шаге растянуть или сжать x- и y-зависимую и на третьем шаге деформировать квадратичные x- и yи повторить эту процедуру итеративноУ меня действительно есть проблема сделать это с целочисленными координатами.Как вы думаете, мне пришлось бы интерполировать картину, чтобы получить непрерывное распределение ??Я должен снова подумать об этом :( Спасибо всем за участие:)