Реферати українською » Информатика, программирование » Розпізнавання графічних символів


Реферат Розпізнавання графічних символів

Страница 1 из 2 | Следующая страница

>СОДЕРЖАНИЕ

ЗАПРОВАДЖЕННЯ

1. ПОСТАНОВКА ЗАВДАННЯ

2.ОПИСАНИЕИСПОЛЬЗОВАННЫХАЛГОРИТМОВ

2.1 Алгоритм сегментації тексту

2.2 Алгоритм розпізнавання слова.Персептрон

3. РОЗРОБКА ІРЕАЛИЗАЦИЯ ПО

3.1 Архітектура програми

3.2 Інтерфейс програми

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

4. ТЕСТУВАННЯ ПО

4.1 Запуск докладання

ВИСНОВКИ

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

>ПРИЛОЖЕНИЕ AЛИСТИНГ ПРОГРАМИ

>ОПИСЬЛИСТОВГРАФИЧЕСКОЙ ЧАСТИНИ


ЗАПРОВАДЖЕННЯ

Останніми роками розпізнавання образів знаходить усе більше використання у повсякденні. Розпізнавання мови і рукописного тексту значно спрощує взаємодія людини з комп'ютером, розпізнавання друкованого тексту використовується для перекладу документів мають у електронну форму.

Реалізація методів розпізнавання необхідна в автоматизованих системах, виділені на використання їх у криміналістиці, медицині, військовій справі.

Особливо слід відзначити розпізнавання повноцінних зображень. Область застосування зазначеного розділу багатогранна. Наприклад, на сучасних заводах контроль якості готової продукції найчастіше виробляють із використанням систем розпізнавання, які відсіють шлюб. Розпізнавання повноцінних зображень застосовується на дорогах, визначення і розпізнавання номерів автомобілів, контроль їх швидкості. Обробка зображень часі під час аналізу знімків з космосу, і з літаків. Отже, видно, що сферу застосування розпізнавання зображень широка і багатогранна і дозволяє набагато скоротити і спростити робочий процес разом із тим підвищити їхню якість. Проте, можливості інтелектуального аналізу зображень з допомогою комп'ютерів залишають бажати кращого. Можна впевнено відзначити лише успіхи у розпізнаванні літер і цифр у і текстах, і навіть аналізі зображень спеціального виду. Така область як розпізнавання текстур, дослідження якій проводять не одне десятиліття, поки що немає універсальних методів.

Завданням розпізнавання зображень є застосування методів, дозволяють або отримати деяке опис зображення, поданого на вхід системи, або віднести це зображення до певного певному класу. Процедура розпізнавання застосовується до певного зображенню й забезпечує перетворення на певну абстрактне опис: набір чисел, ланцюжок символів чи граф. Наступна обробка такого описи стаття дозволяє віднести вихідне зображення до жодного з кількох класів.

Але постає ряд труднощів й питання. Найчастіше це пов'язано з тим, що зображення пред'являються на складному тлі чи зображення еталон і вхідні зображення відрізняються становище у зору, чи вхідні зображення не збігаються з еталонами з допомогою випадкових перешкод.

У цьому курсовому проекті розроблено додаток, дозволяють на зображенні якого або документа, або тексту знаходити слово "Указ".Входное зображення то, можливо будь-якого розміру, орієнтація тексту мусить бути горизонтальній.

Додаток реалізовано середовищі програмування MSVisual Studio 2008 мовою З#. платформа .Net дає широкий набір класів до роботи з зображеннями і методи обробки результатів.


1. ПОСТАНОВКА ЗАВДАННЯ

Відповідно до завданням до курсовому проекту необхідно спроектувати додаток, реалізоване мовою З# серед розробки MicrosoftVisual Studio 2008, реалізує розпізнавання слова "Указ" на зображенні документа.

Вихідні дані:

1.Растровое зображення документа.

2. Текст документа має бути написаний білому тлі, чорним шрифтом.

3. Шрифт тексту ні бути курсивним або напівжирним.

4. Розмір зображення може бути будь-якою.

5. Становище тексту на зображенні горизонтальне.

Додаток має виконувати такі:

1. Завантаження зображення на додаток.

2.Сегментация тексту на свої слова.

3. Розпізнавання серед слів слово "Указ".

Вихідних даних:

1. Таблиця знайдених слів "Указ".


2.ОПИСАНИЕИСПОЛЬЗОВАННЫХАЛГОРИТМОВ

