Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мой бакалаврский опус.pdf
Скачиваний:
13
Добавлен:
27.03.2015
Размер:
1.29 Mб
Скачать

3. Описание реализации программной системы

3.1. Структура программной системы

Программная система, решающая поставленную задачу, была разработана на алгоритмическом языке С# в среде визуального программирования Microsoft Visual Studio 2008 .NET и состоит из 2 работающих независимо друг от друга Windows-приложений: основного и вспомогательного. Вспомогательное приложение обеспечивает формирование по входному изображению тренировочного шаблона и его сохранение в выбранный пользователем каталог на диске, а основное – непосредственно решает задачу классификации по предъявленному образу. При этом для обучения многослойного персептрона используется каталог тренировочных шаблонов, сформированный с помощью вспомогательного приложения.

Взаимодействие основного и вспомогательного приложений можно представить в виде следующей схемы (рис. 6):

Рис. 6. Схема взаимодействия приложений программной системы

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

26

3.2. Описание основных классов

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

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

1.Raster – инкапсулирует информацию входном изображении в виде массива пикселей, каждому из которых приписан некоторый цвет в модели RGB. Свойства Width и Height хранят ширину и высоту растра в пикселях, а имя файла, из которого было сформировано изображение, сохраняется в строковое поле FileName.

Объект класса Raster можно создать как задав требуемые размеры изображения, так и на основе выбранного графического файла, с помощью соответствующих конструкторов. Основной метод, используемый в классе Raster, – ToBitmap, который позволяет конвертировать массив пикселей изображения в формат BMP, используемый в данной программной системе.

2.Класс BinaryRaster наследуется от класса Raster и обеспечивает получение числовых характеристик, образующих признаковое описание области на бинарном изображении.

3.ImageFilter – базовый абстрактный класс для всех фильтров, реализованных при разработке данной программной системы. Единственный метод, объявленный в данном классе, – ProcessImage, он имеет следующий прототип:

abstract Raster ProcessImage (Raster source, BackgroundWorker worker),

где source – исходное растровое изображение, BackgroundWorker – компонент-индикатор, отражающий ход выполнения алгоритма фильтрации, реализованного в теле метода.

Каждый конкретный фильтр реализован в производном от ImageFilter классе, который имеет собственную реализацию метода ProcessImage. Фильтры, которые были реализованы

врамках данной программной системы в качестве производных классов для класса ImageFilter, представлены в таблице 2, а иерархия наследования между классами, используемыми для работы с растровыми изображениями, изображена на рис. 7.

27

Таблица 2. Классы, реализующие фильтры обработки растровых изображений

 

Название класса

 

 

 

 

 

Фильтр, реализуемый классом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MedianFilter

 

 

 

 

 

 

 

 

Медианный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MathMorphologyDilation

 

 

 

 

 

Морфологическое расширение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SimpleBinarizationFilter

 

 

 

 

 

Бинаризация по константному порогу

 

 

 

 

 

 

Базовый класс для фильтров бинаризации, использующих порог,

 

AdaptiveBinarizationFilter

 

 

 

 

 

 

 

вычисляемый по адаптивной схеме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Адаптивная бинаризация, порог – среднее значение яркости в окрестности

 

MeanBinarizationFilter

 

 

 

 

 

 

 

 

 

 

 

 

 

пикселя

 

MedianBinarizationFilter

Адаптивная бинаризация, порог – медиана набора яркостей пикселей из

 

 

 

 

 

 

 

 

 

 

 

 

 

окрестности

 

MinMaxBinarizationFilter

Адаптивная бинаризация, порог – среднее арифметическое минимального и

 

 

 

 

 

 

максимального значений яркости пикселей, попавших в окрестность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7. Иерархия наследования между классами для работы с растрами и их фильтрации

4. Для поддержки функционирования многослойного персептрона были разработаны следующие классы:

TNeiron – класс для базового элемента любой нейронной сети;

TLayer – класс, реализующий слой нейронов;

TPerceptron – класс для поддержки многослойного персептрона регулярной версии.

Помимо них, в качестве вспомогательных конструкций используются следующие структуры:

TTrainerTemplate – набор тренировочных шаблонов, предназначенный для обучения персептрона и состоящий из 2 векторов: вектора входных сигналов и вектора желаемых выходов;

28

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

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

Класс TLayer предназначен для поддержки слоёв, которые входят в состав персептрона. Каждый объект данного класса характеризуется типом слоя (flag), массивом образующих его нейронов (Neiron), а также их количеством (quantity).

Вклассах TNeiron и TLayer не реализовано никаких других методов, кроме конструкторов, позволяющих инициализировать их объекты.

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

- N – размерность пространства входных сигналов; - M – число нейронов в моторном (выходном) слое; - K – количество скрытых слоёв в персептроне;

- Layer – массив слоёв, из которых состоит персептрон;

- SynapticWeight – множество весов синаптических связей между каждыми 2 соседними слоями персептрона.

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

Перечислим основные методы класса TPerceptron и их назначение:

29