Tlya 1 Жалоба Опубликовано May 22, 2017 Подскажите, пожалуйста! Чем распознать такие цифры? Как видно, разные размеры, шрифт, поворот и небольшие искажения являются осложнениями. Какой алгоритм (кроме классификатора) можно применить? По шаблону точно не подойдет, контуры с их моментами дают результат, но много ошибок, тессеракт распознает с большими ошибками из-за наклона. Какие ещё варианты? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано May 22, 2017 Убрать наклон. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано May 22, 2017 есть всякие там text detection in the wild http://www.robots.ox.ac.uk/~vgg/research/text/ ну или stroke width transform Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано May 22, 2017 SWT уже не особо актуально. Для начала OpenCV. В последнем tesseract'е, кстати, уже вовсю используют нейросети. Так что надо убедиться, что использовался именно он. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Tlya 1 Жалоба Опубликовано May 22, 2017 6 часов назад, Nuzhny сказал: Убрать наклон. Может у вас есть какой-нибудь пример по убиранию наклона? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 22, 2017 У вас же здесь цифры в прямоугольнике, прямоугольник белый, найдите его контур, впишите в прямоугольник (minarearect), вот вам и наклон. http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/bounding_rotated_ellipses/bounding_rotated_ellipses.html Дальше повернуть изображение в обратную сторону. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
2expres 7 Жалоба Опубликовано May 22, 2017 11 час назад, Tlya сказал: Чем распознать такие цифры? Как раз работаю над данным вопросом. Но решение данной задачи вижу в преобразовании изображения в векторную форму, максимальной аппроксимацией ломанными линиями. Это выполняет мой графический редактор с функциями компьютерного зрения Лубок. Результат в векторе: cyfra.svg Всего 56 кБайт! Все цифры сегментированы и их можно "растащить" на запчасти, например, в Coral'е. По поводу определения цифр. В векторной форме не важно, как расположен объект и его размеры. Он может быть даже вверх ногами, если мы декартовы координаты переводим вначале в относительные координаты, а затем относительные координаты в длину вектора и углы между векторами. После этого идет сравнение углов и отношение векторов с образцами объектов. Даже если часть цифры скрыто, как например, с "2446", то алгоритм должен определять объект по его части, конечно с вероятностью. Но работа еще не окончена. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Tlya 1 Жалоба Опубликовано May 26, 2017 Подскажите еще пожалуйста, как ускорить процесс обработки картинок большого разрешения при след. алгоритме: загрузка, коррекция цвета, перевод в серое, размытие, порог, поиск контуров, апроксимация, minAreaRect для контуров с нужными свойствами, поворачивание и вырезание этих прямоугольников, закидывание их в другой Mat. Просто при разрешении 6к на 4к количество контуров может доходить до 100к, а время обработки до 2с. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 26, 2017 Вначале уменьшить изображение до разумных размеров. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Андрей_Андрей 0 Жалоба Опубликовано May 29, 2017 я искал связанные контуры (findContours), оставлял из всех только символы ( по размеру и соотношению сторон), преобразовывал их в полигоны (approxPolyDP), и обводил их прямоугольниками (boundingRect) . Потом строил прямую между левыми нижними углами прямоугольников в одной строке, и искал наклон (арктангенс разности по y / разность по x.), и потом этот наклон компенсировал. Получилось хорошо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах