Автоматизированная система колоризации полутонового изображения

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

http: ///

РЕФЕРАТ

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

Проведен анализ предметной области и по методологии UML разработан логический проект автоматизированной информационной системы.

Программная реализация выполнена в среде разработки IntelliJ Idea 10.0 на языке программирования Java 6.0 (JDK 1. 6).

СОДЕРЖАНИЕ

  • ВВЕДЕНИЕ
  • 1. СИСТЕМОТЕХНИЧЕСКАЯ ЧАСТЬ
    • 1.1 Анализ предметной области и постановка задачи проектирования
      • 1.1.1 Методы сегментации изображения
      • 1.1.2 Сегментация как разбиение изображения на однородные области
      • 1.1.3 Оценка качества работы методов сегментации
      • 1.1.4 Кластеризация цветового пространства
      • 1.1.5 Выращивание регионов, дробление-слияние
      • 1.1.6 Методы, основанные на операторах выделения краев
      • 1.1.7 Методы теории графов
      • 1.1.8 Колоризация изображения нейронной сетью
      • 1.1.9 Аналитический обзор аналогов
    • 1.2 Постановка задачи
    • 1.3 Разработка логической модели по методологии UML
      • 1.3.1 Диаграмма вариантов использования
      • 1.3.2 Диаграмма классов
      • 1.3.3 Диаграмма состояний
      • 1.3.4 Диаграмма последовательности и кооперации
      • 1.3.5 Диаграмма компонентов
      • 1.3.6 Диаграмма развертывания
      • 1.3.7 Диаграмма деятельности
    • 1.4 Оценка системных и эксплуатационных характеристик
      • 1.4.1 Расчет объема ВЗУ
      • 1.4.2 Расчет объема ОЗУ
      • 1.4.3 Расчет времени реакции системы
      • 1.4.4 Минимальные требования к системе
  • 2. КОНСТРУКТОРСКО-ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ
    • 2.1 Выбор и обоснование средств реализации
      • 2.1.1 Выбор языка программирования
      • 2.1.2 Выбор среды программирования
      • 2.1.3 Выбор операционной среды
    • 2.2 Описание программной реализации
    • 2.3 Разработка структуры хранения входных данных
    • 2.4 Разработка алгоритмов системы
      • 2.4.1 Алгоритм сегментации изображения
      • 2.4.2 Алгоритм обратного распространения ошибки
    • 2.5 Описание контрольного примера
    • 2.6 Разработка методики испытания
    • 2.7 Анализ полученных результатов
  • 3. БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ
    • 3.1 Обеспечение безопасности на стадии функционирования АС
    • 3.2 Нагрузки интеллектуального характера
      • 3.2.1 Содержание работы
      • 3.2.2 Восприятие сигналов (информации) и их оценка
      • 3.2.3 Распределение функций по степени сложности задания
      • 3.2.4 Характер выполняемой работы
    • 3.3 Сенсорные нагрузки
      • 3.3.1 Длительность сосредоточенного наблюдения
      • 3.3.2 Плотность сигналов за один час работы
      • 3.3.3 Число объектов одновременного наблюдения
      • 3.3.4 Размер объекта различения при деятельности сосредоточенного внимания
      • 3.3.5 Работа с оптическими приборами при длительности сосредоточенного наблюдения
      • 3.3.6 Наблюдение за экраном монитора в часах
      • 3.3.7 Нагрузка на слуховой анализатор
      • 3.3.8 Нагрузка на голосовой аппарат
    • 3.4 Эмоциональные нагрузки
      • 3.4.1 Степень ответственности за результат своей собственной деятельности. Значимость ошибки
      • 3.4.2 Степень риска для собственной жизни
      • 3.4.3 Ответственность за безопасность других лиц
      • 3.4.4 Количество конфликтных производственных ситуаций за смену
    • 3.5 Монотонность нагрузок
      • 3.5.1 Число элементов, необходимых для реализации простого задания или многократно повторяющихся операций
      • 3.5.2 Продолжительность выполнения простых заданий или повторяющихся операций
      • 3.5.3 Время активных действий
      • 3.5.4 Монотонность производственной обстановки
    • 3.6 Режим работы
      • 3.6.1 Фактическая продолжительность рабочего дня
      • 3.6.2 Сменность работы
      • 3.6.3 Общая оценка напряженности трудового процесса
  • 4. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ СОЗДАНИЯ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ
    • 4.1 Планирование и организация процесса разработки
    • 4.2 Технико-экономическое обоснование АСКПИ
    • 4.3 Расчет затрат на разработку АСКПИ
    • 4.4 Расчет-прогноз минимальной цены разработки АСКПИ
    • 4.5 Расчет целесообразного объема продаж и оценка безубыточности
    • 4.6 Расчет единовременных затрат на внедрение
    • 4.7 Расчет текущих затрат на функционирование АСКПИ
    • 4.8 Расчет экономических результатов от внедрения
    • 4.9 Расчет экономической эффективности инвестиционных затрат на внедрение
  • ЗАКЛЮЧЕНИЕ
  • Список использованных источников
  • ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

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

