Перейти к содержимому
Compvision.ru
Tlya

Чем лучше распознать цифры?

Recommended Posts

Подскажите, пожалуйста! Чем распознать такие цифры?

Как видно, разные размеры, шрифт, поворот и небольшие искажения являются осложнениями.

Какой алгоритм (кроме классификатора) можно применить?

По шаблону точно не подойдет, контуры с их моментами дают результат, но много ошибок, тессеракт распознает с большими ошибками из-за наклона. Какие ещё варианты?

65565.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Убрать наклон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

SWT уже не особо актуально. Для начала OpenCV. В последнем tesseract'е, кстати, уже вовсю используют нейросети. Так что надо убедиться, что использовался именно он.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Nuzhny сказал:

Убрать наклон.

Может у вас есть какой-нибудь пример по убиранию наклона?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У вас же здесь цифры в прямоугольнике, прямоугольник белый, найдите его контур, впишите в прямоугольник (minarearect), вот вам и наклон. 

http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/bounding_rotated_ellipses/bounding_rotated_ellipses.html

 Дальше повернуть изображение в обратную сторону.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 час назад, Tlya сказал:

Чем распознать такие цифры?

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

Результат в векторе:

cyfra.svg

Всего 56 кБайт! Все цифры сегментированы и их можно "растащить" на запчасти, например, в Coral'е.

По поводу определения цифр. В векторной форме не важно, как расположен объект и его размеры. Он может быть даже вверх ногами, если мы декартовы координаты переводим вначале в относительные координаты, а затем относительные координаты в длину вектора и углы между векторами. После этого идет сравнение углов и отношение векторов с образцами объектов. Даже если часть цифры скрыто, как например, с "2446", то алгоритм должен определять объект по его части, конечно с вероятностью. Но работа еще не окончена.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите еще пожалуйста, как ускорить процесс обработки картинок большого разрешения при след. алгоритме:

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

Просто при разрешении 6к на 4к количество контуров может доходить до 100к, а время обработки до 2с.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вначале уменьшить изображение до разумных размеров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я искал связанные контуры (findContours), оставлял из всех только символы ( по размеру и соотношению сторон), преобразовывал их в полигоны (approxPolyDP), и обводил их прямоугольниками (boundingRect) .
Потом строил прямую между левыми нижними углами прямоугольников в одной строке, и искал наклон (арктангенс разности по y / разность по x.), и потом этот наклон компенсировал. 
Получилось хорошо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×