Матрица камеры

Концепция геометрии компьютерного зрения

В компьютерном зрении матрица камеры или матрица проекции (камеры) — это матрица , которая описывает отображение камеры-обскуры из трехмерных точек в мире в двухмерные точки на изображении. 3 × 4 {\displaystyle 3\times 4}

Пусть — представление 3D-точки в однородных координатах (4-мерный вектор), а — представление изображения этой точки в камере-обскуре (3-мерный вектор). Тогда справедливо следующее соотношение: х {\displaystyle \mathbf {x} } у {\displaystyle \mathbf {y} }

у С х {\displaystyle \mathbf {y} \sim \mathbf {C} \,\mathbf {x} }

где — матрица камеры, а знак означает, что левая и правая части равны, за исключением умножения на ненулевой скаляр : С {\displaystyle \mathbf {C} } {\displaystyle \,\сим } к 0 {\displaystyle к\neq 0}

у = к С х . {\displaystyle \mathbf {y} =k\,\mathbf {C} \,\mathbf {x} .}

Поскольку матрица камеры участвует в отображении между элементами двух проективных пространств , ее также можно рассматривать как проективный элемент. Это означает, что у нее всего 11 степеней свободы, поскольку любое умножение на ненулевой скаляр приводит к эквивалентной матрице камеры. С {\displaystyle \mathbf {C} }

Вывод

Отображение координат трехмерной точки P в двухмерные координаты проекции точки на плоскость изображения, согласно модели камеры-обскуры , определяется выражением

( у 1 у 2 ) = ф х 3 ( х 1 х 2 ) {\displaystyle {\begin{pmatrix}y_{1}\\y_{2}\end{pmatrix}}={\frac {f}{x_{3}}}{\begin{pmatrix}x_{1}\\x_{2}\end{pmatrix}}}

где — трехмерные координаты точки P относительно системы координат, центрированной на камере, — результирующие координаты изображения, а f — фокусное расстояние камеры, для которого мы предполагаем f > 0. Кроме того, мы также предполагаем, что x 3 > 0 . ( х 1 , х 2 , х 3 ) {\displaystyle (x_{1},x_{2},x_{3})} ( у 1 , у 2 ) {\displaystyle (y_{1},y_{2})}

Для вывода матрицы камеры выражение выше переписывается в терминах однородных координат. Вместо 2D-вектора мы рассматриваем проективный элемент (3D-вектор) , а вместо равенства мы рассматриваем равенство с точностью до масштабирования на ненулевое число, обозначаемое . Сначала мы записываем однородные координаты изображения как выражения в обычных 3D-координатах. ( у 1 , у 2 ) {\displaystyle (y_{1},y_{2})} у = ( у 1 , у 2 , 1 ) {\displaystyle \mathbf {y} =(y_{1},y_{2},1)} {\displaystyle \,\sim }

( y 1 y 2 1 ) = ( f x 3 x 1 f x 3 x 2 1 ) ( x 1 x 2 x 3 f ) {\displaystyle {\begin{pmatrix}y_{1}\\y_{2}\\1\end{pmatrix}}={\begin{pmatrix}{\frac {f}{x_{3}}}x_{1}\\{\frac {f}{x_{3}}}x_{2}\\1\end{pmatrix}}\sim {\begin{pmatrix}x_{1}\\x_{2}\\{\frac {x_{3}}{f}}\end{pmatrix}}}

Наконец, трехмерные координаты также выражаются в однородном представлении , и вот как выглядит матрица камеры: x {\displaystyle \mathbf {x} }

( y 1 y 2 1 ) ( 1 0 0 0 0 1 0 0 0 0 1 f 0 ) ( x 1 x 2 x 3 1 ) {\displaystyle {\begin{pmatrix}y_{1}\\y_{2}\\1\end{pmatrix}}\sim {\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&{\frac {1}{f}}&0\end{pmatrix}}\,{\begin{pmatrix}x_{1}\\x_{2}\\x_{3}\\1\end{pmatrix}}}   или   y C x {\displaystyle \mathbf {y} \sim \mathbf {C} \,\mathbf {x} }

где находится матрица камеры, которая здесь задается выражением C {\displaystyle \mathbf {C} }

C = ( 1 0 0 0 0 1 0 0 0 0 1 f 0 ) {\displaystyle \mathbf {C} ={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&{\frac {1}{f}}&0\end{pmatrix}}} ,

и соответствующая матрица камеры теперь становится

