2013-03-16 3 views
-2

Я сделал калибровки камеры, и я получил matices: Здесь свойственный:Как вычислить декартово координации учитывая внутреннюю и искажение матрицы

<?xml version="1.0"?> 
<opencv_storage> 
<Intrinsics type_id="opencv-matrix"> 
    <rows>3</rows> 
    <cols>3</cols> 
    <dt>f</dt> 
    <data> 
    6.59121826e+002 0. 2.09667786e+002 0. 6.98561340e+002 
    1.49071167e+002 0. 0. 1.</data></Intrinsics> 
</opencv_storage> 

А вот Искажение одном:

<?xml version="1.0"?> 
<opencv_storage> 
<Distortion type_id="opencv-matrix"> 
    <rows>4</rows> 
    <cols>1</cols> 
    <dt>f</dt> 
    <data> 
    1.11172847e-001 -1.00810878e-001 -1.00857615e-001 -8.45640600e-002</data></Distortion> 
</opencv_storage> 

После такого процесса я должен найти для точки A(u,v) в плоскости изображения его координация в моем декартовом рефери R(X,Y,Z).

Примечание: Ось Z параллельно оптической оси, ось X также параллельна оси u и так далее для Y и v.

Я следил за this online turorial, но не смог вычислить X, Y и Z.

Любая помощь. Спасибо заранее.

+0

Как можно получить 3D-координаты от 2D-проекции? – Mikhail

+0

Я все еще жду ответа PLZ –

ответ

1

Если внутренняя матрица K и оператор искажения D, то для данной точки A(u,v), соответствующая точка в пространстве будет (X,Y,Z)^T = t * D^-1 * K^-1 * (u,v,1)^T, где t > 0 произвольное действительное число. Предполагается, что центр камеры расположен в начале координат.

+0

Спасибо, ты имеешь в виду под D единственный вектор, который я упомянул? Мой центр камеры не в начале, но я должен сделать преобразование рефери после вычислений. –

+0

Если вектор k (вы упомянули) является коэффициентом искажения, используемым в OpenCV, то D^-1 * (x, y, 1)^T = (x * (1 + k1 * (x^2 + y^2) + k2 * (x^2 + y^2)^2, y * (1 + k1 * (x^2 + y^2) + k2 * (x^2 + y^2)^2, 1) '(здесь исправляются только радиальные искажения). См. эту страницу для получения дополнительной информации: http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html – user502144