Распознавание графических символов
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
p>
После открытия изображения становится активным кнопка "Сегментация", после нажатия на которую, текст на изображении разбивается на слова.
Результат сегментации представлен на рисунке 3.6.
Рисунок 3.6 Результат сегментации
Перед непосредственным распознаванием текста необходимо произвести обучение персептрона, нажав кнопку "обучить", либо загрузить ранее сохраненные параметры, нажав кнопку "загрузить". Обучение персептрона осуществляется изображением содержащим слово "Указ", написанное разными шрифтами. После обучения, можно сохранить параметры персептрона в файл, нажав "сохранить", и прочитать их при следующем распознавании.
После обучения, либо загрузки параметров персептрона, можно производить распознавание изображений. Результат распознавания показан на рисунке 3.7.
Рисунок 3.7 Результат распознавания
При углубленном тестировании также не было найдено ошибок. Интерфейс программы разработан таким образом, что пользователю на каждом этапе обработки изображения может выполнить только определенные действия, что значительно снижает риск появления ошибок выполнения.
Результат работы программы при загрузке не файла изображения представлен на рисунке 3.8.
Рисунок 3.8 Результат работы приложения при неверно формате файла
ВЫВОДЫ
В результате выполнения данного курсового проекта было разработано приложение, позволяющее распознавать слово "Указ" в тексте на изображении. Размеры изображения и шрифта текста может быть практически любым, что дает гибкие возможности для применения приложения.
Для распознавания применяется персептрон. Качество распознавания изображения зависит от количества предложенных образов для обучения и количество А-элементов. Количество поддерживаемых шрифтов зависит от шрифтов, которым написаны слова на изображениях для обучения.
Перед непосредственным распознаванием, как правило, необходимо выполнять сегментацию изображения. Сегментация является неотъемлемой частью при распознавании образов, в общем случае, и непосредственно в данном проекте, так как ее результатом являются изображения, содержащие только необходимые для распознания объекты (слова текста).
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Microsoft Developer Network (MSDN) [Электрон. ресурс]. ? Режим доступа:
- Ковалева И.Л., "Алгоритмы обработки изображений", БНТУ, 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
{
///
/// Флаг разрешения распознавания
///
bool enableRecognize = false;
///
/// Размер битмапа со словом "Указ"
/// к этому размеру подгоняются все отсалдьные распознаваемые битмапы
///
private static Size imSize = new Size(65, 25);
///
/// Состояние формы
///
private FormState formState = FormState.Empty;
///
/// Масив битмапов сос словами текста
///
private List words;
///
/// Объект класса для распознавания(персептрон)
///
private Recognizer r = new Recognizer(imSize, 750, 2);
///
/// Метод для делания активными неактивными кнопок управления
/// в зависимости от этапа обработк изображения
///
///
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)
buttonReco