Устранение перекоса / искажения на основе известных размеров формы - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть идея для приложения, которое берет напечатанную страницу с четырьмя квадратами в каждом углу и позволяет измерять объекты на бумаге, учитывая, что по крайней мере два квадрата видны.Я хочу, чтобы пользователь мог делать снимки с углов, отличных от идеальных, и при этом точно измерять объекты.

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

Кто-нибудь знает статьи или математические концепции, которые я могу найти, чтобы углубиться в этот проект?

Я не совсем уверен, как или кого спрашивать на этом форуме, кроме людей, извините за несколько расплывчатый вопрос.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Здесь я даю вам только программный аспект, и если вы хотите, вы можете узнать о математическом аспекте из этих примеров.Большинство функций, которые вам нужны, могут быть выполнены с использованием OpenCV.Вот несколько примеров на python:

  1. Чтобы обнаружить напечатанную бумагу, вы можете использовать функцию cv2.findContours.Возможно, самый внешний контур - это бумага, но вам нужно проверить на реальных изображениях.https://docs.opencv.org/3.1.0/d4/d73/tutorial_py_contours_begin.html

  2. В случае уклона (не в идеальном угле) вы можете найти угол по cv2.minAreaRect, который возвращает угол контура, который вы нашли выше.https://docs.opencv.org/3.1.0/dd/d49/tutorial_py_contour_features.html (часть 7b).

  3. Если вы хотите повернуть бумагу, используйте cv2.warpAffine.https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html

  4. Для обнаружения объекта на бумаге есть несколько методов.Самый простой способ - использовать контуры выше.Если объекты имеют определенные цвета, вы можете обнаружить их с помощью цветового фильтра.https://opencv -python-tutroals.readthedocs.io / en / latest / py_tutorials / py_imgproc / py_colorspaces / py_colorspaces.html

0 голосов
/ 30 декабря 2018

То, что вы описываете, очень напоминает отслеживание маркера дополненной реальности .Возможно, вы можете начать с поиска этих слов в поисковой системе по вашему выбору.

Один маркер, если все сделано правильно, можно использовать для его идентификации, не путая его с другими маркерами AND дляопределить, как поверхность располагается в трехмерном пространстве перед камерой.

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

Может даже не существовать.В этом случае вам придется купить один.Учитывая нишу вашей проблемы, это было бы вполне правдоподобно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...