У меня есть изображение, в котором есть цель калибровки (известная геометрия) в сцене (скажем, простой квадрат 2 "x 2", лежащий на столе). Я хотел бы выполнить преобразование перспективы (используя warpPerspective()
), чтобы получившееся изображение было ортогональным видом таблицы (как если бы ось камеры была параллельна нормальной таблице). Стандартная процедура вычисления гомографии от общей плоскости к другой общей плоскости, где по крайней мере 4 соответствия известны на двух изображениях одной и той же сцены (с использованием getPerspectiveTransform()
). В этом случае, когда у меня есть только один образ, правильная вещь, чтобы сделать, чтобы просто «составить» плоскость и заставить соответствующие соответствия какой-либо произвольной позиции на этой плоскости? Например, в этой ситуации я просто делал бы соответствия между четырьмя обнаруженными углами (A, B, C, D) в изображении и четырьмя точками по своему выбору (которые по существу просто определяют реальный масштаб пикселя ->. , Я мог бы выбрать A '= (0,0), B' = (20,20), C '= (0,20), D' = (20,0), чтобы указать в полученном изображении 10 пикселей на Конечно, я мог бы выбрать любую шкалу здесь, и я мог бы также выбрать любую позицию для квадратной цели, чтобы приземлиться на выходе (т.е. A '= (100 100), B' = (120 120), C '= (100, 120), D '= (120, 100))Гомография от плоскости 3D до плоскости, параллельной плоскости изображения
Это правильный способ сделать это? Есть ли лучший способ вычислить проективное преобразование, которое смотрит прямо на плоскость, определенную набором точек в изображении, известном как быть в плоскости?
Hi David! Да, я думаю, это правильно. По крайней мере, я сделал именно это, и все получилось очень неплохо. – Miki
@Miki Спасибо! Просто убедившись, что я чего-то не пропустил, поскольку я не видел, чтобы кто-нибудь объяснял это где-то в Интернете, что всегда кажется странным. –
Ах, ладно, кто-то объяснил это в конце концов :): «Перспективная коррекция с использованием гомографии» здесь http://www.learnopencv.com/homography-examples-using-opencv-python-c/ –