рефераты рефераты
Главная страница > Курсовая работа: Распознавание графических символов  
Курсовая работа: Распознавание графических символов
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Распознавание графических символов

3.3 Описание разработанных классов

Ниже представлен перечень классов разработанных в приложение с кратким описанием их назначения и описанием основных методов.

Form1 – класс, описывающий главную форму приложения, содержит методы обработки событий от элементов управления. Содержит элементы управления для отображения исходного изображения, сегментов изображения и результатов распознавания.

Segmentation – описывает процесс сегментации изображения.

Методы:

public static List<Bitmap> GetStrings(Bitmap text) – выделение растров, соответствующих строкам текста;

public static List<Bitmap> GetStringWords(Bitmap str) – сегментирование одной строки на слова;

public static List <Bitmap> GetWords(Bitmap text) – выделение слов из всего текста;

public static Bitmap TrimBitmap(Bitmap bmp) – обрезка белых полей вокруг изображения на битмапе.

Recognizer – класс, реализующий персептрон для распознавания образов.

Методы :

public void Teach(Bitmap b, int classindex) – обучение персептрона;

public string Recognize(Bitmap b) – распознавание изображения b;

public void SerializeParams() – сохранение параметров персептрона на диске;

public void DeserializeParams() – чтение параметров персептрона с диска;

public static Bitmap NormalizeBitmap(Bitmap b, Size sz) – подгонка битмапа b по размеру sz. На выходе бинаризованное изображение размера sz;

public static Bitmap InverseBitmap(Bitmap b) – инверсия цвета изображения b.


4. ТЕСТИРОВАНИЕ ПО

Требования к установленному ПО:

- .Net Framework 3.5

Целью проведения испытаний является проверка работоспособности (надежности) программы при различных условиях ее функционирования и настройках. Для демонстрации работоспособности программы необходимо провести ряд испытаний с различными начальными условиями.

Тестовые примеры выполнялись в среде операционной системы Windows 7 Ultimate при использовании процессора AMD Athlon 3600+ 1.9 ГГц, 1 Гб RAM и разрешении экрана 1280x1024.

Приложение подверглось критическому и углубленному тестированию.

При проведении критического тестирования не было выявлено ошибок и некорректной работы приложения.

4.1 Запуск приложения

Для запуска приложения необходимо запустить исполняемый файл WordSearcher.exe. Окно приложения после запуска показано на рисунке 3.4

Рисунок 3.4 – Главное окно приложения


Для начала работы необходимо загрузить исходное изображение, для чего необходимо нажать кнопку "Открыть". В диалоге выбора файла необходимо выбрать изображение. Окно программы после открытия исходного изображения представлено на рисунке 3.5

Рисунок 3.5 – Окно программы с открытым изображением

После открытия изображения становится активным кнопка "Сегментация", после нажатия на которую, текст на изображении разбивается на слова.

Результат сегментации представлен на рисунке 3.6.

Рисунок 3.6 – Результат сегментации


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

После обучения, либо загрузки параметров персептрона, можно производить распознавание изображений. Результат распознавания показан на рисунке 3.7.

Рисунок 3.7 – Результат распознавания

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

Результат работы программы при загрузке не файла изображения представлен на рисунке 3.8.


Рисунок 3.8 – Результат работы приложения при неверно формате файла


ВЫВОДЫ

В результате выполнения данного курсового проекта было разработано приложение, позволяющее распознавать слово "Указ" в тексте на изображении. Размеры изображения и шрифта текста может быть практически любым, что дает гибкие возможности для применения приложения.

Для распознавания применяется персептрон. Качество распознавания изображения зависит от количества предложенных образов для обучения и количество А-элементов. Количество поддерживаемых шрифтов зависит от шрифтов, которым написаны слова на изображениях для обучения.

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


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.         Microsoft Developer Network (MSDN) [Электрон. ресурс]. ‑ Режим доступа: http://msdn.ru/

2.         Ковалева И.Л., "Алгоритмы обработки изображений", БНТУ, 2007


ПРИЛОЖЕНИЕ A

Небольшой мануал по проге:

- Текст должен быть черным по белому

- Картинки для теста есть в архиве.

- Ориентация текста не под углом.

- Размер картинки желательно не меньше чем, те, что лежат в архиве, потому что при маленьком изображении плохо распознается из-за сливания пикселей.

- Распознавание персептроном с несколькими сумматорами и алгоритмом обучения без учета правильности ответа (она может это спросить=)

- Для обучения персептрона надо открыть изображение "Картинка для обучения.png" из папки "тестовые изображения" или создать аналогичную самостоятельно и открыть ее. Потом нажать "сегментация", Потом "Обучить", можно сохранить обучение, нажав "сохранить". Теперь можно открывать изображение, которое будет распознаваться. Для распознавания надо нажать "сегментация", потом "распознать".

- Если проводилось сохранение обучения, то можно не обучать. Для распознавания в таком случае надо делать следующие: открываешь распознаваемое изображение, нажимаешь "Сегментация", нажимаешь "загрузить", нажимаешь "распознать".

- В записке в графической части нужно вставить некоторые свои данные, я их отметил красным.

- путь к EXE-шнику: \WordSearcher\WordSearcher\bin\Debug\ WordSearcher.exe

Если будут какие-то баги или вопросы, сообщай - исправлю.

С уважением, Свирко Юрий

Mail: sv1r4.sd@gmail.com

Phone: 8-033-63-123-60

ЛИСТИНГ ПРОГРАММЫ

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WordSearcher

{

public partial class FormMain : Form

{

/// <summary>

/// Флаг разрешения распознавания

/// </summary>

bool enableRecognize = false;

/// <summary>

/// Размер битмапа со словом "Указ"

/// к этому размеру подгоняются все отсалдьные распознаваемые битмапы

/// </summary>

private static Size imSize = new Size(65, 25);

/// <summary>

/// Состояние формы

/// </summary>

private FormState formState = FormState.Empty;

/// <summary>

/// Масив битмапов сос словами текста

/// </summary>

private List<Bitmap> words;

/// <summary>

/// Объект класса для распознавания(персептрон)

/// </summary>

private Recognizer r = new Recognizer(imSize, 750, 2);

/// <summary>

/// Метод для делания активными неактивными кнопок управления

/// в зависимости от этапа обработк изображения

/// </summary>

/// <param name="fs">текущее состояние</param>

private void ButtonsEnabled(FormState fs)

{

formState = fs;

switch (fs)

{

case FormState.Empty:

buttonOpen.Enabled = true;

buttonSegment.Enabled = false;

buttonRecognize.Enabled = false;

buttonTeach.Enabled = false;

buttonLoadTeaching.Enabled = false;

buttonSaveTeaching.Enabled = false;

pictureBoxMain.Image = null;

dataGridViewSegments.Rows.Clear();

break;

case FormState.Open:

buttonOpen.Enabled = true;

buttonSegment.Enabled = true;

buttonRecognize.Enabled = false;

buttonTeach.Enabled = false;

buttonLoadTeaching.Enabled = false;

buttonSaveTeaching.Enabled = false;

dataGridViewSegments.Rows.Clear();

break;

case FormState.Segmented:

buttonOpen.Enabled = true;

buttonSegment.Enabled = true;

if (enableRecognize)

buttonRecognize.Enabled = true;

else

buttonRecognize.Enabled = false;

Страницы: 1, 2, 3, 4, 5

рефераты
Новости