braille-systems / tiles-recognition

Automatic recognition of education Braille Tiles with computer vision
1 stars 1 forks source link
braille-tiles computer-vision object-detection tiles-recognition

Braille Tiles Recognition

A tool for optical recognition of educational Braille Tiles.

result

The primary goal of this project is to develop a program for self-education of the visually impaired for studying Louis Braille's symbols system. The program will be able to issue tasks - to assemble a word or phrase from tiles, and the user should compose this word/phrase and demonstrate it in front of the camera. The program would tell whether the answer is correct.

Implementations: OpenCV - master branch, PyTorch/YOLOv3 - rcnn branch.

OpenCV implementation report (RU).

We plan to incorporate this program into our educational Android app Learn Braille and an eponymous iOS app. By now we've developed a simple frontend in the form of a Telegram bot.

You may find additional information about Braille Tiles in the article (Russian).

Further information about our Optical Braille Recognition research: wiki pages.

BibTeX citation:

@inproceedings{zuev2021,
    author = {V.A.Zuev and A.S. Stoyan},
    booktitle = {Mathematics and Mathematical Modeling: Proceedings of XV
      All-Russian Scientific and Innovative School for young researchers},
    editor = {A.G. Sirotkina},
    pagetotal = {351},
    location = {Sarov},
    pages = {145-146},
    publisher = {Intercontact LLC},
    title = {Recognizing Braille in photos},
    year = {2021},
    ISBN = {978-5-6044528-8-2}
}

Распознавание плиток Брайля

Репозиторий содержит утилиту для распознавания обучающих плиток с символами Брайля по фотографии.

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

Реализации: OpenCV - ветвь master, PyTorch/YOLOv3 - ветвь rcnn.

Отчёт по OpenCV реализации.

Мы планируем сделать эту программу частью обучающего Android-приложения Learn Braille, а также одноимённого iOS-приложения. К настоящему моменту разработан простой интерфейс в форме Telegram-бота.

О плитках можно почитать в статье.

Больше информации о нашем исследовании: вики-страницы.

Цитата для вставки в BibTeX:

@inproceedings{zuev2021,
    author = {В.А. Зуев and А.С. Стоян},
    booktitle = {Математика и математическое моделирование: Сборник материалов XV
    Всероссийской молодёжной научно-инновационной школы.},
    editor = {А.Г. Сироткиной},
    pagetotal = {351},
    location = {Саров},
    pages = {145-146},
    publisher = {ООО <<Интерконтакт>>},
    title = {Распознавание символов Брайля на фотографиях},
    year = {2021},
    ISBN = {978-5-6044528-8-2}
}

Как запускать

$ cd tiles-recognition
$ pip install -r requirements.txt
$ python src/main.py -v /path/to/directory/with/images

Интерпретация результатов:

  1. Зелёными линиями показывается контур предполагаемой плитки.
  2. Маркер Х говорит о том, что контур не был отсеян после перспективного преобразования плитки.
  3. Под плиткой - её номер в порядке слева направо, классифицированная буква и последовательность распознанных точек (в попядке сверху вниз, слева направо, F - filled, E - empty).

Примерный алгоритм

  1. Найти многоугольники, напоминающие брайлевские плитки
  2. Вырезать каждую плитку и исправить перспективные искажения
  3. Классифицировать каждую плитку
  4. TODO: распознать составленное слово (сейчас алгоритм составления слова крайне примитивный, если на фото несколько строк, может работать некорректно).