Значение возвращаемого значения retval в cv2.CalibrateCameraPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Значение возвращаемого значения retval в cv2.CalibrateCamera

Сообщение Anonymous »


как сказано в заголовке, мой вопрос касается возвращаемого значения, заданного функцией калибровки камеры из OpenCv.

http://docs.opencv.org/modules/calib3d/ ... ction.html

У меня есть функциональная реализация на Python для определения внутренних параметров и коэффициентов искажения камеры с использованием черно-белой сетки.

Вопрос больше касается retval, возвращаемого функцией. Если я правильно понял, это «средняя ошибка перепроецирования. Это число дает хорошую оценку точности найденных параметров. Оно должно быть как можно ближе к нулю». как указано в

http://docs.opencv.org/doc/tutorials/ca ... ровка.html

Что именно означает значение, максимально близкое к нулю?

Например, когда я делаю это для своей веб-камеры Logitech:

Среднеквадратичное значение: 0,702660793513

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

[[ 616.30868126 0. 339.02126978] [0.605.08224927 241.64607568] [ 0. 0. 1. ]] Коэффициенты искажения:

[ 0.19805527 -0.62915986 0.00924648 0.02618232 1.02491764] В этом случае, как ошибка количественно определяет качество оценки внутренних параметров?

РЕДАКТИРОВАТЬ:

Поэтому я начал искать ответы, копнул немного глубже и проверил реализацию этой функции cpp.

Это функция, вычисляющая это значение ошибки:

static double ComputeReprojectionErrors( const вектор& objectPoints, const вектор& imagePoints, const вектор& rvecs, const вектор& tvecs, const Mat& cameraMatrix, const Mat& distCoeffs, вектор& perViewErrors ) { вектор imagePoints2; интервал я, TotalPoints = 0; двойной totalErr = 0, ошибка; perViewErrors.resize(objectPoints.size()); for( я = 0; я < (int)objectPoints.size(); я++) { projectPoints(Mat(objectPoints), rvecs, tvecs, cameraMatrix, distCoeffs, imagePoints2); ошибка = норма(Mat(imagePoints), Mat(imagePoints2), NORM_L2); int n = (int)objectPoints.size(); perViewErrors = (float)std::sqrt(err*err/n); totalErr += ошибка*ошибка; общее количество баллов += n; } return std::sqrt(totalErr/totalPoints); } Эта ошибка вычисляется с учетом tvecs и rvecs, найденных с помощью cv2.CalibrateCamera, она перепроецирует точки, используемые для поиска этих векторов перемещения и вращения, и вычисляет евклидово расстояние между перепроецированной точкой и фактическими координатами этих точек.
>
Я не думаю, что эта ошибка ограничена [0,1], а зависит от диапазона координат, используемых для калибровки. Так что это зависит от разрешения изображений, используемых для калибровки.

Может ли кто-нибудь это подтвердить/опровергнуть?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»