Какая связь между гомографией, рассчитанной для двух изображений, и гомографией, рассчитанной для одних и тех же изображений, в обратном порядке?

9

С помощью OpenCV я вычисляю гомографию, скажем, между этими двумя изображениями:

первое изображение

а также

второе изображение

Не беспокойтесь о странной белой форме на правой стороне, это из-за держателя смартфона, который я использую. Гомография, задается findHomography () функциями ( с использованием точки обнаружена с Fast детектором особенности и HammingLUT дескриптора согласованью ), это:

A = [ 1.412817430564191,  0.0684947165270289,  -517.7751355800591;
     -0.002927297251810,  1.210310757993256,     39.56631316477566;
      0.000290600259844, -9.348301989015293e-05,  1]

Теперь я использую тот же процесс для вычисления гомографии между теми же изображениями, которые были повернуты на 180 градусов (вверх ногами), используя imagemagick (на самом деле, мне было бы одинаково интересно узнать соотношение для поворота на 90 или 270 градусов ...). Они здесь:

первое изображение вверх ногами

а также

второе изображение вверх ногами

С этими изображениями, гомография становится:

B = [ 0.7148688519736168,  0.01978048500375845,  325.8330631554814;
     -0.1706219498833541,  0.8666521745094313,    64.72944905752504;
     -0.0002078857275647, -5.080048486810413e-05,  1]

Теперь вопрос в том, как вы связываете А и В? Два первых значения диагонали A близки к обратным значениям в B, но они не очень точны (.707805537 вместо 0,71486885). Моей конечной целью было бы использовать требуемое отношение для преобразования конечной матрицы, избегая вычисления дорогостоящего поворота изображения.

Стефан Пешар
источник

Ответы:

4

Я думаю, глядя на формулу для матрицы гомографии: где - матрица вращения, на которую поворачивается относительно ; - вектор перевода из в ; и являются вектором нормали плоскости и расстоянием до плоскости соответственно (см. уравнение 3D-плоскость гомография-плоскость ). Rbatabnd

Hba=RtnTd
Rbatabnd

Соотношение между двумя матрицами лежит в нормальном векторе плоскости. Таким образом, вам нужно получить вектор нормали плоскости (из матрицы гомографии) и применить к нему вращение, а затем вычислить матрицу гомографии, используя формулу выше. Для правильной декомпозиции матрицы гомографии вы можете посмотреть эти примеры кода и эту статью .

Geerten
источник
Я действительно не понимаю, что вы имеете в виду. Из уравнения я получил нормальное с Mat invT = 1./t; Mat n = invT.t() * (H - R);(на самом деле, это n/d). Теперь «применение поворота к нему» дает мне вектор 3х1, но как я могу использовать его для повторного вычисления матрицы гомографии? Спасибо
Стефан Пешар
Добавил больше информации, надеюсь, это прояснит.
Гертен
почему это - т / д, а не + т / д?
Майстро