2015-08-24 5 views
0

Раньше я использовал другой метод для определения 3D-позиций из двух 2D-изображений. Для этого (посредственного) метода мне пришлось получить 2D-координаты с точкой отсчета в центре изображения. Из-за этого я получаю много отрицательных значений. OpenCV обычно использует нижний нижний угол в качестве точки начала координат (вообще никаких отрицательных значений)OpenCV triangulatePoints - каковы правильные координаты для его подачи?

Пользователь приложения должен иметь возможность использовать любой из этих методов. Могу ли я продолжать собирать 2D-координаты таким образом, или мне нужно его изменить? Если нет, мне нужно использовать новую центральную точку изображения (результат cv::stereoCalibrate) вместо стандартной по умолчанию (frame.cols/2, frame.rows/2)?

+0

OpenCV происхождения почти определенно верхний левый – chris

+0

@ Крис мой плохой, я Я давно написал другую часть ... Я просто не помнил – Petersaber

ответ

0

При использовании OpenCV-х triangulatePoints, вам нужно передать в качестве аргументов:

  • projectionMatrixA - неявно содержит внутренние параметры камеры (фокусное расстояние & Основной точки Смещения, который является пикселем смещения слева и сверху это следует рассматривать как 0,0)
  • projectionMatrixB - кроме параметров собственной камеры, матрица проекции также отражает положение камеры относительно некоторой системы координат. Поэтому, если у вас две идентичные камеры, две матрицы проекции будут по-прежнему отличаться, потому что они расположены по-разному.
  • 2D точки, которые являются результатом 3D точек проецируется с помощью projectionMatrixA
  • 2D точек, которые являются результатом 3D точек проецируются с projectionMatrixB

Чтобы ответить на этот вопрос, нет ничего плохого в том, что двумерные точки имеют отрицательные значения.

AFAIK, в модуле calib, при работе с 2D-точками (координатами пикселей) координата (0,0) должна всегда находиться вокруг центра изображения, а не в верхнем левом углу. Поэтому, естественно, любые точки в левой области изображения имеют х < 0, и любая точка в верхней части изображения есть у < 0.