В рамках дипломного проекта разрабатывается приложение, целью которого ставится преобразование черно-белых полутоновых изображений в цветные. Использование ручных методов обладает такими недостатками, как большие временные и финансовые затраты, ресурсоемкость и сложность. Пример использования: колоризация фильмов. В 2009 году были колоризованы фильмы «Семнадцать мгновений весны» и «В бой идут одни старики». Колоризация была организована компанией «Grading Dimension Pictures» и выполнена на студии «Legend Films» и в Индии. При колоризации постарались воспроизвести цвета советской плёнки 1973 года; дополнительную сложность представляло обилие оттенков зелёного цвета (до 27 в одном кадре). Стоимость работ составила около 500 тыс. $.

Разрабатываемая автоматизированная система должна обладать следующими свойствами:

1) компактность;

2) быстродействие;

3) простота.

Разработка будет вестись по технологии быстрой разработки приложений RAD (Rapid Application Development), которая поддерживается методологиями объектно-ориентированного анализа и проектирования и структурного проектирования, и методологии UML.

1. СИСТЕМОТЕХНИЧЕСКАЯ ЧАСТЬ

1.1 Анализ предметной области и постановка задачи проектирования

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

Сегментация -- это процесс разделения цифрового изображения на несколько сегментов. Цель сегментации заключается в упрощении и/или изменении представления изображения, чтобы его было проще и легче анализировать [1]. Сегментация изображений обычно используется для того, чтобы выделить объекты и границы (линии, кривые, и т. д.) на изображениях. Более точно, сегментация изображений -- это процесс присвоения таких меток каждому пикселю изображения, что пиксели с одинаковыми метками имеют общие визуальные характеристики.

1.1.1 Методы сегментации изображения

Методы сегментации можно разделить на два класса: автоматические — не требующие взаимодействия с пользователем и интерактивные — использующие пользовательский ввод непосредственно в процессе работы. В данной работе рассматриваются только автоматические методы [2].

Задачи автоматической сегментации делятся на два класса:

1) выделение областей изображения с известными свойствами;

2) разбиение изображения на однородные области.

1.1.2 Сегментация как разбиение изображения на однородные области

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

Ясно, что задача разбиения изображения на однородные области поставлена некорректно. Внизу (рисунок 1. 1) приведены четыре варианта сегментации одного и того же изображения из Berkeley Segmentation Dataset, выполненные разными людьми.

Рисунок 1.1 — Варианты сегментации изображения

Как видно, среди участников эксперимента нет единства в выборе разбиения изображения. Далеко не всегда для изображения есть единственно «правильная» сегментация, и далеко не всегда задача сегментации имеет единственное решение. По той же причине нет и объективного критерия оценки качества разбиения изображения [3].

1.1.3 Оценка качества работы методов сегментации

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

Для грубой оценки качества метода в конкретной задаче обычно фиксируют несколько свойств, которыми должна обладать хорошая сегментация. Качество работы метода оценивается в зависимости от того, насколько полученная сегментация обладает этими свойствами. Наиболее часто используются следующие свойства [4]:

1) однородность регионов (однородность цвета или текстуры);

2) непохожесть соседних регионов;

3) гладкость границы региона;

4) маленькое количество мелких «дырок» внутри региона;

и т. д.

1.1.4 Кластеризация цветового пространства

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

В качестве признаков точки изображения можно использовать представление ее цвета в некотором цветовом пространстве, примером метрики (меры близости) может быть евклидово расстояние между векторами в пространстве признаков. Тогда результатом кластеризации будет квантование цвета для изображения. Задав отображение в пространство признаков, можно воспользоваться любыми методами кластерного анализа. Наиболее популярные методы кластеризации, используемые для сегментации изображений — k-средних (обобщенный метод Ллойда), EM алгоритм.

Основная проблема методов кластеризации, состоит в том, что пространственное расположение точек либо не учитывается совсем, либо учитывается косвенно (например, используя координаты точки как один из признаков). Поэтому обычно после кластеризации точек изображения проводят процедуру выделения связных компонент.

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

1.1.5 Выращивание регионов, дробление-слияние

Методы этой группы учитывают пространственное расположение точек напрямую. Методы выращивания регионов основаны на следующей идее. Сначала по некоторому правилу выбираются центры регионов (seeds), к которым поэтапно присоединяются соседние точки, удовлетворяющие некоторому критерию. Процесс выращивания регионов (regiongrowing) останавливается, когда ни одна точка изображения не может быть присоединена ни к одному региону [5].

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

