Распознавание вычеркнутых рукописных слов - PullRequest
3 голосов
/ 02 октября 2009

Я работаю над распознаванием почерка и связанными с ним вещами на платформе visual studio и использую библиотеки openCV. Ввод осуществляется в виде отсканированных двоичных файлов .tif.

В настоящее время я вошел в контрольно-пропускной пункт, пытаясь найти способ распознавания вычеркнутых слов, когда вы вычеркиваете (отменяете) слова, используя прямую / изогнутую линию. Я не собираюсь заниматься индивидуальным распознаванием символов, потому что это будет пустой тратой вычислительных ресурсов.

Есть ли способ распознать такие случаи по-другому?

Ниже приведены две идеи, с которыми я столкнулся, но я не уверен - 1> используйте маску вроде <0 0 0, 1 1 1, 0 0 0>, которая поможет найти все горизонтальные линии ... но это будет очень большое предположение. линии могут быть волнистыми и в любой ориентации.

2> скелетонизировать вход и искать пересечения. это даст мне довольно много пересечений - включая те, которые происходят из-за линии, используемой, чтобы вычеркнуть слово. используя некоторые приближения, такие как наименьшие квадраты и т. д. я могу получить приблизительную линию. но есть проблема в том, что пересечения могут происходить во многих местах - например. 2 пересечения в 'b' и т. Д.

есть предложения?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2009

Рассматривали ли вы использование преобразования Хафа для обнаружения линий удара?

Вот иллюстрация использования грубого преобразования в почерке , которая даст вам интуицию подхода: handwritting detected lines

Вы можете быстро проверить это с помощью openCV . Функция называется cvHoughLines2.

0 голосов
/ 28 октября 2009

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

Если ваша производительность в итоге очень плохая, вы всегда можете вернуться и улучшить алгоритм позже.

0 голосов
/ 03 октября 2009

Почему бы не обрабатывать контуры? Вы можете воспользоваться преимуществом приближения Poly (Ten-Chin) и проанализировать только несколько векторов, полученных в результате реконструкции цепочки. Если вы хотите сделать больше, то используйте смешанную схему пирамиды / контура, чтобы получить приближения векторов с разным уровнем детализации, начиная от грубого разрешения до самого лучшего.

Остановите уточнение, когда получите «разумное» количество уникальных сегментов, примените нормализацию (см. Моменты - Моменты Ху), чтобы сделать отпечаток вашего образца, и, наконец, примените строгую систему классификации.

Я предлагаю вам взглянуть на часть ML (Машинное обучение) пакета OpenCV, чтобы лучше ознакомиться с этой последней частью. Для растровых данных хорошо работают вейвлеты Хаара + скрытые марковские модели, для векторов, возможно, вы могли бы использовать что-то менее сложное для настройки (SOM, KNN, KMeans).

...