2015-05-17 4 views
3

Я пытаюсь реализовать алгоритм визуального одометра через матлаб. Согласно шагу 2 в http://en.wikipedia.org/wiki/Visual_odometry. Мне нужно выполнить коррекцию изображения до обнаружения, согласования и оценки движения. Я думаю, мне нужно исказить изображение, как функция (here) в matlab. Могу ли я использовать исходный внутренний и внешний параметр для оценки движения после согласования функции? Я считаю, что внутренний параметр для искаженного изображения.Коррекция изображения в визуальной особености

Я смущен тем, что в Camera Calibration Toolbox для Matlab. Внутренняя матрица может возвращать пиксель обратно в искаженную плоскость. Если я сначала сделаю коррекцию изображения перед обнаружением функции согласно шагу 2 в wiki. Я думаю, что исходная внутренняя матрица вызовет некоторую ошибку.

ответ

1

Вот шаги, которые нужно сделать:

  1. Эстимейт внутренние параметры камеры с помощью калибровочной цели. Вы можете использовать панель инструментов для калибровки камеры Matlab, или http://www.vision.caltech.edu/bouguetj/calib_doc/
  2. Не спешите с этим шагом и убедитесь, что калибровка правильная. На панели инструментов калибровки вы получите статистику о том, насколько хороша . Убедитесь, что ошибка повторения (и стандартное отклонение ) мала. Также убедитесь, что вы собираете изображения цели калибровки, которые закрывают подачу изображения камеры различными позициями.
  3. Калибровка, которую вы получаете, включает встроенную матрицу 3x3 (K) из неискаженного изображения , а также вектор коэффициенты искажения.

    Используйте K и коэффициенты искажения для «искажения» изображений.

  4. Отсоедините все ваши изображения и сохраните их на диск.
  5. С этого момента используйте неискаженные изображения (с матрицей K) для выполнения VO или других задач.

Сведения об ответственности. Вы можете делать VO без неискаженных изображений, но в зависимости от степени искажения изображения с использованием необработанных изображений может повлиять на детектор функций/дескрипторов. Кроме того, больше работы на одну итерации, чтобы отобразить между искаженной и неискаженной

Удачей

+0

Цистерны! Я попробую. –

0

Во-первых, есть несколько визуальных библиотек одометра, которые уже существуют для matlab. Одним из них является http://www.cvlibs.net/software/libviso/

Однако, если вы планируете реализовать его самостоятельно и ищут способ, чтобы исправить ваши изображения, вы можете получить внутренние/внешние параметры камеры с помощью камеры калибровки MatLab инструментов: http://www.vision.caltech.edu/bouguetj/calib_doc/

+0

Да, я знаю libviso2. Образ, который он использует, не искажает. Я думаю, что это сначала исказило изображение. Но я не знаю, сделаю ли сначала коррекцию изображений. Сохраняется ли внутренняя и внешняя матрица? Поскольку в наборе инструментов калибровки указано, что внутренняя матрица может только вернуть точку обратно в искаженную плоскость. –

+0

Скорее всего, они действительно используют неискаженные изображения. Как показано в примерах http: //www.vision.caltech.edu/bouguetj/calib_doc/htmls/example.html вы можете использовать панель инструментов, чтобы искажать изображения, как только вы откалибруете камеру. –

+0

Если я сначала искажаю свои изображения. Могу ли я использовать одну и ту же внутреннюю и внешнюю матрицу? Или не искажать каждое изображение и оценивать новую внутреннюю и внешнюю матрицу? –

0

Чтобы использовать функцию undistortImage вам необходимо откалибровать камеру с помощью или estimateCameraParameters функции в компьютерном зрении инструментов системы Camera Calibrator App.

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