Автоматизированная система колоризации полутонового изображения
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
µгментируем попугайчика на фоне синего моря. Сначала каждый пиксель (вершина графа) будет сам по себе - в собственном сегменте (множестве), но в ходе алгоритма пиксели (вершины) схожего цвета (одного объекта) постепенно объединяются в один сегмент.
Рисунок 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. Диагональ куба изменяется от белого до черного, то есть с помощью нее можно функционально представить яркость полутонового изображения, а так как яркость является диагонал