В основном процедура выращивания региона используется для получения отдельных регионов, однако, применяя эту процедуру последовательно или одновременно для нескольких регионов, можно получить разбиение всего изображения. Существуют различные стратегии выбора зерен (seeds) и выращивания регионов. Методы дробления-слияния состоят из двух основных этапов: дробления и слияния. Дробление начинается с некоторого разбиения изображения, не обязательно на однородные области. Процесс дробления областей происходит до тех пор, пока не будет получено разбиение изображения (пересегментация), удовлетворяющее свойству однородности сегментов. Затем происходит объединение схожих соседних сегментов до тех пор, пока не будет получено разбиение изображения на однородные области максимального размера [5]. Конкретные методы различаются алгоритмами, используемыми на этапах дробления и слияния. Для получения пересегментации изображения используются алгоритмы k-средних, watershed, fuzzy expert systems, на втором этапе используются алгоритмы k-средних, самоорганизующиеся карты Кохонена, fuzzy expert systems, и т. д. На этапе слияния регионов используются relaxation process, k-средних, SIDE-уравнения, самоорганизующиеся карты Кохонена, и т. д. [5].

1.1.6 Методы, основанные на операторах выделения краев

При данном подходе задача сегментации формулируется как задача поиска границ регионов. Методы поиска границ хорошо разработаны для полутоновых изображений. Полутоновое изображение рассматривается как функция двух переменных (x и y), и предполагается, что границы регионов соответствуют максимумам градиента этой функции. Для их поиска применяется аппарат дифференциальной геометрии (в простейшем случае это фильтры Roberts, Kirsch, Prewitt, Sobel) [4].

Для повышения устойчивости к шуму, перед применением фильтрации изображение обычно размывают. Благодаря коммутативности оператора Гаусса (формула 1. 1) и Лапласа (формула 1. 2) фильтра, можно одновременно осуществлять размытие и поиск границ.

,(1. 1)

где r — радиус размытия,

— коэффициент размытия по Гауссу.

. (1. 2)

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

Рисунок 1.2 — Результат применения фильтра Canny

1.1.7 Методы теории графов

Методы теории графов — одно из наиболее активно развивающихся направлений в сегментации изображений.

Общая идея методов этой группы следующая. Изображение представляется в виде взвешенного графа, с вершинами в точках изображения. Вес ребра графа отражает сходство точек в некотором смысле (расстояние между точками по некоторой метрике). Разбиение изображения моделируется разрезами графа (рисунок 1. 3) [5].

Рисунки 1.3 — Пример моделирования изображения взвешенным графом.

Обычно в методах теории графов вводится функционал «стоимости» разреза, отражающий качество полученной сегментации. Так задача разбиения изображения на однородные области сводится к оптимизационной задаче поиска разреза минимальной стоимости на графе. Такой подход позволяет помимо однородности цвета и текстуры сегментов управлять также формой сегментов, их размером, сложностью границ и т. п.

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

Метод сегментации SWA (Segmentation by Weighted Aggregation) основан на группировании схожих точек изображения. Основная идея метода состоит в построении пирамиды взвешенных графов, каждый из которых получен из предыдущего путем объединения схожих вершин [3].

На каждом шаге веса связей пересчитываются. В процессе построения пирамиды вычисляются различные статистики, характеризующие форму, цвет, текстуру регионов, эти статистики используются для вычисления меры сходства регионов (рисунок 1. 4). Затем, следуя идеологии методов теории графов, для полученного графа вводится функционал стоимости разреза и ищется разрез минимальной стоимости. При этом в отличие от большинства методов теории графов, SWA имеет сложность O (n), где n — число точек изображения, причем число операций для каждой точки составляет всего несколько десятков.

Рисунок 1.4 — Построение пирамиды взвешенных графов для изображения

В модификации алгоритма на каждом следующем шаге анализируется и корректируется результат предыдущего агрегирования, а также используется информация о границах полученных сегментов (рисунок 1. 5) [5].

Чтобы приблизиться к теме сегментации изображений, описание продолжим в терминологии пикселей изображения и их цвета. Допустим, мы сегментируем попугайчика на фоне синего моря. Сначала каждый пиксель (вершина графа) будет сам по себе — в собственном сегменте (множестве), но в ходе алгоритма пиксели (вершины) «схожего» цвета (одного объекта) постепенно объединяются в один сегмент.

Рисунок 1.5 — Сравнение результатов работы алгоритма SWA, его модификации и Normalized cuts

Допустим, на определенном шаге алгоритма попалось ребро, соединяющее два соседних пикселя: на одном конце ребра пиксель «оранжевый», а на другом «красный». Длину ребра определим как «разницу цвета» между пикселями. Все ребра меньшей длины (со схожим цветом) уже объединены: наверняка уже выделен оранжевый и красный сегмент попугайчика. Следуя алгоритму, нам нужно узнать, в одном ли сегменте лежат текущие «оранжевый» и «красный» пиксель? Если в разных сегментах, и мы считаем, что сегменты по цвету схожи, то объединяем их в один и продолжаем построение…