2.1 Алгоритм сегментації тексту

Процес сегментації тексту і двох етапів: виділення рядків тексту і виділення слів в рядках.

Пошук рядків здійснюється шляхом переглядупикселей зображення згори донизу. При проході запам'ятовуються вертикальні координати всіх повністю білих смуг на зображенні (малюнок 2.1).

Малюнок 2.1 –Разбиение тексту на рядки

Після перебування всіх білих горизонтальних смуг аналізуються їх індекси. Щоб не допустити сусідніх ліній, рядком тексту вважається растр які перебувають між двома послідовними у списку, але з сусідніми білими смужками.

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

Алгоритм сегментації тексту представлено графічної частини

2.2 Алгоритм розпізнавання слова.Персептрон

Розпізнавання слова "Указ" в розробленому додатку, реалізовано з урахуваннямперсептрона. Алгоритм навчанняперсептрона – не враховуючи правильності відповіді.Персептрон побудований за схемою "Кількасумматоров". Загальна схемаперсептрона представлена малюнку 2.2

Малюнок 2.2 – Схемаперсептрона з кількомасумматорами

КоженА-елемент має низку входів і тільки вихід.

>А-елементи виробляють алгебраїчне підсумовування сигналів, які поступили з їхньої входи, і отриману суму порівнюють із однаковою всімА-елементов величиною. Якщо сума більше,А-елемент порушується видає не вдома сигнал, рівний одиниці. Якщо сума менше,А-елемент залишаєтьсяневозбужденним і вихідний його сигнал нульовий. Отже, вихідний сигналj-го-елемента:

yj =

де величинаrij приймає значення +1, якщо і -і рецептор підключений до входуj-го-елемента зі знаком плюс; і значення -1, якщо рецептор підключений зі знаком мінус, і значення 0, якщоi-ий рецептор доj-му-елементу не підключається (j = 1, 2, …,m, деm – число-елементов).

Вихідні сигнали-елементов множаться на перемінні коефіцієнтиj.

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

> =

>Предъявленний об'єкт належить до того що образу, акумулятор якого має найбільший сигнал.

У цьому роботі є дві було розпізнати класу умовно з можна визначити "Указ" і "Не указ". Якщо навчання відбувалося класу "Указ" на вхідперсептрона надходять зображення слова "Указ" написане різними шрифтами. Якщо навчання відбувалося класу "Не указ", підвищення надійності роботиперсептрона, надходять самі зображення з текстом "Указ", але зинвертированними кольором.    

У кожному тактіперсептрон відповідає на пред'явлений йому об'єкт порушенням деякихА-елементов. Навчання у тому, що коефіцієнтиj порушених у цьому тактіА-елементов збільшуються певну величину (наприклад на одиницю), у цьому такті показали об'єкт образу Проте й зменшується з цього ж величину, якщо показали об'єкт образу У.


3. РОЗРОБКА ІРЕАЛИЗАЦИЯ ПО

3.1 Архітектура програми

Програма написана як проект WindowsFormsApplication, тобто.windows-приложение, графічний інтерфейс якого представлений формами і діалоговими вікнами. Структура розробленого проекту представлена малюнку 3.1.

Малюнок 3.1 – Структура проекту

Додаток розроблено за принципами ОВП. Діаграма розроблених класів представлена малюнку 3.2


Малюнок 3.2 – Діаграма класів докладання

Загальна схема докладання внатацииIDEF0 приведено малюнку 3.3.

Малюнок 3.3 – Загальна схемаIDEF0 докладання


3.2 Інтерфейс програми

>Пользовательский інтерфейс представлений головним вікном докладання, з усіма елементами управління, необхідні відображення і методи обробки інформації. Головна форма як проектування показано малюнку 3.4.

Малюнок 3.4 – Головна форма докладання як проектування

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

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

>Form1 – клас, описує головну форму докладання, містить методи обробки подій від елементів управління. Містить елементи самонаведення відображення вихідного зображення, сегментів зображення результатів розпізнавання.

>Segmentation – описує процес сегментації зображення.

Методи:

publicstaticList<Bitmap>GetStrings(Bitmaptext) – виділеннярастров, відповідних рядкам тексту;

publicstaticList<Bitmap>GetStringWords(Bitmapstr) – сегментування рядка на свої слова;

publicstaticList <>Bitmap>GetWords(Bitmaptext) – виділення слів з усього тексту;

