2010-09-09 1 views
2

Так, например, у меня есть such image такие линии с координатами. как (с помощью какого алгоритма) можно создать какой-то простой смысл трехмерной сцены, чтобы получить относительное расстояние от камеры до стены, которая стоит перед нами?Как получить положение камеры из таких данных, генерируемых детектором линий LSD?

+0

Думаю, вам нужны два изображения, сделанные с известным относительным расстоянием. Оба с тем же самым и известным масштабированием и отсутствием/четко выраженным искажением. –

ответ

3

Начальная точка: http://en.wikipedia.org/wiki/Pinhole_camera_model и один из справочников: Ричард Хартли и Эндрю Зиссерман (2003). Многомерная геометрия в компьютерном зрении. Пресса Кембриджского университета.

Для реализации в C++: http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html

очень простой подход: следует помнить, что это только ради объяснения общих принципов.

Предполагая, что вы знаете, меры в реальном мире сеток на стенах вы можете откалибровать камеру и таким образом получить внутренних и внешнего параметров камеры (керамическую плитку?); из этих параметров вы можете получить положение камеры в реальном мире (центр камеры).

Например, вы можете поместить происхождение в системе отсчета XYZ в правом верхнем углу, где правая вертикальная стена встречает камеру, обращенную стену, то вы измеряете в реальном мире координаты каждой плитки углов в системе отсчета координат XYZ поэтому у вас есть набор трехмерных точек (позвоните им objectPoints), единица измерения этих точек - миллиметр (или дюйм).

3D-точки не должны находиться на одной плоскости.

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

3D - 2D переписка на вход алгоритма, который дает вам параметры камеры (смотри, например, http://en.wikipedia.org/wiki/Camera_resectioning или функции OpenCV calibrateCamera http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html#cv-calibratecamera которые принимают objectPoints в качестве первого параметра и imagePoints в качестве второго параметра)

С параметры камеры вы можете получить в центре камеры что является расстояние камеры от (0,0,0) опорного кадра XYZ.

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