Используемая для этих операций структура — очень похожа на дерево (хотя и реализуется массивом индексов). В ней для каждого пикселя указан предок, т. е. указатель (индекс) на некоторый схожий по цвету пиксель, находящийся в том же самом сегменте. Основные операции:

Поиск сегмента некоторого пикселя 'x': идем по предкам до самого верха. Самый верхний пиксель — это корень дерева, «представитель» данного сегмента на текущий момент.

Объединение сегментов. Если у пикселей разные «представители» -- значит, они принадлежат различным сегментам, иначе корень был бы один. Для их объединения «представителя» сегмента меньшей высоты (от самого далекого пикселя до корня) ссылаем (из него указываем) на более длинного «представителя», чтобы не увеличивать высоту дерева. Теперь имеем объединенный сегмент с общим представителем (рисунок 1. 6).

Для того чтобы в следующий раз не бегать далеко от пикселя к корню, после того, как «представитель» будет успешно обнаружен, устанавливаем прямую ссылку из пикселя — сразу на него. Это сокращает путь следующих поисков, и называется «path compression».

Теперь мы можем эффективно искать сегменты по пикселям и объединять их, а так же выстраивать MST (Minimum Spanning Tree — минимальное остовное дерево данного графа) по алгоритму Краскала [3] (рисунок 1. 6). Решение о том, соединять области или нет, принимается на основании введённых пользователем коэффициентов.

Рисунок 1.6 — Алгоритм Краскала.

1.1.8 Колоризация изображения нейронной сетью

Колоризация — любой процесс, в ходе которого в монохромное (чёрно-белое или тонированное, например, в сепию) изображение или последовательность изображений добавляется цвет [6].

Цвет — качественная субъективная характеристика электромагнитного излучения оптического диапазона, определяемая на основании возникающего физиологического зрительного ощущения и зависящая от ряда физических, физиологических и психологических факторов. С точки зрения обработки изображения цвет — составная (например, состоящая из каналов RGB) характеристика каждого пикселя изображения [1].

Нейронная сеть — математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей -- сетей нервных клеток живого организма [6].

Многослойный персептрон — частный случай персептрона Розенблатта [1], в котором один алгоритм обратного распространения ошибки обучает все слои. Особенностью является наличие более чем одного обучаемого слоя (как правило -- два или три, для применения большего числа на данный момент нет обоснования, так как теряется скорость без приобретения качества). Необходимость в большом количестве обучаемых слоев отпадает, так как теоретически единственного скрытого слоя достаточно, чтобы перекодировать входное представление таким образом, чтобы получить линейную карту для выходного представления. Существует предположение, что, используя большее число слоев, можно уменьшить число элементов в них, то есть суммарное число элементов в слоях будет меньше, чем если использовать один скрытый слой [3].

Изображение — с точки зрения его обработки это область, распределенная по пространственным координатам x, y и по длинам волн l описывается функцией с (x, y, l). Эта функция является неотрицательной; ее максимальное значение в изображающих системах ограничено предельной величиной светочувствительности регистрирующих сред, 0 < с (x, y, l) < A, где A — максимальная яркость изображения [1].

Структура нейронной сети, выполненной в виде многослойного персептрона, представлена на рисунке 1.7.

На вход нейронной сети подается яркость каждого пикселя монотонного участка (в данном случае имеется в виду участок изображения, с возможной функциональной зависимостью цвета пикселя изображения от его яркости, без резких перепадов) полутонового изображения, на выходе получаем три составляющие цвета: R (красный), G (зеленый), B (синий). На рисунке 1.8 представление куб RGB.

Рисунок 1.7 — Структура нейронной сети

Рисунок 1.8 — Куб RGB

Как видно из рисунка 1. 8, любой цвет можно представить с помощью 3х составляющих: R (красный), G (зеленый), B (синий). Достаточным для представления цветного изображения является куб, в котором значение каждой составляющей изменяется от 0 до 255. Диагональ куба изменяется от белого до черного, то есть с помощью нее можно функционально представить яркость полутонового изображения, а так как яркость является диагональю, то значение каждой из составляющих R (красный), G (зеленый), B (синий) для полутонового изображения будет одинаковым и любую из составляющих можно использовать как функцию яркости изображения. Будем использовать составляющую R (красный), которая так же изменяется от 0 до 255.

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

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

1) Функция Гаусса:

,(1. 3)

где — дисперсия.

2) Линейная функция:

,(1. 4)

где k — тангенс угла наклона функции.

3) Сигмоидальная функция:

,(1. 5)

где k — параметр функции, определяющий ее кривизну.

4) Ступенчатая функция:

,(1. 6)

где a — верхняя граница ступенчатой функции,

b — нижняя граница ступенчатой функции.

