2013-11-29 5 views
0

Моя постановка проблемы очень проста. Но я не могу получить для меня работу по калибровке opencv. Я использую код отсюда: source code. Мне нужно делать снимки параллельно камере на фиксированном расстоянии. Я попытался взять тестовые изображения (около 20 из них) только параллельно с камерой, а также в разных плоскостях. Также я изменил размер и квадрат.калибровка камеры для одиночной плоскости

Что было бы лучшим способом откалибровать в этом сценарии? distorted image undistorted image

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

После тщательного просмотра изображения искажение подушечки, похоже, было исправлено. Но «трапециевидное» искажение все еще остается. Поскольку камера установлена ​​в закрытом ящике, плоскости, на которых я могу снимать изображения, ограничены.

ответ

0

думать о проблеме калибровки, как найти матрицу проекции P:

image_points = P * 3d_points, где P = внутренняя * внешняя

Теперь просто голые со мной: Вы в основном заинтересованы в собственной части, но алгоритм калибровки должен найти как внутреннюю, так и внешнюю. Теперь каждый столбец матрицы проекции может быть получен, если вы выберете трехмерную точку на бесконечности, например xInf = [1, 0, 0, 0]. Эта точка находится на бесконечности, потому что, когда вы преобразовываете ее из однородных координат в декартовы, вы получаете [1/0, 0, 0]. Если вы умножаете матрицу проекции с бесконечной точкой, вы получите ее соответствующий столбец (1-й для Xinf, второй для yInf, 3-й для zInf и 4-й для центра камеры).

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

+0

Не знаю, если это лучшее решение, но в настоящее время я использую перспективный инструмент в Gimp и использовать матрицу преобразования в opencv. – harsh

0

Чтобы упростить то, что сказал Влад: Теоретически невозможно откалибровать камеру с тестовыми изображениями только параллельно с камерой. Вы должны изменить ориентацию калибровочной платы. Фактически, вы должны иметь разную ориентацию в каждом тестовом изображении.

Заканчивать первых двух изображений в ссылке ниже, чтобы увидеть, как калибровка плата должна быть наклонена (или наклонен): http://www.vision.caltech.edu/bouguetj/calib_doc/

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