У вас есть соответствия левого и правого изображений {p_i} <-> {p'_i}
, где p_i = (x_i, y_i)
и т. Д.
Нормализация их в единицу квадрата означает вычисление двух сдвигов m=(mx, my)
, m'=(mx', my')
и двух шкал s=(sx,sy)
, s'=(sx',sy')
таким образом, что q_i = (p_i - m) / s
и q_i' = (p_i' - m') / s'
, а также точки преобразованного изображения {q_i}
и {q'_i}
центрированы в (0,0)
и приблизительно содержатся в квадрате длины стороны единицы.Небольшая математика показывает, что хорошим выбором для терминов m являются средние значения координат x, y в каждом наборе точек изображения, а для терминов s вы используете стандартные отклонения (или двойное стандартное отклонение), умноженные на 1 / sqrt (2).
Вы можете выразить это нормализующее преобразование в матричной форме: q = T p
, где T = [[1/sx, 0, -mx/sx], [0, 1/sy, -my/sy], [0, 0, 1]]
, а также q' = T' p'
.
Затем вы вычисляете гомографию K
между {q_i}
и {q'_i}
баллов: q_i' = K q_i
.
Наконец, вы денормализуете K
в исходные (ненормализованные) координаты, таким образом: H = inv(T') K T
, а H
- желаемая гомография, отображающая {p}
в {p'}
.