5) Тангенциальная функция:

,(1. 7)

где k — параметр функции, определяющий ее кривизну

Оптимальное значение параметров функции активации определяется в ходе анализа результатов.

Обучение нейронной сети может осуществляться c помощью нескольких алгоритмов:

1) LMS (Least Mean Square) -- метод минимизации среднеквадратичной ошибки. Наиболее простой в реализации алгоритм. Алгоритм является оптимальным согласно минимаксному критерию [8]. Средний квадрат ошибки (MSE) вычисляется по формуле 1. 8:

,(1. 8)

где R — значение на выходе персептрона,

N — размер выборки, Cj — ожидаемое значение.

Далее производится изменение весов персептрона с целью уменьшить среднеквадратичную ошибку (формула 1. 9):

. (1. 9)

2) Sigmoid Delta Rule (Дельта-правило) — метод обучения персептрона по принципу градиентного спуска по поверхности ошибки. Дельта-правило развилось из первого и второго правил Хебба [1]. Его дальнейшее развитие привело к созданию метода обратного распространения ошибки [8].

Алгоритм обучения персептрона следующий:

1. Присвоить весам некоторые начальные значения. Например, нулю.

2. Подать входной образ Х и вычислить выходное значение. Если выходное значение правильное, то переходят к шагу 4. Иначе к шагу 3.

3. Применяя дельта-правило (см. ниже) вычислить новые значения весов.

4. Повторить шаги 2−4 данного алгоритма обучения персептрона пока сеть не станет выдавать ожидаемый выход на векторах из обучающей выборки или пока отклонение не станет ниже некоторого порога.

Т.о. логика обучения персептрона следующая: если сигнал персептрона при некотором образе верен, то ничего корректировать не надо, если нет — производится корректировка весов. Дельта-правило является математической моделью правил корректировки весов. Введем величину, которая равна разности между требуемым d и реальным выходом y (формула 1. 10):

. (1. 10)

Тогда, веса персептрона после коррекции будут равны (формула 1. 11):

,(1. 11)

где i — номер текущей итерации обучения,

— коэффициент скорости обучения, позволяет управлять средней величиной изменения весов,

— величина входа соответствующая весу. Добавление величины в произведение позволяет избежать изменения тех весов, которым на входе соответствовал ноль;

3) Back Propagation (алгоритм обратного распространения ошибки) — дальнейшее развитие алгоритма дельта-правила. Основная идея этого метода состоит в распространении сигналов ошибки от выходов сети к её входам, в направлении, обратном прямому распространению сигналов в обычном режиме работы. Барцев и Охонин предложили сразу общий метод («принцип двойственности»), применимый к более широкому классу систем, включая системы с запаздыванием, распределённые системы, и т. п. [8]. При обучении ставится задача минимизации целевой функции, формируемой, как правило, в виде квадратичной суммы разностей между фактическими и ожидаемыми значениями выходных сигналов, которая для P обучающих выборок определяется по формуле 1. 12:

,(1. 12)

где w — значение веса нейрона,

P — количество обучающих выборок,

M — число нейронов,

yi — значение, полученное в результате вычисления сетью,

di — ожидаемое значение.

Корректирующий коэффициент веса нейрона вычисляется аналогично по формуле 1. 10.

1) Momentum Back propagation — алгоритм обратного распространения ошибки с использованием момента. В нашем случае это коэффициент, который используется при пересчете значения изменения веса. Правильный подбор параметра позволяет увеличить скорость обучения, однако слишком большое значение момента будет причиной того, что ошибка не будет уменьшаться из-за «проскакивания» нужного значения. Целевая функция вычисляется по формуле 1. 12. Корректирующий коэффициент вычисляется по формуле 1. 13:

,(1. 13)

где i — номер текущей итерации обучения,

— коэффициент скорости обучения, позволяет управлять средней величиной изменения весов,

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

— разница между ожидаемым и полученным значением, moment — значение коэффициента момента, позволяющего увеличить скорость обучения при правильном подобранном значении;

2) Dynamic Back Propagation — алгоритм обратного распространения ошибки с использованием момента и динамического значения коэффициента обучения. В случае использования этого алгоритма коэффициент обучения будет изменяться в зависимости от полученной ошибки обучения пропорционально величине ошибки. Пользователь задает верхнюю и нижнюю границу коэффициента обучения. Целевая функция рассчитывается по формуле 1. 12. Корректирующий коэффициент вычисляется аналогично предыдущему алгоритму, но значение в формуле 1. 10 уже будет вычисляться по формуле:

,(1. 14)

где — коэффициент скорости обучения, позволяет управлять средней величиной изменения весов,

— коэффициент сглаживания изменения параметра ,

— ошибка на прошлом шаге,

— ошибка на текущем шаге.

Для вычисления ошибки колоризации во время обучения сети для всех алгоритмов используется формула среднего квадратичного отклонения (1. 15):

