Это продолжение другого вопроса о переполнении стека, здесь: 3D-соответствия из фундаментальной матрицы

Как и в этом вопросе, я пытаюсь получить матрицу камеры из основной матрицы, конечной целью является трехмерная реконструкция из двухмерных точек. Ответ, данный там, хороший и правильный. Я просто этого не понимаю. В нем говорится, цитирую: «Если у вас есть доступ к учебнику Хартли и Зиссермана, вы можете проверить раздел 9.5.3, где вы найдете то, что вам нужно». Он также предоставляет ссылку на исходный код.

А теперь вот что такое раздел 9.5.3 документа книга среди прочего говорит:

Результат 9.12. Ненулевая матрица F является фундаментальной матрицей, соответствующей паре матриц камер P и P тогда и только тогда, когда PTFP кососимметрична.

Это, по-моему, бред. (Я искал кососимметричный - это означает, что инверсия его отрицательная. Я понятия не имею, как это относится к чему-либо.) А теперь приведен исходный код (source< /а>):

[U,S,V] = svd(F);
e = U(:,3);
P = [-vgg_contreps(e)*F e];

Это тоже загадка.

Итак, что я хочу знать, так это то, как одно объясняет другое? Получение этого кода из этого утверждения кажется черной магией. Как мне или кому-либо еще понять, что «ненулевая матрица F является фундаментальной матрицей, соответствующей паре матриц камер P и P, тогда и только тогда, когда PTFP кососимметричен». означает то, что код говорит вам делать, а именно: «Возьмите разложение по сингулярным значениям». Возьмите первую матрицу. Возьмите третий столбец этого. Выполните какое-то странное перераспределение его значений. Это твой ответ. Как бы я придумал этот код самостоятельно?

Может ли кто-нибудь объяснить мне раздел 9.5.3 и этот код на простом английском языке?

1
john ktejik 23 Ноя 2019 в 07:25

1 ответ

Ага, это "ПТФП" на самом деле то, о чем я тоже задавался вопросом и не мог найти ответ в литературе. Однако вот что я понял:

Упомянутая вами кососимметричная матрица 4x4 — это не просто матрица. На самом деле это двойная матрица Плюкера базовой линии (см. также https://en.wikipedia .org/wiki/Pl%C3%BCcker_matrix). Другими словами, он дает вам только линию, на которой расположены центры камер, что бесполезно для задач реконструкции как таковых.

Упомянутое вами условие идентично более популярному факту, что фундаментальная матрица для представления 1 и 0 является отрицательным транспонированием фундаментальной матрицы для представлений 0 и 1 (здесь используется синтаксис MATLAB/Octave)

Сначала рассмотрим, что фундаментальная матрица отображает точку x0 на одном изображении в линию l1 на другом.

l1=F*x0

Далее, учтите, что транспонирование проекционной матрицы обратно проецирует линию l1 в изображении на плоскость E в пространстве.

E=P1'*l1

(Я нахожу это красиво простым и заниженным на большинстве уроков геометрии/компьютерного зрения)

Теперь я буду использовать геометрический аргумент: две линии являются соответствующими эпиполярными линиями, если они соответствуют одной и той же эпиполярной плоскости, т. е. обратная проекция любой линии дает одну и ту же эпиполярную плоскость. Алгебраически:

E=P0'*l0
E=P1'*l1

Таким образом (важное уравнение)

P0'*l0=P1'*l1

Теперь мы почти у цели. Предположим, у нас есть трехмерная точка X и две ее проекции.

x0=P0*X
x1=P1*X

И эпиполярные линии

l1=F*x0
l0=-F'*x1

Мы можем просто подставить это в важное уравнение, и мы получим для всех X

P0'*-F'*P1*X=P1'*F*P0*X

И наконец

P0'*-F'*P1=P1'*F*P0

Как видите, левая часть — это отрицательное транспонирование правой части. Таким образом, эта матрица представляет собой кососимметричную матрицу 4x4.

Я также опубликовал эти мысли в разделе II B (ближе к концу абзаца) в следующей статье. Следует также объяснить, почему эта матрица является представлением базовой линии.

Aichert, André, et al. "Epipolar consistency in transmission imaging."
IEEE transactions on medical imaging 34.11 (2015): 2205-2219.
https://www.ncbi.nlm.nih.gov/pubmed/25915956

Последнее замечание для @john ktejik: косая симметрия означает, что матрица идентична ее отрицательному транспонированию (НЕ обратному транспонированию)

2
André Aichert 17 Дек 2019 в 15:43