Создайте изображение, которое легче всего обнаружить с помощью алгоритмов компьютерного зрения.

Работаю над небольшим побочным проектом, связанным с Computer Vision, в основном для того, чтобы попробовать поиграть с OpenCV. Это привело меня к интересному вопросу:

Использование обнаружения признаков для поиска известных объектов на изображении не всегда просто — найти объекты сложно, особенно если характеристики целевого объекта невелики.

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

Я подозреваю, что такого рода мысли касались таких вещей, как QR-коды, но с ограничениями, которые заключались в том, что они хотели, чтобы QR-коды были простыми и маленькими.

Итак, мой вопрос к вам: как бы вы сгенерировали оптимальное изображение для последующего распознавания камерой? Что делать, если вы уже знаете, что могут возникнуть определенные проблемы, такие как перекос или частичное затемнение?

Большое спасибо


person Mabbo    schedule 29.06.2014    source источник
comment
Похоже, вы спрашиваете о метках координат.   -  person Sneftel    schedule 30.06.2014
comment
@Sneftel: Довольно много. Можно ли создать действительно оптимальный реперный маркер, чтобы справиться со многими проблемами, обычно связанными с использованием камер для поиска вещей в реальном мире?   -  person Mabbo    schedule 30.06.2014
comment
да. Один полагается на надежность обнаружения углов и относительных ориентаций, по сути, создавая реперную информацию, информация которой не зависит от поворота и перекоса. Это огромная тема, объединяющая тригонометрию с теорией информации.   -  person Sneftel    schedule 30.06.2014
comment
Вы правы, когда думаете о QR-кодах, кстати. Они слишком детализированы, чтобы сделать хорошие реперные знаки для большинства целей, но большинство реперных знаков выглядят как QR-коды с низким разрешением, потому что они разделяют большинство одинаковых потребностей.   -  person Sneftel    schedule 30.06.2014


Ответы (3)


Я думаю, вам нужно что-то вроде маркеров AR. Взгляните на ArToolkit, ArToolkitPlus или библиотеки Aruco, в них есть генераторы маркеров и детекторы. И статья о создании маркеров: http://www.uco.es/investiga/grupos/ava/sites/default/files/GarridoJurado2014.pdf

person Andrey Smorodov    schedule 30.06.2014
comment
Я думаю, это именно то, что мне нужно - особенно эта бумага действительно фантастическая. Он работает только с реперными маркерами, состоящими из черных и белых ящиков, но у него есть идея, которая пришла мне в голову: максимальная энтропия между различными маркерами для облегчения распознавания. - person Mabbo; 30.06.2014

  1. Если вы планируете использовать обнаружение признаков, то маркер должен быть специфичным для используемого детектора признаков. Обычной практикой проектирования детектора является хороший отклик на «углы» или области с высокими градиентами x, y. Также следует обратить внимание на масштабирование цели.

  2. Простейшее обнаружение можно выполнить с помощью BLOBS. Это может быть быстрее и надежнее, чем Feature Points. Например, вы можете обнаружить круглые или прямоугольные капли.

person minorlogic    schedule 30.06.2014

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

https://surf-it.soe.ucsc.edu/sites/default/files/velado_report.pdf

на близких расстояниях хорошим выбором могут быть различные штриховые/QR-коды. Кроме того, любой плоский текстурированный объект будет легко отслеживать с помощью гомографии, в отличие от 3D-объектов. http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_feature_homography/py_feature_homography.html

Даже различные виды 3D-объектов можно быстро изучить и отследить такими системами, как Predator:

https://www.youtube.com/watch?v=1GhNXHCQGsM

затем идет все поле оборудования, структурированный свет, синхронизированные маркеры и т. д., и т. д. Kinect, например, использует предопределенный шаблон, проецируемый на поверхность, для воспроизведения стерео. Это означает, что он распознает и сопоставляет миллионы микропаттернов в секунду, создавая карту глубины из сопоставленных соответствий. Обратите внимание, что одна камера видит паттерн, а другое устройство — проектор генерирует его, работая как виртуальная камера, см. ="nofollow">http://article.wn.com/view/2013/11/17/Apple_to_buy_PrimeSense_technology_from_the_360s_Kinect/

Самый быстрый способ продемонстрировать хорошее отслеживание стандартного шаблона шахматной доски — использовать функцию pNp открытого cv:

http://www.juergenwiki.de/work/wiki/lib/exe/fetch.php?media=public%3acameradication_detecting_fieldcorners_of_a_chessboard.gif

это буквально можно сделать, вызвав всего две функции

found = findChessboardCorners(src, chessboardSize, corners, camFlags);
drawChessCornersDots(dst, chessboardSize, corners, found);

Подводя итог, ваш вопрос очень широк, и есть несколько ответов и решений. Сформулируйте свои условия просмотра, характеристики камеры, фон, расстояния, количество движения и перспективу, которую вы ожидаете получить в помещении по сравнению с улицей и т. д. В компьютерном зрении нет такой вещи, как общий средний случай!

person Vlad    schedule 01.07.2014