ОБРАБОТКА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ АППАРАТНОГО УСКОРИТЕЛЯ ГРАФИКИ Разработчики: Дейнега В.М. Малых Д.А. Круглов В.Н.
Василий М. Дейнега, Денис А. Малых, Р Исполнители Научный руководитель: Круглов Василий Николаевич, доцент кафедры АСУ, Радиотехнический институт – РтФ, ГОУ ВПО «УГТУ – УПИ имени первого президента России Б. Н. Ельцина». Разработчики: 1. Малых Денис Александрович, студент Радиотехнического института – РтФ; разработчик систем искусственного интеллекта ООО «АйсХилл»; руководитель проекта iLLi Studio. 2. Дейнега Василий Михайлович, студент Радиотехнического института – РтФ; разработчик систем создания компьютерных игр ООО «Таргем Геймс»; технический руководитель проекта iLLi Studio.
Василий М. Дейнега, Денис А. Малых, Р Содержание Часть 1: Реализация алгоритмов сглаживания и медианной фильтрации на аппаратных ускорителях графики Часть 2: Framework обработки изображений на аппаратных ускорителях графики
Василий М. Дейнега, Денис А. Малых, Р Часть 1: Реализация алгоритмов сглаживания и медианной фильтрации на аппаратных ускорителях графики В современном мире большого прогресса достигли производители аппаратных ускорителей графики, в разработке систем визуализации компьютерных игр. Мощность слабой видеокарты многократно больше, чем мощность самого мощного центрального процессора персонального компьютера. Данная работа позволяет использовать потенциал современных графических систем в математических расчетах, не связанных с компьютерной графикой реального времени. В данной работе разработан способ использования GPU (Graphics Processing Unit) для реализации алгоритмов сглаживания и медианной фильтрации (классических алгоритмов обработки изображения). По результатам работы проведен сравнительный анализ со временем вычисления данных алгоритмов, в одном потоке на CPU.
Василий М. Дейнега, Денис А. Малых, Р Почему GPU? Преимущества GPU: 1.Распараллеливание вычислений 2.RISC, масштабируемая архитектура 3.Программируемый конвейер (технология шейдеров) 4.Функционально ориентированный процессор 5.Низкоуровневая реализация математической библиотеки 6.Большой объем памяти (до гигабайта и выше) 7.Большая скорость обмена с памятью (до 64 Гб / сек.)
Василий М. Дейнега, Денис А. Малых, Р HLSL Языки программирования шейдеров: 1. низкоуровневый (шейдерный ассемблер) 2. высокоуровневые – HLSL, GLSL, Cg. HLSL – язык программирования шейдеров высокого уровня. Он является частью пакета DirectX и используется для высокоуровневого программирования шейдеров в этой системе. Именно этот язык и был использован в данной системе. Для обработки изображений мы использовали пиксельные шейдеры. Пиксельный шейдер – это микропрограмма обработки одного пикселя текстуры. Обработка пикселей текстуры может вестись параллельно – поэтому на пиксельный шейдер накладываются определенные условия: 1. На входе в пиксельный шейдер может быть несколько текстур и несколько константных значений. 2. На выходе пиксельного шейдера может быть ТОЛЬКО цвет обрабатываемого пикселя. 3. Модель шейдеров ограничивает количество ассемблерных команд пиксельного шейдера. Кроме того, она накладывает ограничение на тип используемых операций. Например в модели 2.0 нельзя использовать циклы.
Василий М. Дейнега, Денис А. Малых, Р Алгоритм сглаживания Алгоритм сглаживания (англ. Blur) представляет собой усреднение цвета пикселя с использованием цвета соседних пикселей. Окна сглаживания бывают разные: от 1х1, до 128х128. Соответственно чем больше окно, тем дольше выполняется алгоритм. В нашей системы мы организовали параллельную обработку пикселей в несколько проходов, что позволило проводить сглаживание текстуры размером 768х576 окном 128х128. Классическая реализация алгоритма сглаживания выглядит следующим образом: 1.Запускается цикл по всем пикселям картинки 2.Для каждого пикселя составляется окно сглаживания (упомянуто выше). 3.Внутри этого окна вычисляется сумма цветов каждого пикселя. 4.Вычисленная сумма делится на общее количество пикселей в окне, тем самым вычисляется среднее арифметическое цветов пикселей в выбранном окне. Таким образом формула расчета выходного пикселя выглядит следующим образом: Следует отметить следующие вещи: 1. Алгоритм проходит последовательно по всем пикселям картинки. Последовательно в данном случае значит долго. 2. Когда окно сглаживания достаточно большое – происходит повторная проход по большому количеству пикселей, причем по нескольку раз. И чем больше окно – тем большее количество раз выбирается цвет пикселя. Результат: CPU – 968 ms GPU – 10 ms
Василий М. Дейнега, Денис А. Малых, Р Медианная фильтрация Алгоритм медианной фильтрации является развитием алгоритма сглаживания. Обычно не используется в системах технического зрения реального времени из-за того, что выполняется очень долго. Классическая реализация этого алгоритма на CPU окном размером 5х5 текстуры размером 768х576 выполняется почти за 2с, что делает этот алгоритм неконкурентно-способным в системах технического зрения. В нашей системе алгоритм выполняется с использованием параллельных вычислений на видеокарте и многопроходной системы. Результат: CPU – 1890 ms GPU – 4 ms Классический алгоритм медианной фильтрации выглядит следующим образом: 1.Вводится функция med, которая вычисляет медиану нескольких элементов. Медианой является срединный элемент в упорядоченном массиве значений, поданных на вход функции. 2.Каждый пиксель обрабатывается этой функцией в некотором окне медианной фильтрации. Таким образом, цвет выходного пикселя будет выглядеть следующим образом: Однако, после проведения дополнительных оптимизаций, мы добились ускорения работы алгоритма путем разбиения его на два прохода. Первый проход вычисляет медиану только по строкам, второй – только по столбцам. На финальный результат такое разбиение не влияет благодаря свойствам медианной фильтрации. Формула будет выглядеть следующим образом:
Василий М. Дейнега, Денис А. Малых, Р Примеры фильтрации: 1.Исходное изображение 2.Blur 3.Медианная фильтрация 1 2 3
Василий М. Дейнега, Денис А. Малых, Р Иногда возникает необходимость повысить производительность математических вычислений. Один из кардинальных методов, был рассмотрен в части 1 данного доклада – это использование GPU вместо CPU. Часть 2: Framework обработки изображений на аппаратных ускорителях графики Почему данные технологии не используются тогда повсеместно, и не ускоряют в тысячи раз математические расчеты во всех программах? Ответ прост: Данные технологии применимы не ко всем типам алгоритмов и достаточно сложны в программировании и понимании.
Василий М. Дейнега, Денис А. Малых, Р Использование GPU Фреймворк в данной работе – это специальная библиотека, позволяющая создавать алгоритмы обработки изображений с использованием GPU, на уровне конструирования, а не программирования. Когда стоит использовать GPU: Если алгоритм можно представить, как множество одинаковых вычислений, производимых с разными данными. Ее можно подключить из любого языка, поддерживающего Windows программирование. Кроме того, эта библиотека существенно упрощает программирование инфраструктуры приложения и позволяет сосредоточится на алгоритмах обработки изображений, а не на алгоритмах построения приложений.
Василий М. Дейнега, Денис А. Малых, Р Структура библиотеки Текстура. Массив состоящий из 32 битных элементов. Может быть интерпретирована как картинка. Основной объект используемый в нашей библиотеке. Он может служить как входным так и выходные объектов в пиксельном шейдере. Пиксельный шейдер. Микропрограмма позволяющая обрабатывать отдельный пиксель текстуры. Причем пиксели текстуры в такой программе обрабатываются параллельно, что увеличивает быстродействие программы, но накладывает ограничение на приемы программирования. Проход. Выполнение конкретного пиксельного шейдера к конкретным текстурами входа и выхода. Один раз применяет конкретный пиксельный шейдер к конкретной текстуре (текстурам). Алгоритм. Конкретный выполняемый алгоритм. Может содержать несколько проходов. Выполняет задачу обработки изображений. Рендер-таргет. От английского RenderTarget – выходная текстура обработки пиксельным шейдером. Текстура получаемая на выходе пиксельного шейдера. Может являться входной для других пиксельных шейдеров. Но на выходе пиксельного шейдера всегда должна быть рендер-таргет текстура.
Василий М. Дейнега, Денис А. Малых, Р Конвейер обработки Этап 1: Подготовка, загрузка данных Этап 2: Описание используемых аглоритмов Этап 3: Работа системы 1. Загрузка данных для обработки 2. Обработка данных указанным алгоритмом 3. Возврат данных Типы работы системы: 1. Обработка данных в цикле (на каждом такте выполняется загрузка новых данных в систему, выполнение вычислений, возврат данных). 2. Пакетная обработка данных (выполняется загрузка данных в систему, многократное выполнение разных алгоритмов, возврат данных. 3. Комбинированный метод.
Василий М. Дейнега, Денис А. Малых, Р Вопросы?