,(1. 15)

где n — объём выборки,

xi — вычисленное значение,

— ожидаемое значение [8].

полутоновый цветной кластеризация изображение

1.1.9 Аналитический обзор аналогов

Колоризация черно-белых изображений — довольно нетривиальная задача. На сегодняшний день разработано не так много приложений для автоматизированной реализации подобных действий. Зачастую колоризация осуществляется вручную — для каждого участка изображения меняется функция яркости в соответствии с необходимым цветом. Это довольно трудоемкое занятие, требующее много времени. Именно поэтому в современных рыночных условиях колоризация черно-белых изображений обладает высокой стоимостью, но пользуется большой популярностью. Так, 2009 год стал годом раскрашивания старых черно-белых фильмов. Первыми были «Семнадцать мгновений весны», потом «В бой идут одни старики», дальше «Золушка», «Весёлые ребята», «Волга-Волга». И на этом никто не собирается останавливаться, в планах ещё очень много раскрашенных фильмов. При этом стоимость колоризации первого фильма составила порядка миллиона долларов, и были потрачено многие месяцы работы целой компании (более 600 человек). В настоящее время стоимость колоризации одной минуты черно-белого фильма составляет порядка 3−5 тысяч долларов [1].

На мой взгляд, можно выделить следующие приложения для колоризации черно-белых изображений (Таблица 1. 1). Данные таблицы действительны на 1 ноября 2011 года.

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

Таблица 1.1 Сравнительный обзор приложений-аналогов

Характеристика

Adobe Photoshop + сервисwww. colorhunter. com

AKVIS COLORIAGE

Recolored

BlackMagic

1

2

3

4

5

Колоризация путем изменения параметров изображения

Есть

Есть

Нет

Нет

Возможность выбора областей колоризации

Нет

Есть

Есть

Нет

Возможность задания автоматической колоризации

Нет

Есть

Нет

Нет

Цена, р.

22 361 — 25 393

30 007−37 262

25 519

26 200

Наличие русификации

Есть

Нет

Есть

Есть

1

2

3

4

5

Интерфейс

Удобный интерфейс, огромные возможности по обработке изображения

Доступный и интуитивно понятный в работе интерфейс.

Простой интерфейс. Ничего лишнего

Требуется некоторое время, чтобы привыкнуть к расположению кнопок и таблиц

Наличие справки

Есть

Есть

Есть

Есть

Прочие достоинства

Поддержка плагинов, лидер в области работы с изображениями

Высокие показатели качества работы

Лучший показатель в плане цены/качества

Работа напрямую с внешними устройствами

Прочие недостатки

Колоризация не является основной целью работы продукта. Высокая стоимость

Высокая стоимость

Ограничивается числом шаблонов

Низкие показатели качества работы

Таблица 1.2 — Характеристики проектируемой системы

Характеристика

Проектируемый комплекс

Колоризация путем изменения параметров изображения

Есть

Возможность выбора областей колоризации

Есть

Возможность задания автоматической колоризации

Есть

Цена, р.

На стадии тестирования — бесплатно

Наличие русификации

Есть

Интерфейс

Удобный интерфейс, прост в использовании

Наличие справки

Есть

Прочие достоинства

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

Прочие недостатки

Ограничен в применении для монотонной колоризации полутоновых изображений

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

1. 2 Постановка задачи

В рамках дипломного проекта перед автором поставлена задача разработать АС колоризации полутонового монотонного изображения. Автоматизированная система колоризации должна обладать следующими функциями:

1) сегментация полутонового изображения;

2) колоризация полутонового изображение;

3) расчет погрешности преобразования изображения;

4) сохранение результатов в файл.

Подаваемое изображение должно соответствовать следующим требованиям:

1) полутоновое;

2) стандартный формат хранения (jpg, png, bmp и т. д.);

3) сравнительно небольшое разрешение обучающих изображений, не более 800×600 (это связано с тем, что время обучение увеличивается по экспоненциальному закону при увеличении размеров изображения).

1.3 Разработка логической модели по методологии UML

Унифицированный язык моделирования — UML (Unified Modeling Language), предназначен для описания, визуализации и документирования объектно-ориентированных систем и бизнес процессов с ориентацией их на последующую реализацию в виде программного обеспечения. При создании учитывались следующие требования [8]:

1) позволять моделировать не только программное обеспечение, но и более широкие классы систем и бизнес-приложений, с использованием объектно-ориентированных понятий;

2) явным образом обеспечивать взаимосвязь между базовыми понятиями для моделей концептуального и физического уровней;

3) обеспечивать масштабируемость моделей, что является важной особенностью сложных многоцелевых систем;

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

