Распознавание текста на примере защитной картинки SMS-отправки
- Опубликовано: 27.11.2006
Настоящая мини-статья является практической иллюстрацией к алгоритмам, изложенным на странице «Курсовая работа по обработке изображений», в частности, в её разделе «Распознавание текста».
В качестве примера для распознавания было выбрано изображение с сайта BeOnLine. Изображение содержит четыре цифры и служит для предотвращения беспорядочной отправки SMS-сообщений. Выбор пал на данное изображение по нескольким причинам: во-первых, изображение достаточно легко читаемо человеком и при этом достаточно трудно для компьютерного анализа; во-вторых, это личная симпатия к дизайну сайта (замечу, что даже цвет изображения, с которым мы будем работать, выдержан в цветовой политике «Билайна»). Итак, рассмотрим весь процесс по шагам и прокомментируем результат…
Шаг 1. Преобразование в градации серого


Переводим исходное цветное изображение в градации серого, как это описано в разделе «Изменение цветности…» – по формуле яркости. В дальнейшем будем работать только со значениями яркости (Y).
Шаг 2. Сглаживание с целью шумоподавления


Сглаживание (размытие) изображения с целью шумоподавления осуществляем с помощью одного из методов раздела «Наложение шума и фильтры шумоподавления», например, по Гауссу со значениями «сигма» = 1,0 и k = 3.
Шаг 3. Линейное контрастирование


С применением информации раздела «Изменения яркости и контрастности» линейно корректируем изображение по яркости и контрастности.
Шаг 4. Получение маски областей изображения
Получаем маску областей изображения посредством объединения смежных точек в область. Критерием объединения является разница яркости двух смежных точек (разница > 14,0). Результатом является маска (массив). Размер маски будет совпадать с размером изображения. Одинаковые значения элементов маски означают принадлежность соответствующих точек изображения к одной области.
Шаг 5. Коррекция маски областей изображения

В маске областей изображения выделяются области, площадь которых превышает 200 пикселов (для понимания выше сказанного на рисунке искусственно показаны найденные области).
Шаг 6. Инверсия цвета областей


В найденных тёмных областях инвертируем яркость всех точек (то есть тёмные области заменяем их негативами, как это описано в разделе «Изменение цветности…»).
Шаг 7. Бинаризация (преобразование в чёрно-белое)


Осуществляем бинаризацию всего изображения, как это описано в том же разделе «Изменение цветности…», используя в качестве порога срединное значение яркости (128).
Шаг 8. Выделение отдельных символов




Выделяем из чёрно-белого изображения отдельные символы, как это описано в разделе «Распознавание текста». Считаем, что минимальная ширина символа равна 5 пикселя, а минимальная высота символа равна 4 пикселя.
Шаг 9. Масштабирование символов




Приводим все символы к единому размеру 18 x 28 пикселов.
Шаг 10. Распознавание и его погрешность

Сравниваем полученные символы с шаблоном (шрифт шаблона – Arial, 36 пт, полужирный), рассчитываем среднюю пиксельную ошибку – как это описано в разделе «Распознавание текста».
Заключение
Основной задачей данной статьи была демонстрация совместного применения отдельных алгоритмов обработки изображений для решения задачи распознавания текста. С реальной программной реализацией описанного выше можно ознакомиться в виде исполняемого файла (для работы требуется установленный .NET Framework).
Тем не менее, описанное выше совместное применение алгоритмов обработки изображений нельзя назвать универсальным алгоритмом распознавания, так его погрешность может варьироваться в пределах 15 – 70%. Именно поэтому так называемые защитные картинки на сайтах – это по-прежнему одно из самых эффективных методов защиты от спам-роботов