publicstaticBitmapTrimBitmap(Bitmapbmp) – обрізка білих полів навколо зображення набитмапе.

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

Методи :

publicvoidTeach(Bitmap b,intclassindex) – навчанняперсептрона;

publicstringRecognize(Bitmap b) – розпізнавання зображення b;

publicvoidSerializeParams() – збереження параметрівперсептрона на диску;

publicvoidDeserializeParams() – читання параметрівперсептрона з диска;

publicstaticBitmapNormalizeBitmap(Bitmap b,Sizesz) – припасуваннябитмапа b за величиноюsz. На виходібинаризованное зображення розміруsz;

publicstaticBitmapInverseBitmap(Bitmap b) – інверсія кольору зображення b.


4. ТЕСТУВАННЯ ПО

Вимоги до встановленому ПО:

- .NetFramework 3.5

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

Тестові приклади виконувалися серед ОС Windows 7Ultimate під час використання процесора AMDAthlon 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) [Електрон. ресурс]. Режим доступу:msdn/

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


>ПРИЛОЖЕНИЕ A

Невеликиймануал попроге:

- Текст може бути чорним на білому

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

- Орієнтація тексту під кутом.

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

- Розпізнаванняперсептроном з кількомасумматорами і алгоритмом навчання не враховуючи правильності відповіді (вони можуть це запитати=)

- Для навчанняперсептрона треба відкрити зображення "Картинка дляобучения.png" з папки "тестові зображення" або створити аналогічну самостійно й більше відчинити їх. Потім натиснути "сегментація", Потім "Навчити", можна зберегти навчання, натиснувши "зберегти". Нині можна відкривати зображення, що буде розпізнаватися. Для розпізнавання треба натиснути "сегментація", потім "розпізнати".

- Якщо проводилося збереження навчання, можна не навчати. Для розпізнавання у разі треба робити такі: відкриваєшраспознаваемое зображення, натискаєш ">Сегментация", натискаєш "завантажити", натискаєш "розпізнати".

- У записці в графічної частини потрібно вставити певні дані, я їх зазначив червоним.

- шлях доEXE-шнику: >WordSearcherWordSearcherbinDebugWordSearcher.exe

Якщо буде якісьбаги чи питання,сообщай - виправлю.

З повагою,Свирко Юрій

Mail:[email protected]

>Phone: 8-033-63-123-60

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

>using System;

>usingSystem.Collections.Generic;

>usingSystem.ComponentModel;

>usingSystem.Data;

>usingSystem.Drawing;

>usingSystem.Linq;

>usingSystem.Text;

>usingSystem.Windows.Forms;

>namespaceWordSearcher