C = ( 1 0 0 0 0 1 0 0 0 0 1 f 0 ) ( f 0 0 0 0 f 0 0 0 0 1 0 ) {\displaystyle \mathbf {C} ={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&{\frac {1}{f}}&0\end{pmatrix}}\sim {\begin{pmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{pmatrix}}}

Последний шаг является следствием того, что он сам является проективным элементом. C {\displaystyle \mathbf {C} }

Матрица камеры, полученная здесь, может показаться тривиальной в том смысле, что она содержит очень мало ненулевых элементов. Это во многом зависит от конкретных систем координат, выбранных для 3D и 2D точек. Однако на практике распространены другие формы матриц камеры, как будет показано ниже.

Положение камеры

Матрица камеры, полученная в предыдущем разделе, имеет нулевое пространство , охватываемое вектором C {\displaystyle \mathbf {C} }

n = ( 0 0 0 1 ) {\displaystyle \mathbf {n} ={\begin{pmatrix}0\\0\\0\\1\end{pmatrix}}}

Это также однородное представление трехмерной точки с координатами (0,0,0), то есть «центр камеры» (он же входной зрачок ; положение отверстия камеры-обскуры ) находится в точке O. Это означает, что центр камеры (и только эта точка) не может быть сопоставлен камерой с точкой в ​​плоскости изображения (или, что эквивалентно, он сопоставлен со всеми точками на изображении, поскольку каждый луч на изображении проходит через эту точку).

Для любой другой трехмерной точки с , результат хорошо определен и имеет вид . Это соответствует точке на бесконечности в проективной плоскости изображения (даже если плоскость изображения принять за евклидову плоскость , соответствующей точки пересечения не существует). x 3 = 0 {\displaystyle x_{3}=0} y C x {\displaystyle \mathbf {y} \sim \mathbf {C} \,\mathbf {x} } y = ( y 1 y 2 0 ) {\displaystyle \mathbf {y} =(y_{1}\,y_{2}\,0)^{\top }}

Нормализованная матрица камеры и нормализованные координаты изображения

Полученную выше матрицу камеры можно упростить еще больше, если предположить, что f = 1 :

C 0 = ( 1 0 0 0 0 1 0 0 0 0 1 0 ) = ( I 0 ) {\displaystyle \mathbf {C} _{0}={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{pmatrix}}=\left({\begin{array}{c|c}\mathbf {I} &\mathbf {0} \end{array}}\right)}

где здесь обозначает единичную матрицу. Обратите внимание, что матрица здесь делится на конкатенацию матрицы и 3-мерного вектора. Матрицу камеры иногда называют канонической формой . I {\displaystyle \mathbf {I} } 3 × 3 {\displaystyle 3\times 3} 3 × 4 {\displaystyle 3\times 4} C {\displaystyle \mathbf {C} } 3 × 3 {\displaystyle 3\times 3} C 0 {\displaystyle \mathbf {C} _{0}}

До сих пор все точки в трехмерном мире были представлены в системе координат, центрированной на камере , то есть в системе координат, которая имеет начало в центре камеры (местоположение пинхола пинхол -камеры ). Однако на практике трехмерные точки могут быть представлены в терминах координат относительно произвольной системы координат (X1', X2', X3'). Предполагая, что оси координат камеры (X1, X2, X3) и оси (X1', X2', X3') являются евклидовыми (ортогональными и изотропными), существует уникальное евклидово трехмерное преобразование (вращение и трансляция) между двумя системами координат. Другими словами, камера не обязательно находится в начале координат, глядя вдоль оси z .

Две операции вращения и переноса трехмерных координат можно представить в виде двух матриц 4 × 4 {\displaystyle 4\times 4}

( R 0 0 1 ) {\displaystyle \left({\begin{array}{c|c}\mathbf {R} &\mathbf {0} \\\hline \mathbf {0} &1\end{array}}\right)} и ( I t 0 1 ) {\displaystyle \left({\begin{array}{c|c}\mathbf {I} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)}

где — матрица вращения , а — вектор трехмерного переноса. Когда первая матрица умножается на однородное представление трехмерной точки, результатом является однородное представление повернутой точки, а вторая матрица выполняет вместо этого перенос. Выполнение двух операций последовательно, т.е. сначала поворот, а затем перенос (с вектором переноса, заданным в уже повернутой системе координат), дает объединенную матрицу поворота и переноса R {\displaystyle \mathbf {R} } 3 × 3 {\displaystyle 3\times 3} t {\displaystyle \mathbf {t} }

( R t 0 1 ) {\displaystyle \left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)}

Предполагая, что и являются именно поворотами и переносами, которые связывают две системы координат (X1,X2,X3) и (X1',X2',X3') выше, это означает, что R {\displaystyle \mathbf {R} } t {\displaystyle \mathbf {t} }

x = ( R t 0 1 ) x {\displaystyle \mathbf {x} =\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)\mathbf {x} '}

где — однородное представление точки P в системе координат (X1',X2',X3'). x {\displaystyle \mathbf {x} '}

Предполагая также, что матрица камеры задана как , отображение координат в системе (X1,X2,X3) в однородные координаты изображения становится C 0 {\displaystyle \mathbf {C} _{0}}

y C 0 x = ( I 0 ) ( R t 0 1 ) x = ( R t ) x {\displaystyle \mathbf {y} \sim \mathbf {C} _{0}\,\mathbf {x} =\left({\begin{array}{c|c}\mathbf {I} &\mathbf {0} \end{array}}\right)\,\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)\mathbf {x} '=\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \end{array}}\right)\,\mathbf {x} '}

Следовательно, матрица камеры, связывающая точки в системе координат (X1',X2',X3') с координатами изображения, имеет вид

C N = ( R t ) {\displaystyle \mathbf {C} _{N}=\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \end{array}}\right)}

