Автоматизированная система колоризации полутонового изображения
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
нейронной сетью используется класс NetworkWorker.java и ImageHelper.java
В подсистеме сегментации изображения используется класс ImageProxy.java и SegmentationEngine.java.
2.2 Разработка структуры хранения входных данных
Для каждого элемента входных данных используется универсальная структура работы с данными (Приложение Б). Данная структура состоит из нескольких составляющих: TrainingElement, TrainingSet и TrainingData. TrainingElement - хранит значение выборки. Использование внешнего интерфейса org.encog.engine.data.EngineData означает возможность получения и передачи данных в другие программы, поддерживающие этот интерфейс, что обеспечивает расширяемость АС. А интерфейс java.io.Serializable обеспечивает возможность хранения и получения выборок из файлов.
Массив элементов агрегируется в классе TrainingSet, который в свою очередь так же поддерживает интерфейс java.io.Serializable и внешний интерфейс для работы с массивом выборок org.encog.engine.data.EngineIndexableSet.
Для управления работой с выборками используется класс TrainingData. Он позволяет подгружать выборки из файлов, работать с другими программами с помощью использования внешних интерфейсов.
Все выборки буферизуются, чтобы не загружать их каждый раз из файла. Изображения состоят из достаточного большого числа пикселей (для изображения 640x480 это 307 200), каждый из которых разделяется на 3 канала, прежде чем попадает на обучение. Буферизация позволяет значительно ускорить процесс работы с файлом и повысить быстродействие программы.
Нормализация выборок производится до буферизации, чтобы при каждом обращении к выборке данные в выборке содержали значения, которые не требуют пересчета. Как было описано ранее, нормализация производится простым делением на 255, так как все значения содержат значения от 0 до 255.
2.3 Разработка алгоритмов системы
.3.1Алгоритм сегментации изображения
Алгоритм сегментации изображения позволяет выделить на изображении участки с монотонным изменением функции яркости изображения. Схема алгоритма приведена на рисунке 2.2.
Рисунок 2.2 - Схема алгоритма сегментации изображения
Вначале изображение разделяется на 3 изображения, по каналам RGB соответственно. В случае использования функции Гаусса для каждого из изображений производится размытие, для чего необходимо выполнить расчет маски для размытия изображения согласно введенному параметру ? (коэффициент размытия по Гауссу). Каждая дуга рассчитываемого графа хранит вес, равный сумме квадратов разностей значений каждого из каналов RGB вершин графа (соседних точек изображения). Для объединения вершин графа по введённому разрешающему критерию используется специальная структура DisjointSet, описанная в первом разделе, код структуры приведен в приложении Б. Данная структура позволяет произвести расчет графа минимальной стоимости (решение задачи Штейнера). Далее приводится описание поиска графа минимальной стоимости. После того, как задача решена, выдаем изображение-результат, раскрашенное в случайные цвета областей, построенных по полученному графу.
2.3.2Алгоритм обратного распространения ошибки
Алгоритм обратного распространения ошибки используется для обучения нейронной сети. Описание работы алгоритма и формулы расчета представлены в пункте 1.1.8 дипломного проектирования. Схема алгоритма приведена на рисунке 2.3 для сети с числом нейронов в скрытом слое равным М.
Рисунок 2.3 - Схема алгоритма обратного распространения ошибки
Алгоритм выполняется в отдельном потоке, чтобы не блокировать работу пользовательских задач. Остановка выполняется в случае выполнения хотя бы одного из условий:
-достигнуто значение допустимой ошибки обучения;
-выполнено максимально допустимое число итераций.
Вычисление ошибки производится на каждом шаге по формуле расчета СКО 1.15. Пересчет весов осуществляется по формуле 1.10, 1.13 или 1.14, в зависимости от выбранной модификации алгоритма обратного распространения ошибки.
2.4 Описание контрольного примера
Запускаем программу с помощью файла start.bat. На экране появляется главная форма приложения (рисунок 2.4).
Рисунок 2.4 - Главная форма приложения
На главной форме приложения нажимаем Изображение и выбираем файл изображения. В нашем случае мы выбрали изображение сёрфингиста на воде. Теперь для выбранного изображения необходимо задать параметры сегментирования. В качестве параметров выбирается функция сегментирования (Гаусса или Лапласа) и параметры сегментирования (минимальный размер сегмента и порог различия между соседними пикселями изображения.). В случае, если выбрана функция Гаусса то также необходимо ввести коэффициент размытия по Гауссу (рисунок 2.5).
После задания параметров нажимаем кнопку Сегментировать.
Рисунок 2.5 - Выбор параметров сегментирования
После сегментирования появляется окно с выделенными монотонными участками изображения согласно заданным параметрам на исходном полутоновом изображении. Чтобы отдельно посмотреть выделенные области можно снять галочку Показывать на начальном изображении. В правой части окна расположен список областей. Каждый элемент списка выделен в цвет соответствующей ему области. Название элемента списка соответствует выбранной для него нейронной сети. По умолчания для каждого элемента списка выбирается первая из списка сеть. Список сетей расположен под списком областей. Для задания областе изобра?/p>