2017-01-14 19 views
0

Это довольно простой вопрос (я надеюсь). Следующий от 3D reconstruction from Multiple Images, Спутников и др (рис 2-13, р 348.):3D-реконструкция: решение уравнений для 3D-точек из некалиброванных изображений

Проекционных 3D реконструкции от двух некалиброванных изображений

Учитывая: Набор точечных соответствий m1 в I1 и m2 в I2 между двумя некалиброванными изображениями I1 и I2 статической сцены.

Цель: Проективная 3D реконструкция ^M сцены.

Алгоритм:

  1. Вычислить оценку ^F для фундаментальной матрицы
  2. вычислить epipole e2 из ^F
  3. вычислить 3x3-матрицы
    ^A = −(1/||e2||2) [e2]x ^F
  4. Для каждой пары соответствующих точек изображенияи m2, решить следующую систему линейных уравнений для ^M:
    ^p1 m1 = ^M и ^p2 m2 = ^A ^M + e2
    (^p1 и ^p2 ненулевые скаляры)

[Извиняюсь за форматирование. Я не знаю, как поставить шляпы над символами.]

Я довольно много ОК вплоть до шага 4. Но это было более 30 лет с момента моего последнего класса линейной алгебры, и даже тогда я не уверен, что я знал, как решить что-то подобное. Любая помощь или ссылки были бы весьма признательны.

Кстати, это своего рода продолжением на другой пост шахты:

Detecting/correcting Photo Warping via Point Correspondences

Это просто еще один способ, чтобы попытаться решить эту проблему.

ответ

1

Учитывая пару совпадающих точек изображения м и м , два соответствующих лучей из оптических центров вряд ли идеально пересекаются из-за шум в измерениях. Следовательно, решение предлагаемой системы должно быть найдено в (линейном) наименьшем квадратичном смысле, т.е.найти x = argmin_x | C x - d |^2 с (например):

/   0 \/ \ 
     | I -m1 0 | | M | 
C x = |   0 | | | 
     |  0  | | p1 | 
     | A 0 -m2 | \ p2/
     \  0 /

и

/0 \ 
    | 0 | 
d = | 0 | 
    |  | 
    | -e2 | 
    \ /

Проблема имеет 5 неизвестных для 6 уравнений.

Возможная альтернативная формулировка использует тот факт, что т и м коллинеарны с М, так m1 x M = 0 и m2 x (A M + e2) = 0 с получением линейной наименьшей проблемы квадратов x = argmin_x | C x - d |^2 с:

/[m1]x \/ \ 
C = |   | | M | 
    \ [m2]x A/\ /

и

/ 0 \ 
d = |   | 
    \ -m2 x e2/

, где [v]x является матрицей 3 x 3 кросс-продукта с v. Задача имеет 3 неизвестных для 6 уравнений, которые могут быть сведены к 4, только сохраняя нелинейные зависимости.

+0

Спасибо! То, что я промахнулся, очень похоже на ваше первое решение. К сожалению, примеры, которые я пробовал с моим решением, не сработали. Мне нужно будет сравнить его с вашим. Ваше второе решение также выглядит интересным. – Jabberwock

+0

Извините, если я плотный, но я все еще не уверен, как действовать дальше. Я вижу, как вы получили 'C',' x' & 'd'. Я знаю, как решить что-то вроде 'Cx = d', если' C' является квадратным и обратимым., Но я потерялся на чем-то вроде 'argmin_x | Cx-d |^2'. Конечно, немного, но с кодом Matlab или ссылкой на хорошую ссылку. – Jabberwock

+0

Решатель обычно полагается на QR или SVD-разложение матрицы C (см. Статью [Wikipedia] о линейных наименьших квадратах] (https://en.wikipedia.org/wiki/Linear_least_squares_ (математика)) для деталей). NumPy предоставляет функцию 'linalg.lstsq'. Я не знаком с MATLAB, но кажется, что 'x = C \ d' должен работать. – user3146587