2012-02-14 2 views
3

Я уже сделал сравнение двух изображений одной и той же сцены, которые снимаются одной камерой с разными углами обзора (скажем, влево и вправо), используя SURF в emgucv (C#). И это дало мне матрицу гомографии 3х3 для двумерной трансформации. Но теперь я хочу сделать эти 2 изображения в 3D-среде (используя DirectX). Для этого мне нужно рассчитать относительное расположение и ориентацию 2-го изображения (справа) до 1-го изображения (слева) в трехмерной форме. Как я могу рассчитать Вращение и перевод матрицы для 2-го изображения?Как вычислить матрицы вращения и перевода из гомографии?

Мне нужно также значение z для второго изображения.

Я прочитал что-то под названием «Разложение гомограхи». Это так?

Есть ли кто-нибудь, кто знаком с разложением гомографии и есть ли какой-либо алгоритм, который он реализует?

Заранее благодарим за любую помощь.

+0

Являются ли изображения плоской поверхности? Гомографии работают только на плоских поверхностях. – jlewis42

ответ

6

Гомография работает только для планарных сцен (т. Е. Все ваши точки являются копланарными). Если это так, то гомография является проективным преобразованием и ее можно разложить на ее компоненты.

Но если ваша сцена не является копланарной (что, я думаю, имеет место из вашего описания), тогда это займет немного больше работы. Вместо гомографии вам необходимо рассчитать fundamental matrix (который emgucv сделает для вас). Фундаментальная матрица представляет собой комбинацию внутренней матрицы камеры (K), относительного вращения (R) и трансляции (t) между двумя видами. Восстановление вращения и перевода довольно прямолинейно, если вы знаете K. Похоже, у emgucv есть методы для camera calibration. Я не знаком с их конкретным методом, но они обычно включают в себя несколько изображений сцены с известной геометрией.

+0

Спасибо jlewis42 за внимание к этому вопросу. – mili

+0

Но я вычисляю фундаментальную матрицу как и сказал (используя случайные точки генерации и проектирую ее с использованием гомографии), а также вычисляю внутреннюю матрицу камеры, используя метод шахматной доски EmguCV. Но я не могу найти какой-либо метод для получения R и T непосредственно из фундаментальной матрицы. После этого я вычисляю основную матрицу как описано в [здесь] (http://en.wikipedia.org/wiki/Fundamental_matrix_%28computer_vision%29) и получаю R и T, как описано в [здесь] (http: // en .wikipedia.org/wiki/Essential_matrix # Определение_R_and_t_from_E), поэтому он не дал мне приемлемого ответа. Где могла быть ошибка? – mili

+1

К сожалению, я не могу ответить на этот вопрос, не зная, как результат неправильный. Вот несколько вещей, которые нужно изучить: Вы уверены, что все ваши соответствия пунктов действительны? Проверьте правильность базовой матрицы с использованием эпиполярной геометрии (https://en.wikipedia.org/wiki/Epipolar_geometry). В принципе, если вы умножаете точку в левом изображении на фундаментальную матрицу, она даст вам уравнение линии в правом изображении (в форме ax + by + c = 0). Соответствующая точка в правильном изображении будет лежать на этой линии. Также попробуйте перекомпоновать K, R и t, чтобы увидеть, верните ли вы тот же F – jlewis42

6

Чтобы выяснить движение камеры (точное вращение и перемещение до коэффициента масштабирования), необходимо

  • Вычислить фундаментальную матрица F, например, с использованием восьми пунктов алгоритма
  • Вычислить Essential матрицы E = A'FA, где а является матрицей внутренней камеры
  • Decompose E, который по определению Tx * R с помощью SVD в E = ULV»
  • Создать специальную матрицу 3х3

    0 -1 0 
    W = 1 0 0  
        0 0 1 
    

, который помогает выполнить разложение:

R = UW -1 В Т, Тх = ULWU Т, где

 0 -tx ty 
Tx = tz 0 -tx 
    -ty tx 0 
  • Так как E может иметь произвольный знак, а W можно заменить на Winv, мы имеем 4 различных решения и должны выбрать один w hich производит большинство точек перед камерой.
3

Прошло некоторое время с тех пор, как вы задали этот вопрос. К настоящему времени есть несколько хороших ссылок на эту проблему.

Одним из них является «приглашением к 3D-изображению» Мо, глава 5 из он свободен здесь http://vision.ucla.edu//MASKS/chapters.html

Кроме того, видение Toolbox Питера Корки включает средства для выполнения этого. Однако он не объясняет много математики разложения

+0

Спасибо за ссылки – mili

Смежные вопросы