OpenCV: перенос изображения в цилиндрические координаты
Я пытаюсь создать панорамное изображение с помощью библиотеки opencv. Исходя из этого, мне нужно деформировать изображение в цилиндрические координаты. Я получил формулу для преобразования трехмерной декартовой (X,Y,Z) в цилиндрическую координату (θ,v) из бумаги с панорамным изображением, которая представляет собой:
θ = tan−1 (X/Z)
v = Y/ √ (X^2 + Z^2)
Я прочитал ветку списка рассылки opencv о цилиндрической деформации изображения, но, основываясь на статье, я не думаю, что мне нужно использовать калибровочную матрицу камеры. И на сайте проблема не решена. Вопрос в том, как мы можем преобразовать opencv IplImage в цилиндрическую координату и правильно отобразить их?
Заранее спасибо.
2 ответа
К сожалению, вам нужна калибровка камеры, если вы хотите деформировать изображение из декартовой системы координат в цилиндрические.
Думаю об этом. Если камера не откалибрована, то вы не знаете, что такое поле зрения камеры. Если у вас нет поля зрения, то вы не можете отобразить пиксели на оптические лучи. Если вы не знаете, какой оптический луч соответствует вашему пикселю, вы не сможете выразить этот пиксель в цилиндрических координатах.
Если у вас достаточно изображений с достаточным перекрытием (>90%-95%), вы можете пропустить калибровку, взяв узкие вертикальные срезы в середине каждого изображения и соединив их вместе. В зависимости от стабильности работы вашей камеры, вам может потребоваться скорректировать вертикальное и вращательное движение камеры между изображениями путем совмещения на перекрывающихся частях. Если у вас очень хорошая линза, вы можете обойтись без наложения.
Эта статья является хорошей отправной точкой.