2014-11-19 3 views
1

У меня есть изображения, снятые с широкоугольного приложения. (180 градусов). Я использую opencv 2.4.8, в котором приведены некоторые сведения о матрице искажений матрицы матрицы матрицы.Удаление искажений объектива из изображений, снятых широкоугольной (180) камерой

MatK = [537.43775285, 0, 327.61133999], [0, 536.95118778, 248.89561998], [0, 0, 1] 
MatD = [-0.29741743, 0.14930169, 0, 0, 0] 

И эта информация Я использовал для дальнейшего устранения искажений. Но результат не так, как ожидалось. Я добавил некоторые входные изображения шахматной доски, которые я использовал для калибровки. Или Есть ли другие инструменты или библиотеки, с помощью которых его можно удалить.

входные изображения

testImg1

testImg2 testImg3 testImg4

от нормальной камеры или даже захватили мой смартфон without Distortion without Distortion without Distortion

+1

есть этот рисунок действительно плоский? искажения выглядят очень странно. или вы использовали очень плохое зеркало (например, лампочку с покрытием) для получения широкоугольного изображения? – Micka

+0

Micka, его COP CG180 Камера 180 градусов Широкоугольный объектив, а не зеркало. – Javed

+0

Да Планировщик, проверьте некоторые другие изображения одной и той же платы с другой камеры, теперь есть идея о том же? – Javed

ответ

0

Наиболее распространенный метод (используемый, например, для Rc Runtime Oculus), создает достаточно тонкую текстурированную сетку, для которой координаты текстуры или позиции узла сетки выбраны для компенсации искажения. Для получения сетки обычно один подходит полином или сплайн к некоторому опорному изображению. Например, шахматная доска в вашей камере является общей целью калибровки.

+0

Может ли программное обеспечение удалять все искажения с объектива на 180 градусов? Другими словами, если целью является оптимизация для изображений без искажений, была бы стереофоническая конфигурация с двумя объективами на 100 градусов и двумя датчиками (перекрывающимися для обеспечения покрытия на 180 градусов) лучше, чем один датчик с 180-градусной линзой ? – Crashalot

+0

@Crashalot: Это зависит от искажения. В случае, когда две разные точки в мире отображаются в одну и ту же точку изображения, отображение уже не является биективным и не может быть отменено. Но * каждое * биективное отображение всегда можно отменить (это правильно в определении), и все оптические линзы реального мира являются биективными (на самом деле это свойство привело к введению термина «линза» в информатику: https: // ru. wikipedia.org/wiki/Bidirectional_transformation#Vocabulary). – datenwolf

+0

@Crashalot: Что касается использования нескольких камер, это может быть полезно: это действительно сводится к тому, какой объектив вы используете, и разрешениями, с которыми вы работаете. Технически ничто не запрещает создание объектива, который оптически реализует проекцию Меркатора (я не знаю, как будет выглядеть такой зверь); с достаточной вычислительной мощностью и правильной комбинацией очков, это может быть сделано очень качественно (и дорогостоящим), но легко превзойдет конфигурацию с несколькими сенсорами с дешевой линзой. – datenwolf

1

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

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

+0

Дорогой Андреас, его обычный рисунок шахматной доски, но после съемки с широкоугольной камеры он выглядит так, как показано на изображениях, и это фактические изображения, которые я снял с широкой камеры. – Javed

+0

Извините, но я не могу в это поверить. Шаблон может быть регулярным, но он не является плоским. В нижнем ряду рисунка посмотрите на третий черный ящик слева. Это всегда в волнообразном узоре, что указывает на то, что он снят с поверхности, на которой опирается узор. Это похоже на каждое изображение, что маловероятно, что любые нарушения в объективе камеры несут ответственность. –

+1

@ Javed На данный момент у меня создается впечатление, что вы не знаете, что означает слова «планарная» или «поверхность уровня», возможно ли это? –

4

Это не ответ на вопрос, а что-то о «обсуждении» искажений и плоскостей.

На самом деле у вас есть какие-то прямые линии на схеме:

enter image description here

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

enter image description here

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

enter image description here

+0

Спасибо Micka, его право. искаженное изображение на самом деле выглядит ужасно. Я попытался использовать opencv и ffmpeg, но изображения не исправляются. Как вы говорите, возможно, внутренняя проблема объектива также связана с искажением. – Javed

+0

Hi @Micka Can может удалить все искажения с объектива на 180 градусов? Другими словами, если целью является оптимизация для изображений без искажений, была бы стереофоническая конфигурация с двумя объективами на 100 градусов и двумя датчиками (перекрывающимися для обеспечения покрытия на 180 градусов) лучше, чем один датчик с 180-градусной линзой ? – Crashalot