является ли средняя ошибка 1,5 при калибровке стереокамеры плохой? использование opencv

#opencv

#opencv

Вопрос:

я использовал пример кода opencv для калибровки стереокамеры, чтобы получить встроенные и внешние характеристики моей стереокамеры. Я использовал 149 пар изображений, и программа обнаружила 114 пар изображений

Результат моей калибровки:

 ..... 114 pairs have been successfully detected.
Running stereo calibration ...
done with RMS error = 1.60208
average epipolar error = 1.15512
  

я знаю, что ошибка должна быть ниже 1, но я получаю ошибку только ниже 1 при небольшом количестве пар изображений. поэтому я не уверен, хороший мой результат или плохой.

Комментарии:

1. Ошибка при калибровке обычно заключается в ошибке перепроектирования, при которой проецируются 3D точки с использованием вычисленных внутренних и внешних параметров, а затем вычисляется разница между проецируемыми точками и обнаруженными 2D точками. Если у вас плохо обнаружены некоторые точки 2D, даже если у вас идеально рассчитаны параметры, ошибка будет выше. Таким образом, может быть, что либо в некоторых точках высокий уровень шума, либо параметры неверны.

2. Ошибка должна быть ниже 1, чтобы получить точные параметры калибровки и исправления. Вместо 149 изображений просто выберите около 50 и выполните калибровку.

3. @api55 в чем разница между проецируемыми точками и обнаруженными 2D-точками?

4. @Gopiraj получу ли я хорошую калибровку, даже если сделаю меньше пар изображений?

5. @ChesterLigutan Да, вы все равно получите хорошую калибровку. Как указано в ответе, выбирайте надежные изображения для калибровки, иногда могут возникать ошибки при определении шаблона калибровки. Итак, визуально проверьте и продолжайте включать изображение для калибровки

Ответ №1:

Вы должны быть в состоянии получить ошибку ниже 1, но это не так уж плохо. Я также выполняю калибровку примерно для 100 изображений. Мне часто приходилось отбрасывать несколько изображений, обнаружение которых было ненадежным. Если вы уменьшили количество изображений до 10, то калибровка может не соответствовать этим случаям. В этом случае ошибка не была бы достоверной.

В процессе калибровки проблемы, с которыми я столкнулся, возникли из-за настройки калибровки. Мои рекомендации следующие:

  • Убедитесь, что ваш шаблон калибровки идеально ровный. В моем случае я напечатал на клейкой бумаге и приклеил ее на кусок стекла.

  • Убедитесь, что ваш шаблон калибровки не симметричен по вращению, иначе оценка позы может быть неверной.

  • Проверьте обнаружение промежуточных точек шаблона. В opencv есть несколько примеров, чтобы показать углы или окружности, центрирующие обнаруженные точки.

  • Ошибка также может отображаться для каждого кадра. Это может помочь вам понять, с какими изображениями у вас проблема. Если вы видите, что на этих изображениях действительно есть проблемы с обнаружением, вы можете их отбросить.

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

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

  • Если ваша глубина резкости мала и из-за этого у вас получаются размытые изображения до / после фокусировки, измените шаблон шахматной доски на шаблон кругов (функции также доступны в opencv).

  • Если у вас нет сильных искажений на изображениях (например, на фотографии с iphone на самом деле не видно сильного искажения, подобного «рыбьему глазу»), рассмотрите возможность принудительного использования K3 = 0.

  • В моем случае я исправил «основную точку» в середине изображения, потому что алгоритм всегда находил сумасшедшие значения для этих параметров, например, для K3.

Надеюсь, это немного поможет. Удачи!