Язык UML ориентирован для применения в качестве языка моделирования для решения широкого класса задач объектно-ориентированного анализа и проектирования. При этом термин «унифицированный» в названии UML не является случайным и имеет два аспекта. С одной стороны, он фактически устраняет многие из несущественных различий между известными языками моделирования и методиками построения диаграмм. С другой стороны, создает предпосылки для унификации различных моделей и этапов их разработки для широкого класса систем, не только программного обеспечения, но и бизнес-процессов. Семантика языка UML определена таким образом, что она не является препятствием для последующих усовершенствований при появлении новых концепций моделирования. Язык UML может быть расширен без переопределения его ядра [10].

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

Построение диаграмм для АС «Колоризация монотонных полутоновых изображений» было произведено с помощью CASE-средства UML-проектирования Enterprise Architect 8.0. 864.

1.3.1 Диаграмма вариантов использования

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

Разработка диаграммы вариантов использования преследует следующие цели [10]:

1) определить общие границы и контекст моделируемой предметной области на начальных этапах проектирования системы;

2) сформулировать общие требования к функциональному поведению проектируемой системы;

3) разработать концептуальную модель системы для ее последующей детализации в форме логических и физических моделей;

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

Суть данной диаграммы состоит в следующем: проектируемая система представляется в виде множества сущностей или акторов (actor), взаимодействующих с системой с помощью так называемых вариантов использования. При этом актором (actor) или действующим лицом называется любая сущность, взаимодействующая с системой извне. Это может быть человек, техническое устройство, программа или любая другая система, которая может служить источником воздействия на моделируемую систему так, как определит сам разработчик. В свою очередь вариант использования (usecase) служит для описания сервисов, которые система предоставляет актору. Другими словами, каждый вариант использования определяет некоторый набор действий, совершаемый системой при диалоге с актором. При этом ничего не говорится о том, каким образом будет реализовано взаимодействие акторов с системой.

Помимо акторов и вариантов использования, на данной диаграмме можно расположить:

Интерфейсы — служащие для спецификации параметров модели, которые видимы извне без указания внутренней структуры [10]. Интерфейсы определяют совокупность операций, которые обеспечивают необходимый набор сервисов или функциональности для акторов.

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

Отношения — описывающие взаимодействия экземпляров одних акторов и вариантов использования с экземплярами других акторов и вариантов. В языке UML имеется несколько стандартных видов отношений между акторами и вариантами использования:

Отношение ассоциации — служит для обозначения специфической роли актора в отдельном варианте использования.

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

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

Отношение включения — указывает, что некоторое заданное поведение для одного варианта использования включается в качестве составного компонента в последовательность поведения другого варианта использования. Данное отношение является направленным и бинарным [9].

Диаграмма вариантов использования АС колоризации полутоновых изображений представлена на рисунке 1.9.

Рисунок 1.9 — Диаграмма вариантов использования

На диаграмме вариантов использования АС колоризации полутонового изображения были предложены следующие акторы:

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

Также на диаграмме предложены следующие варианты использования системы:

— работа с изображением;

— работа с сетью.

1.3.2 Диаграмма классов

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

Диаграмма классов состоит из множества элементов, которые в совокупности отражают декларативные знания о предметной области. Эти знания интерпретируются в базовых понятиях языка UML, таких как классы, интерфейсы и отношения между ними и их составляющими компонентами.

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

Кроме внутреннего устройства или структуры классов, на соответствующей диаграмме указываются различные отношения между классами. Базовыми отношениями или связями в языке UML являются:

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

Отношение ассоциации — соответствует наличию некоторого отношения между классами. Частным случаем отношения ассоциации является отношение агрегации (когда один из классов представляет собой некоторую сущность, включающую в себя в качестве составных частей другие сущности), которые, в свою очередь, тоже имеет специальную форму — отношение композиции (служит для выделения специальной формы отношения «часть-целое», при которой составляющие части не могут выступать в отрыве от целого, т. е. с уничтожением целого уничтожаются и все его части).

Отношение обобщения — отношение между более общим элементом (родителем или предком) и более частным и специальным элементом (дочерним или потомком) [9].

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

Диаграмма сущностных классов

На рисунке 1. 10 изображена диаграмма сущностных классов структуры нейросети. Класс «Нейронная сеть» представляет собой нейронную сеть, состоящую из слоев (класс «Слой»), которые в свою очередь состоят из нейронов (класс «Нейрон»). Нейроны соединяются между собой связями (класс «Связь»), которые имеют в качестве характеристики определенный вес (класс «Вес»).

Рисунок 1. 10 — Диаграмма сущностных классов структуры нейросети

Диаграмма граничных классов

Граничные классы представляют собой оконные формы, с которыми взаимодействует пользователь. Диаграмма граничных классов представлена на рисунке 1. 11.

Рисунок 1. 11 — Диаграмма граничных классов В данном случае это классы, описывающие пользовательский интерфейс:

Главная форма — позволяет пользователю перейти к редактированию параметров сетей либо сразу приступить к сегментированию и колоризации изображения;

