Распознавание цифр на табло с использованием OpenCV

Я пытаюсь извлечь числа из типичного табло, которое можно найти в спортзале средней школы. У меня есть каждое число в цифровом шрифте «будильник», и мне удалось скорректировать перспективу, порог и извлечь заданную цифру из видеопотока

Sample input

Вот образец моего ввода шаблона

Template input

Моя проблема в том, что нет одного метода классификации точно определит все цифры 0-9. Я пробовал несколько методов

1) Tesseract OCR - этот метод постоянно портит 4 и часто возвращает странные результаты. Просто используя версию командной строки. Если я действительно пытаюсь обучить его шрифту «будильник», я каждый раз получаю неизвестный символ.

2) kNearest с OpenCV - я ищу в базе данных, состоящей из моих шаблонных изображений (0–9), и смотрю, какой из них ближайший. Я часто путаюсь между 3/1 и 7/1

3) cvMatchShapes - это довольно плохо, обычно он не может отличить 2 цифры для каждой входной цифры

4) Касательное расстояние - Это самый близкий, но наименьшее касательное расстояние между входом и моими шаблонами приводит к отображению «7» в «1» каждый раз

. Я действительно затрудняюсь получить алгоритм классификации для такой простой задачи. Я чувствую, что достаточно хорошо очистил ввод, и это довольно простой случай для классификации, но я не могу получить ничего достаточно надежного, чтобы действительно использовать на практике. Приветствуются любые идеи о том, где искать алгоритмы классификации или как их правильно использовать. Я не очищаю ввод? А как насчет лучшей базы данных ввода? Я не знаю, что еще я бы использовал для ввода, на этом этапе каждая цифра и шаблон выглядят правильно.

16
задан pyromanfo 9 November 2011 в 19:16
поделиться

1 ответ

Вы хотите свои исходные данные изображения протокола результатов S питание алгоритма, который отображает их на {0,1,2,3,4,5,6,7,8,9}.

Позволяют V, обозначают набор n-кортежей целых чисел.

Конструкция алгоритм О±, который отображает каждое изображение S на n-кортеж

(k1, k2..., kn)

, который может дифференцироваться между двумя различными цифрами табло.

, Если можно указать диапазон О± затем, только необходимо собрать векторы в V, которые соответствуют цифре для решения проблемы.

я применил эту идею с помощью Martin Beckett идея , и она работает. Моя начальная попытка была простой инжекцией в с 2 кортежами вертикалью, слева направо суммируя с первым целым числом, смещение столбца типа image и второе целое число были длиной 'хорошей' вертикальной строки.

Это не работало - отображает для 6, и 8 отобразился бы на те же векторы. Таким образом, мне был нужен другой mini-info-capture для моих входных типов цифры (они не табло), и информационный вектор с 3 кортежами добивается цели.

0
ответ дан 30 November 2019 в 22:15
поделиться
Другие вопросы по тегам:

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