wildmandnd
@wildmandnd
Аналитика & монетизация

Оптимальный набор алгоритмов в задаче по Computer Vision?

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

Задача: распознать коды, которые игроки фотографируют. Коды изначально напечатаны на бумаге, черным по белому. Код - это последовательность 8~16 цифр в одну строку. Игрок заинтересован в результате и получает базовую инструкцию, то есть можно ожидать, что код будет примерно в середине снимка, изображение будет в фокусе. На углы наклона камеры надежды нет - фотографируют и вверх ногами, и держа телефон под углом. На внешнее освещение надежды вообще никакой - ожидается от солнечного света до полутьмы клуба и съемки со слабой вспышкой.

Что интересует:
- необходимые алгоритмы для предобработки изображений, учитывая непредсказуемость освещения и углы наклона.
- оптимальные, учитывая задачу, алгоритмы выделения строки с кодом, парсинга и нормализации размера блоков отдельных цифр.

Следующие этапы, связанные с машинным обучением, мне понятны. Нужна подсказка по всей связанной с CV части. Я понимаю, что задача решаема тучей разных способов, нужно экспертное мнение каким путем лучше сразу идти. Спасибо!
  • Вопрос задан
  • 2890 просмотров
Пригласить эксперта
Ответы на вопрос 2
tsarevfs
@tsarevfs
C++ developer
А может проще будет печатать qr код? Там и надёжность лучше будет. И библиотеки готовые найти можно.
Ответ написан
KOLANICH
@KOLANICH
Знаю JS, PHP, C++, C#
1 >необходимые алгоритмы для предобработки изображений, учитывая непредсказуемость освещения и углы наклона.
Эквализация гистограммы яркости + пороговое преобразование + морфология
2 >алгоритмы выделения строки с кодом, парсинга и нормализации размера блоков отдельных цифр.
Ищешь минимальный ограничивающий четырёхугольник, по угловым точкам находищь матрицу гомографии, трансформируешь с использованием opengl (в opencv есть).
Далее режешь строку на символы, идя по колонкам и полностью белый ряд - конец символа, а ряд хотя бы с одной чёрной точкой - начало. в принципе можно и заливкой сегментировать.
После классифицируешь. Классификатор будет простейший : перемножение точки символа на точку классификатора (изображение символа-кандидата, отмасштабированное до прямоугольника реального символа) и просуммирвать. Математически это называется скалярным произведением или корреляцией. У кого больше - тот и символ.

как-то так.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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