{

publicpartialclassFormMain :Form

{

/// <>summary>

/// Прапор дозволу розпізнавання

/// </>summary>

>boolenableRecognize =false;

/// <>summary>

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

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

/// </>summary>

privatestaticSizeimSize = newSize(65, 25);

/// <>summary>

/// Стан форми

/// </>summary>

privateFormStateformState =FormState.Empty;

/// <>summary>

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

/// </>summary>

privateList<Bitmap>words;

/// <>summary>

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

/// </>summary>

privateRecognizerr = newRecognizer(imSize, 750, 2);

/// <>summary>

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

/// залежно від етапуобработк зображення

/// </>summary>

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

privatevoidButtonsEnabled(FormStatefs)

{

>formState =fs;

>switch (>fs)

{

>caseFormState.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;

>caseFormState.Open:

>buttonOpen.Enabled =true;

>buttonSegment.Enabled =true;

>buttonRecognize.Enabled =false;

>buttonTeach.Enabled =false;

>buttonLoadTeaching.Enabled =false;

>buttonSaveTeaching.Enabled =false;

>dataGridViewSegments.Rows.Clear();

>break;

>caseFormState.Segmented:

>buttonOpen.Enabled =true;

>buttonSegment.Enabled =true;

>if (>enableRecognize)

>buttonRecognize.Enabled =true;

>else

>buttonRecognize.Enabled =false;

>buttonTeach.Enabled =true;

>buttonLoadTeaching.Enabled =true;

>buttonSaveTeaching.Enabled =false;

>break;

>caseFormState.Teached:

>buttonOpen.Enabled =true;

>buttonSegment.Enabled =false;

>buttonRecognize.Enabled =true;

>buttonTeach.Enabled =false;

>buttonLoadTeaching.Enabled =false;

>buttonSaveTeaching.Enabled =true;

>enableRecognize =true;

>break;

>caseFormState.Deserialized:

>buttonOpen.Enabled =true;

>buttonSegment.Enabled =false;

>buttonRecognize.Enabled =true;

>buttonTeach.Enabled =false;

>buttonLoadTeaching.Enabled =false;

>buttonSaveTeaching.Enabled =true;

>enableRecognize =true;

>break;

>caseFormState.Recognized:

>buttonOpen.Enabled =true;

>buttonSegment.Enabled =false;

>buttonRecognize.Enabled =true;

>buttonTeach.Enabled =false;

>buttonLoadTeaching.Enabled =true;

>buttonSaveTeaching.Enabled =true;

>break;

}

}

publicFormMain()

{

>InitializeComponent();

}

privatevoidbuttonOpen_Click(objectsender,EventArgs e)

{

>try

{

>Bitmap b;

>if (>openFileDialog1.ShowDialog() ==DialogResult.OK)

{

//Якщоизобраение має індексований формат

//то переводимо їх у звичайний,потомутчо зиндексировнним неработат

//>setpixel

b = newBitmap(openFileDialog1.FileName);

>if (>b.PixelFormat ==System.Drawing.Imaging.PixelFormat.Format1bppIndexed ||

>b.PixelFormat ==System.Drawing.Imaging.PixelFormat.Format4bppIndexed ||

>b.PixelFormat ==System.Drawing.Imaging.PixelFormat.Format8bppIndexed)

b = newBitmap(b);

>pictureBoxMain.Image = b;

>this.ButtonsEnabled(FormState.Open);

}

>else

{

>this.ButtonsEnabled(FormState.Empty);

}

}

>catch (>Exception ex)

{

>MessageBox.Show(ex.Message);

}

}

privatevoidbuttonSegment_Click(objectsender,EventArgs e)

{

//Отримуємо набірбитмапов відповідних словами тексту

>words =Segmentation.GetWords((Bitmap)pictureBoxMain.Image);

>dataGridViewSegments.RowCount =words.Count;

>int і =0;

//Перебираємо слів і відображаємо в таблиці

>foreach (>Bitmapword inwords)

{

>dataGridViewSegments.Rows[i].Cells[0].Value =word;

і++;

}

>ButtonsEnabled(FormState.Segmented);

}

privatevoidbuttonRecognize_Click(objectsender,EventArgs e)

{

>int і = 0;

>foreach (>Bitmapword inwords)

{

>dataGridViewSegments.Rows[i].Cells[1].Value =r.Recognize(Recognizer.NormalizeBitmap(word,imSize));

і++;

}

>ButtonsEnabled(FormState.Recognized);

}

privatevoidbuttonTeach_Click(objectsender,EventArgs e)

{

//Перебираємо слова навчаємо ними

//>т.к. класу дляраспознаваня два то

//перший клас навчаємо просто зображення слова

//а другий навчаємопротивопорложнимизображение(т.е інвертуємо кольору вихідного зображення)

>for (>int і = 0; і < 5; і++)

{

>foreach (>Bitmapword inwords)

{

>r.Teach(Recognizer.NormalizeBitmap(word,imSize), 0);

>r.Teach(Recognizer.InverseBitmap(Recognizer.NormalizeBitmap(word,imSize)), 1);

}

}

>ButtonsEnabled(FormState.Teached);

}

privatevoidbuttonSaveTeaching_Click(objectsender,EventArgs e)

{

>r.SerializeParams();

>ButtonsEnabled(FormState.Serialized);

}

privatevoidbuttonLoadTeaching_Click(objectsender,EventArgs e)

{

>r.DeserializeParams();

>ButtonsEnabled(FormState.Deserialized);

}

privatevoidFormMain_Load(objectsender,EventArgs e)

{

>this.ButtonsEnabled(FormState.Empty);

}

}

// <>summary>

/// Стану зображення

/// </>summary>

>enumFormState

{

/// <>summary>

/// зображення не відкрито

/// </>summary>

>Empty,

/// <>summary>

/// Зображення відкрито

/// </>summary>

Open,

/// <>summary>

///Сегментировано

/// </>summary>

>Segmented,

/// <>summary>

///Персептрон навчений

/// </>summary>

>Teached,

/// <>summary>

/// Параметриперсептрона збережені

/// </>summary>

>Serialized,

/// <>summary>

/// Параметриперсептрона завантажені

/// </>summary>

>Deserialized,

/// <>summary>

///Распознано

/// </>summary>

>Recognized

}

}

