Калибровка камеры в MATLAB

Я новичок в калибровке камеры и пытаюсь работать с приложением для калибровки камеры из набора инструментов компьютерного зрения MATLAB.

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

Итак, теперь я немного смущен тем, что мне делать с объектом «cameraParameter», который был создан при выполнении калибровки.

Итак, мои вопросы: (1) Что мне делать с созданным объектом cameraParameter? (2) Как мне использовать этот объект, когда я использую камеру для захвата изображений чего-либо? (3) Нужна ли мне шахматная доска каждый раз, когда я делаю снимки для своего эксперимента? (4) Должна ли камера каждый раз располагаться в одном и том же месте?

Извините, если эти вопросы действительно начального уровня, калибровка камеры для меня нова, и я не смог найти ответы.

Спасибо большое за вашу помощь.


person Ali P    schedule 23.08.2014    source источник


Ответы (3)


Я предполагаю, что вы работаете только с одной камерой, поэтому в игре присутствуют только внутренние параметры камеры.

(1), (2). После калибровки камеры вам необходимо использовать эти параметры, чтобы не искажать изображение. Камеры не принимают изображения такими, какие они есть на самом деле, так как объективы немного искажают его, а параметры калибровки предназначены для фиксации изображений. Подробнее в википедии.

О том, когда нужно перекалибровать камеру (3): если настроить камеру и не менять ее фокус, то можно использовать те же параметры калибровки, но после изменения фокусного расстояния необходима перекалибровка.

(4) Пока вы не меняете фокусное расстояние и не используете систему стереокамер, вы можете свободно менять камеру.

person Ander Biguri    schedule 23.08.2014
comment
Большое спасибо за ответ. На самом деле я использую устройство Kinect. Поэтому я использовал камеру RGB для получения изображений RGB и калибровал их, а затем получал ИК-изображения и калибровал их отдельно. Это правильный способ сделать это? Я предполагаю, что в случае с Kinect он подпадает под систему стереокамер, поэтому положение Kinect будет иметь значение. Я прав? Еще раз спасибо за помощь! - person Ali P; 24.08.2014
comment
@user2441667 user2441667 нет, в случае кинека положение не имеет значения, в основном потому, что важно относительное положение между камерами. Однако я вижу, что вы совсем запутались в компьютерном зрении, и очень рекомендую вам прочитать книгу. Кажется, вам нужен более обширный ответ, который может поместиться на этом форуме. - person Ander Biguri; 24.08.2014
comment
Большое спасибо за ваш ответ. Да, я только начал заниматься компьютерным зрением и пробую базовые примеры, которые могу найти в Интернете. Есть ли у вас какие-либо рекомендации, которые могут помочь мне ускориться? Спасибо - person Ali P; 25.08.2014
comment
@user2441667 user2441667 Не особенно, но погуглив, вы можете найти несколько книг по компьютерному зрению. - person Ander Biguri; 25.08.2014
comment
@ user2441667 Кроме того, принимайте ответы, которые вам нравятся. - person Ander Biguri; 26.08.2014

То, что вам нужно, — это два отдельных шага калибровки: выравнивание изображения глубины с цветным изображением и преобразование изображения глубины в облако точек. Обе функции предоставляются Windows SDK. Существуют оболочки Matlab, которые вызывают эти функции SDK. Вы можете выполнить собственную калибровку только в том случае, если вас не устраивает информация о калибровке производителя, хранящаяся на Kinect. Обычно погрешность находится в пределах 1-2 пикселей при выравнивании 2D и 4 мм при 3D.

person ZHENG WU    schedule 26.08.2014

Когда вы калибруете одну камеру, вы можете использовать полученный объект cameraParameters для нескольких целей. Во-первых, вы можете удалить эффекты дисторсии объектива с помощью функции undistortImage, для которой требуется cameraParameters. Существует также функция под названием extrinsics, которую вы можете использовать для определения местоположения откалиброванной камеры в мире относительно какого-либо эталонного объекта (например, шахматной доски). Вот пример того, как вы можете использовать одну камеру для измерения плоских объектов.

Датчик глубины, такой как Kinect, немного другой зверь. Он уже дает вам глубину в реальных единицах для каждого пикселя. Дополнительная калибровка Kinect полезна, если вам нужна более точная 3D-реконструкция, чем та, которую он дает вам из коробки.

Как правило, было бы полезно, если бы вы могли рассказать нам больше о том, чего вы пытаетесь достичь с помощью своих экспериментов.

person Dima    schedule 25.08.2014
comment
Спасибо за ваш ответ. Ну, я пытаюсь отследить местоположение маркера, который находится перед Kinect. Поэтому мне сказали, что я должен сначала откалибровать Kinect, чтобы удалить эти искажения объектива. Поэтому в ходе дальнейших исследований я заметил, что мне нужно выполнить сопоставление глубины цвета, чтобы получить Z-координаты маркера, который я вижу на изображении RGB. Итак, для этого мне нужно выполнить стереокалибровку камер в Kinect? Спасибо - person Ali P; 26.08.2014