Логотип StingRay

Социальные сети
FacebookInstagramRSSTwitterYouTubeВ контактеОдноклассники
FacebookInstagramRSSTwitterYouTubeВ контактеОдноклассники
Силуэт человека

Курсовая работа по обработке изображений

Настоящие методические указания предназначены, прежде всего, для студентов моей специальности 230101 «Вычислительные машины, комплексы, системы и сети», которые хотели бы успешно выполнить курсовую работу по дисциплине с громким названием «Обработка изображений, распознавание образов и мультимедиа». Также они могут быть полезны для студентов и других специальностей и вообще всех интересующихся обработкой изображений и распознаванием текста.

Распознавание текста Распознавание текста

Процесс распознавания текста делится на отдельные этапы, поэтому его удобно реализовать в виде мастера (аналогично мастеру установки Setup.exe). Некоторые этапы необязательны, некоторые здесь вообще не рассматриваются (например, не учитывается возможный перекос текста).

1. Шумоподавление

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

2. Бинаризация

Это преобразование изображения, в результате которого значение каждого его элемента становится равным 0 или 1, то есть бинарным; в общем случае преобразование осуществляется отдельно по каждому каналу, в данном же случае – над общим значением яркости изображения, то есть результирующее изображение будет полностью чёрно-белым. Этап необязательный.

Выделение строк

3. Выделение строк

Оно необходимо для последующего выделения символов и их распознавания и осуществляется посредством выполнения вертикальной проекции (построения гистограммы) строк пикселей, на которой находятся области резкого перепада числа значимых (чёрных) пикселей в строке; если число чёрных точек в предыдущей строке пикселей было значительно меньше их числа в текущей строке, то это говорит о начале строки текста, и наоборот. Основная проблема здесь – в выборе порога (понятия «значительно» больше/меньше), так как изображение может быть зашумлено. Кроме того, если отдельные верхние/нижние элементы символов на соседних строках заходят друг за друга, то такие строки могут быть неразделимы.

4. Выделение символов

Выделение символов

Оно выполняется после выделения строк и необходимо для последующего распознавания символов. Процесс аналогичен выделению строк: выполняется горизонтальная проекция (построение гистограммы) столбцов пикселей, на которой находятся области резкого перепада числа значимых (чёрных) пикселей в строке; если число чёрных точек в предыдущем столбце пикселей было значительно меньше их числа в текущем столбце, то это говорит о начале символа, и наоборот. При этом может использоваться тот же порог выделения, что и для строк. Кроме того, после выделения символа по горизонтали осуществляется также его выделение по вертикали (уточнение границ), так как его границы могут отличаться от границ всей строки. Проблема неразделимости пересекающихся в проекции символом сохраняется.

5. Выбор шрифта

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

6. Распознавание

Непосредственное распознавание – это сравнение выделенных областей изображения с имеющимися эталонами символов и проверка результата на допустимость. Сравнение можно выполнять любым из известных методов, например, методом маски (самый простой, но наглядный), заключающемся в сложении распознаваемого и эталонного изображений по модулю 2 и определении числа нулей в результирующем изображении. При этом отметим следующие моменты:

  • описание символов распознаваемого текста после их выделения представляет собой координаты их углов на распознаваемом изображении; библиотека эталонов – то же, но для эталонного изображения всего алфавита и с указанием собственно кода соответствующего символа алфавита;
  • в процессе распознавания осуществляется перебор во внешнем цикле всех выделенных символов распознаваемого текста и перебор во внутреннем цикле всех эталонов, то есть каждому символу распознаваемого текста поочерёдно ставятся в соответствие все эталонные символы, и определяется степень их совпадения;
  • для повышения эффективности распознавания вводятся такие параметры как допустимое отклонение разметов символов от эталонов (чтобы не пытаться сравнивать символ «,» с эталоном «Ж») и минимальная степень совпадения символов с эталонами (если для текущего сравнения она меньше, то символ не распознан);
  • символ считается распознанным, если есть хотя бы один эталон, степень совпадения с которым оказалась не меньше минимально допустимой; при этом если таких эталонов несколько, то выбирается тот, с которым была достигнута наибольшая степень совпадения; при этом если эталонов с одинаковой наибольшей степенью совпадения несколько, выбирается первый по перечню алфавита.

Основной недостаток метода состоит в том, что он не учитывает, (не)совпадение распознаваемого символа и эталона по ключевым моментам (признакам символа), и сравнение осуществляется по изображению в целом. Поэтому и возможно то, что сравнение одного и того же символа с разными эталонами даст одинаковую степень совпадения. Наконец, сам способ определения степени совпадения может во многом определять результат; в нашем случае степень совпадения будет определяться по числу нулевых точек на совмещённом изображении, отнесённым к числу точек на изображении распознаваемого символа.

Для хранения описаний изображений символов можно использовать невизуальный объект TStringList, позволяющий легко работать со списком значений произвольной длины. Принятый формат хранения значений координат при этом может выглядеть так:

StringList[I] := IntToStr(Top)+','+IntToStr(Bottom)+','+IntToStr(Left)+','+IntToStr(Right);

То есть каждая строка списка – это координаты верхней, нижней, левой и правой границы изображения символа, разделённые запятой. После выделения символов из списка удаляются описания ранее выделенных строк.

Из алфавита эталонов были преднамеренно удалены все символы, порождающие ситуацию неоднозначного распознавания (например, «Й» или «Ы»). Эталонное изображение генерируется автоматически с использованием выбранного шрифта.

Для получения результирующего изображения как сложения по модулю 2 используется режим TCanvas.CopyMode:=CMSrcInvert; и метод TCanvas.CopyRect(CurrentRect, AlphabetBitmap.Canvas, StandardRect). Степень соответствия определяется по формуле:

CharFill := BlackPixels / (ScannedHeight * ScannedWidth);

где CharFill – заполненность результата сравнения нулями, BlackPixels – число чёрных (нулевых) пикселей на совмещённом изображении таким же размером, что и распознаваемое изображение (ScannedHeight x ScannedWidth).

См. также статью Павла Денисова «Распознавание текста на примере защитной картинки SMS-отправки».

Добавьте свой комментарий или войдите, чтобы подписаться/отписаться.
OpenId
Предпросмотр
Улыбка Подмигивание Дразнит Оскал Смех Огорчение Сильное огорчение Шок Сумасшествие Равнодушие Молчание Крутизна Злость Бешенство Смущение Сожаление Влюблённость Ангел Демон Задумчивость Рука-лицо Не могу смотреть Жирный Курсив Подчёркивание Зачёркивание Размер шрифта Гиперссылка Цитата
Загрузка…