конкатенация трехмерной матрицы вращения и трехмерного вектора перемещения.

Этот тип матрицы камеры называется нормализованной матрицей камеры , он предполагает фокусное расстояние = 1 и что координаты изображения измеряются в системе координат, где начало координат находится на пересечении оси X3 ​​и плоскости изображения и имеет те же единицы, что и трехмерная система координат. Результирующие координаты изображения называются нормализованными координатами изображения .

Положение камеры

Опять же, нулевое пространство нормализованной матрицы камеры, описанной выше, охватывается 4-мерным вектором C N {\displaystyle \mathbf {C} _{N}}

n = ( R 1 t 1 ) = ( n ~ 1 ) {\displaystyle \mathbf {n} ={\begin{pmatrix}-\mathbf {R} ^{-1}\,\mathbf {t} \\1\end{pmatrix}}={\begin{pmatrix}{\tilde {\mathbf {n} }}\\1\end{pmatrix}}}

Это также, опять же, координаты центра камеры, теперь относительно системы (X1',X2',X3'). Это можно увидеть, применив сначала поворот, а затем перенос к 3-мерному вектору , и результатом будет однородное представление 3D-координат (0,0,0). n ~ {\displaystyle {\tilde {\mathbf {n} }}}

Это подразумевает, что центр камеры (в его однородном представлении) лежит в нулевом пространстве матрицы камеры, при условии, что он представлен в терминах трехмерных координат относительно той же системы координат, к которой относится матрица камеры.

Нормализованную матрицу камеры теперь можно записать как C N {\displaystyle \mathbf {C} _{N}}

C N = R ( I R 1 t ) = R ( I n ~ ) {\displaystyle \mathbf {C} _{N}=\mathbf {R} \,\left({\begin{array}{c|c}\mathbf {I} &\mathbf {R} ^{-1}\,\mathbf {t} \end{array}}\right)=\mathbf {R} \,\left({\begin{array}{c|c}\mathbf {I} &-{\tilde {\mathbf {n} }}\end{array}}\right)}

где — трехмерные координаты камеры относительно системы (X1',X2',X3'). n ~ {\displaystyle {\tilde {\mathbf {n} }}}

Матрица общей камеры

Учитывая отображение, произведенное нормализованной матрицей камеры, результирующие нормализованные координаты изображения могут быть преобразованы посредством произвольной 2D- гомографии . Это включает в себя 2D-перемещения и вращения, а также масштабирование (изотропное и анизотропное), а также общие 2D- перспективные преобразования . Такое преобразование может быть представлено в виде матрицы , которая отображает однородные нормализованные координаты изображения в однородные преобразованные координаты изображения : 3 × 3 {\displaystyle 3\times 3} H {\displaystyle \mathbf {H} } y {\displaystyle \mathbf {y} } y {\displaystyle \mathbf {y} '}

y = H y {\displaystyle \mathbf {y} '=\mathbf {H} \,\mathbf {y} }

Подставив приведенное выше выражение для нормализованных координат изображения в терминах трехмерных координат, получим

y = H C N x {\displaystyle \mathbf {y} '=\mathbf {H} \,\mathbf {C} _{N}\,\mathbf {x} '}

Это создает наиболее общую форму матрицы камеры.

C = H C N = H ( R t ) {\displaystyle \mathbf {C} =\mathbf {H} \,\mathbf {C} _{N}=\mathbf {H} \,\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \end{array}}\right)}

Смотрите также

Ссылки

  • Ричард Хартли и Эндрю Зиссерман (2003). Многомерная геометрия в компьютерном зрении . Cambridge University Press. ISBN 0-521-54051-8.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Camera_matrix&oldid=1162278810#Camera_space"