>using System;

>usingSystem.Collections.Generic;

>usingSystem.Linq;

>usingSystem.Text;

>usingSystem.Drawing;

>usingSystem.Windows.Forms;

>usingSystem.IO;

>usingSystem.Runtime.Serialization.Formatters.Binary;

>namespaceWordSearcher

{

/// <>summary>

///Реализуетраспозноание зображень

/// з урахуваннямперсептрона

/// </>summary>

>classRecognizer

{

/// <>summary>

/// матриця знаків входівперсептрона

/// </>summary>

privateint[,]xa;

/// <>summary>

/// Масивлямд

/// </>summary>

privateint[,] l;

/// <>summary>

/// Масив імен класів

/// </>summary>

privatestring[]classes = {"Указ",

"Не указ"};

/// <>summary>

/// Масив імен класів

/// </>summary>

publicstring[]ClassesList

{

>get {returnclasses; }

}

/// <>summary>

///Инициализируетxa-матрицу

/// </>summary>

/// <>paramname="sz">размеризображения</param>

/// <>paramname="aCount">количесвтоа-елементов</param>

/// <>paramname="lCount">количесвтоклассов</param>

publicRecognizer(Sizesz,intaCount,intlCount)

{

>Randomr = newRandom();

//Створенняматрциха

>xa = newint[sz.Height *sz.Width,aCount];

//Створення матрицілямд

l = newint[lCount,aCount];

//Початкова

//>иницализациялямдеденицами

>for (>int і = 0; і <l.GetLength(0); і++)

{

>for (>int j = 0; j <l.GetLength(1); j++)

{

>l[i, j] = 1;

}

}

//заповнення матриці

//кожному зарецептора(строчки)

//>назначаетя лише однеа-елемент(столбец) зі знаком + чи -

>for (>int і = 0; і <xa.GetLength(0); і++)

{

>xa[i,r.Next(aCount)] = (>int)Math.Pow(-1,r.Next(1, 3));

}

}

/// <>summary>

/// Навчанняперсептрона

/// </>summary>

/// <>paramname="b">битмап дляобучения</param>

/// <>paramname="classindex">имя класу доккоторому ставитисяизображение</param>

publicvoidTeach(Bitmap b,intclassindex)

{

>int[] x = newint[b.Height *b.Width];

>intk = 0;

//>Инициализация вхідних рецепторів

>for (>int і = 0; і <b.Width; і++)

{

>for (>int j = 0; j <b.Height; j++)

{

>if (>b.GetPixel(i, j) ==Color.FromArgb(0, 0, 0))

>x[k] = 1;

>k++;

}

}

//Вектор сум рецепторів

>int[]sumx = newint[xa.GetLength(1)];

//Вектор виходівА-елементов

>int[]outa = newint[xa.GetLength(1)];

//підсумовування сигналів від рецепторів

>for (>int і = 0; і <xa.GetLength(1); і++)

{

>for (>int j = 0; j <xa.GetLength(0); j++)

{

>sumx[i] +=x[j] *xa[j, і];

}

//Якщо сума більше нуля вихід а елемента 1

>if (>sumx[i] > 0)

>outa[i] = 1;

}

//змінакоефициетовлямда

>for (>int і = 0; і <outa.Length; і++)

{

//Якщоа-елемент збуджено то змінюємолямди

>if (>outa[i] == 1)

{

//перебір всіх класів

>for (>int j = 0; j <l.GetLength(0); j++)

{

//Збільшення на 1лямд для класу який навчається

//і зменшення всімосатльних

>if (>classindex == j)

>l[j, і]++;

>else

>l[j, і]--;

}

}

}

}

/// <>summary>

/// Розпізнаванняизобржения

/// </>summary>

/// <>paramname="b">битмапизображения</param>

/// <>returns>имя класу якого віднесеноизображение</returns>

publicstringRecognize(Bitmap b)

{

>int[] x = newint[b.Height *b.Width];

>intk = 0;

//>Инициализация вхідних рецепторів

>for (>int і = 0; і <b.Width; і++)

{

>for (>int j = 0; j <b.Height; j++)

{

>if (>b.GetPixel(i, j)

Страница 1 из 2 | Следующая страница

Схожі реферати:

Навігація