— Форма работы с нейронными сетями — позволяет создать, редактировать и удалять нейронные сети;

— Форма обучения сети — позволяет обучать нейронную сеть;

— Форма задания параметров сегментации изображения — с помощью этой формы задаются параметры сегментирования изображения;

— Форма работы с сегментированным изображением — с помощью этой формы производится сопоставление полученным сегментированным участкам изображения нейронных сетей;

— Форма работы с изображением — позволяет производить сегментацию изображения вручную;

— Форма помощи — отображает справку.

Диаграмма управляющих классов

Управляющие классы системы используются для предоставления системного интерфейса управления работой с изображением и нейронными сетями (рисунок 1. 12).

Рисунок 1. 12 — Диаграмма управляющих классов

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

Класс «Правило обучения» используется для выполнения обучения нейронных сетей согласно заданным параметрам обучения. Классы «Обучающая выборка» и «Элемент обучения» используются как универсальные интерфейсы при работе с обучающими выборками.

1.3.3 Диаграмма состояний

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

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

Диаграмма состояний по существу является графом специального вида, который представляет некоторый автомат. Понятие автомата в контексте UML обладает довольно специфической семантикой, основанной на теории автоматов. Вершинами этого графа являются состояния и некоторые другие типы элементов автомата (псевдосостояния), которые изображаются соответствующими графическими символами [9].

На рисунке 1. 13 представлена «Общая» диаграмма состояний.

Рисунок 1. 13 — Общая диаграмма состояний

Дуги графа служат для обозначения переходов из состояния в состояние. Диаграммы состояний могут быть вложены друг в друга, образуя вложенные диаграммы более детального представления отдельных элементов модели [9].

Далее на рисунке 1. 14 диаграмма раскрывается до работы приложения и ведения справочника. Из диаграммы видно поведение и состояние системы в ходе выполнения различных действий пользователем.

Рисунок 1. 14 — Диаграмма состояний «Работа приложения»

1.3.4 Диаграмма последовательности и кооперации

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

Для моделирования взаимодействия объектов в языке UML используются соответствующие диаграммы взаимодействия. Говоря об этих диаграммах, имеют в виду два аспекта взаимодействия. Во-первых, взаимодействия объектов можно рассматривать во времени, и тогда для представления временных особенностей передачи и приема сообщений между объектами используется диаграмма последовательности. Этот вид канонических диаграмм является предметом изучения настоящей главы.

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

Во-вторых, можно рассматривать структурные особенности взаимодействия объектов. Для представления структурных особенностей передачи и приема сообщений между объектами используется диаграмма кооперации [8].

На рисунке 1. 15 изображена диаграмма последовательности действий системы при выполнении процесса сегментирования изображения.

Рисунок 1. 15 — Диаграмма последовательности для варианта «Сегментировать изображение»

На рисунке 1. 16 изображена диаграмма кооперации для варианта использования «Колоризация изображения». Из рисунка видна последовательность действий системы и пользователя в ходе выполнения колоризации изображения.

Рисунок 1. 16 — Диаграмма кооперации для варианта «Колоризация изображения»

1.3.5 Диаграмма компонентов

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

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

— Визуализации общей структуры исходного кода программной системы.

— Спецификации исполняемого варианта программной системы.

— Обеспечения многократного использования отдельных фрагментов программного кода.

— Представления концептуальной и физической схем баз данных [3].

Диаграмма компонентов клиентской и серверной частей представлена на рисунке 1. 17:

Рисунок 1. 17 — Диаграмма компонентов

JDK 1.6 java. exe — JVM (Java Virtual Machine): основной модуль для работы java-приложений;

— swing. jar — библиотека для отображения компонентов пользовательского интерфейса;

— io. jar — библиотека для ввода/вывода данных из/в файла.

— Модуль представления — компонент, работающий с объектами пользовательского интерфейса;

— Модуль работы с изображениями — компонент, служащий для обработки операций работы с изображениями;

— Модуль работы с нейросетями — компонент, служащий для выполнения операций при работе с нейронными сетями.

1.3.6 Диаграмма развертывания

Диаграмма развертывания предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее исполнения (runtime). При этом представляются только компоненты-экземпляры программы, являющиеся исполнимыми файлами или динамическими библиотеками. Т. е. компоненты, которые не используются на этапе исполнения, на диаграмме развертывания не показываются. Так, компоненты с исходными текстами программ могут присутствовать только на диаграмме компонентов. На диаграмме развертывания они не указываются.

Диаграмма развертывания содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма развертывания является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации. Эта диаграмма, по сути, завершает процесс ООАП (Объектно-ориентированный анализ и проектирование) для конкретной программной системы и ее разработка, как правило, является последним этапом спецификации модели.

ПоказатьСвернуть
Заполнить форму текущей работой