e_asphyx
@e_asphyx

Как найти известный маркер на изображении?

Задача примерно такая: найти на изображении некий простой маркер (чёрно-белый крестик, например). Надо узнать его размеры и центр, независимо от угла поворота. Чем быстрее, тем лучше. Куда копать? OpenCV? Или есть какие-то более специализированные алгоритмы? Как, например, ищут маркеры при декодировании QR code?

UPD: Пример маркера
SzQg3.png
  • Вопрос задан
  • 4254 просмотра
Пригласить эксперта
Ответы на вопрос 3
Mrrl
@Mrrl
Заводчик кардиганов
Я для поиска таких маркеров (правда, без внешнего полукольца) начинаю с того, что для каждой точки строю "окружность" с центром в этой точке, состоящую из 20 точек (радиус может варьироваться) и проверяю, насколько она симметрична. Если средний квадрат разностей яркостей симметричных точек заметно меньше дисперсии, то это кандидат на маркер. Потом проверяю на подобие (беру окружность вдвое меньшего радиуса). Если оба критерия прошли - идёт проверка уже по площадям (опять же, проверяется симметрия, самоподобие и однородность белого и чёрного). Границы приходится распознавать только для определения центра с субпиксельной точностью (достигается точность 1/10 пикселя).
К сожалению, процесс довольно медленный. Особенно, если заранее размер маркера неизвестен, и приходится проверять разные масштабы.
Про яркостную границу можно предложить прогнать алгоритм, основанный на выделении границ, для нескольких порогов яркости. Какой-нибудь да сработает. Но как описать и быстро распознать ситуацию "при сканировании пройден центр маркера", я ещё не придумал.
Ответ написан
Комментировать
@SeptiM
Попробуйте преобразование Хафа: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D...

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

UPD: Может быть интересно: stackoverflow.com/questions/15878325/what-are-the-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы