2016-07-24 3 views
1

У меня есть некоторый контент, который будет обнаружен с помощью OpenCV. Прежде чем применять обнаружение к самому содержимому, мне нужно определить угол искажения перспективы и исправить его. Вероятно, я могу использовать идею о том, как QR-код это делает - добавьте несколько привязок к изображению. Там не будет квадратной формы содержания, так что источник изображения может выглядеть следующим образом:Обнаружение угла перспективы и выполнение преобразования перспективы с использованием OpenCV

Source Image

В 3 квадрата будут наши якоря.

При использовании OpenCV, насколько я понимаю, я должен делать эти операции:

  1. Применить полутоновую схему изображения с помощью функции cvtColor.
  2. Нанесите размытие, используя blur или GaussianBlur.
  3. Применить threshold и Canny.
  4. Используйте findContours и проанализируйте результаты поиска, найдите 3 квадрата, проверив количество вершин или аналогичное.
  5. Применение функций perspectiveTransform и warpPerspective для анализа позиций квадратов и применения соответствующего преобразования к исходному изображению.

Проблема в том, что я действительно не понимаю, какие параметры следует использовать, и каков порядок вызовов методов на шаге 5. Я новичок в кодировании и математике, поэтому я был бы признателен за любую помощь, спасибо!

ответ

1

Я предполагаю, что ваш главный вопрос - найти преобразование из трех 2D-соответствий и соответствующим образом преобразовать изображение.

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

2D аффинная матрица - матрица 3x3, где последняя строка - [0 0 1]. (Для матрицы перспективы нулевые значения могут быть произвольными.)

Вы можете вычислить аффинное преобразование, разрешив одну линейную систему, как описано в ответе https://stackoverflow.com/a/2756165/2079934. (Решение уникально.)

Если у вас есть аффинная матрица, вы можете применить warpAffine (не warpPerspective), чтобы исправить изображение. http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#warpaffine