- •230100 – Информатика и вычислительная техника
- •Часть 2. Алгоритмы цифровой обработки изображений 58
- •Часть 3. Методические указания для практических и лабораторных работ 109
- •Введение
- •Часть 1. Программирование графического адаптера nvidia с использованием технологии cuda
- •Краткая история развития графических адаптеров
- •Архитектура nvidia cuda
- •Архитектура gpu-приложения
- •Основные различия между cpu и cuda-устройством
- •Различие возможностей между поколениями cuda-устройств
- •Инструментарий cuda Toolkit
- •Установка
- •Проверка правильности установки
- •Компиляция примеров
- •Прикладные программные интерфейсы cuda
- •Особенности компиляции
- •Опции компилятора nvcc
- •Профайлер
- •Отладка программ в режиме эмуляции устройства
- •Среда разработки nvidia Parallel Nsight
- •Подключаемые библиотеки
- •Библиотека cublas
- •Библиотека cufft
- •Часть 2. Алгоритмы цифровой обработки изображений
- •Видоизменение гистограммы изображения
- •Основы пространственной фильтрации
- •Сглаживающие пространственные фильтры
- •Сглаживание изображений локальным усреднением
- •Сглаживание по обратному градиенту
- •Сглаживающий сигма-фильтр
- •Сглаживание по наиболее однородным областям
- •Медианный фильтр
- •Описание метода медианной фильтрации
- •Одномерный медианный фильтр
- •Зависимость качества работы медианного фильтра от размера апертуры
- •Двумерный медианный фильтр
- •Пространственные фильтры выделения границ областей
- •Линейные методы выделения границ областей. Лапласиан
- •Нелинейные методы выделения границ областей
- •Оператор Превита
- •Частотные фильтры
- •Сглаживающий частотный фильтр
- •Частотный фильтр повышения резкости
- •Гомоморфная фильтрация
- •Морфологическая фильтрация
- •Операции математической морфологии
- •Дилатация
- •Алгебраические свойства дилатации и эрозии
- •Применение морфологической дилатации
- •Применение морфологической эрозии
- •Размыкание и замыкание
- •Применение морфологических операций размыкания и замыкания
- •Основные морфологические алгоритмы
- •Выделение границ.
- •Заполнение областей.
- •Выпуклая оболочка.
- •Утончение.
- •Утолщение.
- •Построение остова.
- •Часть 3. Методические указания для практических и лабораторных работ
- •Практическая работа №1. Введение в технологию cuda
- •Цель работы
- •Порядок выполнения работы
- •Теоретическая часть
- •Архитектура графических адаптеров nvidia.
- •Архитектура чипа g80.
- •Архитектура чипа Fermi.
- •Вычислительные способности графического процессора.
- •Среда разработки cuda.
- •Язык cuda с.
- •Модель программирования cuda.
- •Теоретическая часть Модель памяти cuda
- •Особенности глобальной памяти.
- •Особенности разделяемой памяти.
- •Теоретическая часть Программный пакет «Sarcis».
- •Команды меню.
- •Панель инструментов.
- •Механизм подключения динамических библиотек.
- •Создание внешней библиотеки
- •Пример листинга программы динамической библиотеки.
- •Медианная фильтрация
- •Варианты индивидуальных заданий
- •Выбор по дискретному критерию.
- •Выбор по среднему контрасту.
- •Выбор по среднему градиенту.
- •Выбор на основе простых статистик.
- •Параметрическая аппроксимация.
- •Моментный подход.
- •Варианты индивидуальных заданий
- •Теоретическая часть
- •Инициализация устройства.
- •Выделение памяти на gpu
- •Пересылка данных между cpu и gpu.
- •Вызов функции ядра.
- •Методические рекомендации
- •Цель работы
- •Варианты индивидуальных заданий
- •Методические рекомендации
- •Защита лабораторной работы
- •Лабораторная работа № 3. Работа с разделяемой памятью в технологии cuda
- •Порядок выполнения работы
- •Методические рекомендации
- •Методические рекомендации
- •Особенности текстурной памяти.
- •Особенности линейной текстурной памяти.
- •Защита лабораторной работы
- •Правила оформления отчета
- •Оформление титульного листа
- •Библиографический список
Панель инструментов.
|
– Открыть файл |
|
Вызывает стандартный диалог открытия файлов, в котором пользователь может выбрать графический файл формата .bmp или .jpg для последующей обработки. |
|
– Сохранить файл |
|
Сохраняет файл в формате .bmp или .jpg. |
|
– Переходы |
|
Позволяет перемещаться по истории обработки изображения вперед или назад. |
|
– Редактирование контуров |
|
Вызывает модуль редактирования контуров. |
|
– Классификация |
|
Вызывает модуль классификации. |
|
– Совмещение изображений |
|
Вызывает модуль совмещения изображений. |
|
– Анализ изображений |
|
Вызывает модуль анализа изображений. |
|
– Каналы изображения |
|
Эти кнопки имеют два состояния – нажата/не нажата. Позволяет выбирать каналы для обработки. В окне изображения отображаются только его активные в данный момент каналы. При выборе яркостной картины изображения каналы становятся недоступны. |
|
– Справка |
|
Вызов справки к программе Sarcis.
|
Справа на панели инструментов расположен инструмент выбора активного устройства (видеокарты) для обработки изображений с помощью технологии CUDA:
Если на компьютере установлено более одной видеокарты, поддерживающей данную технологию, в раскрывающемся списке можно выбрать активное устройство. Если соответствующих устройств в системе не обнаружено, список будет неактивным и в окнах фильтров будет недоступен выбор графического процессора для обработки.
Механизм подключения динамических библиотек.
Каждый пользователь имеет возможность подключать собственные методы обработки изображения. Для этого существует возможность включать и выключать внешние библиотеки. Методов обработки в одной библиотеке может быть сколько угодно много. Настройка программы позволяет зарегистрировать метод в программе, указав название библиотеки. Для этого служит модуль "Установка плагинов" (рис.3.8.)
Рис. 3.8. Окно модуля "Установка плагинов"
Созданный .dll-файл необходимо поместить в папку ..\Sarcis\Plugins. Все находящиеся в этой папке .dll-файлы отображаются в окне модуля "Установка плагинов" в левой его части. В одном файле может быть реализовано несколько функций, в этом случае все они будут отображены в виде раскрывающегося дерева. В окне справа будет выведено описание данного .dll-файла, в случае если оно было сделано. Результат применения функции будет выведен в новое или текущее окно в зависимости от выбора в раскрывающемся списке "Вывод". Кнопка "Обновить" служит для повторного просмотра папки Plugins на предмет появления .dll-файлов.
Создание внешней библиотеки
Динамические библиотеки реализуют алгоритмы обработки изображений. Для правильного предоставления информации основной программе был разработан шаблон DLL. Шаблон включает в себя переменные, которые содержат информацию о функциях, реализующих алгоритмы отработки изображений, и функции, предназначенные для передачи этой информации в основную программу. Ниже приведено описание всех функций и переменных, составляющих основу шаблона динамической библиотеки:
const int FCount – в переменной хранится количество реализованных в DLL методов обработки;
const char *Names[] – хранит названия методов обработки;
const char *Procs[] – содержит название всех функций обработки изображений, реализованных в данной библиотеке;
int FuncID[] – содержит идентификаторы функций (0 – функция для CPU, 1 – для GPU);
char *Description – содержит справочную информацию о библиотеке;
bool Invalid(int) – функция для проверки корректности библиотек;
int GetCount() – функция передает в программу число реализованных методов;
char *GetName(int) – функция передает в программу название всех реализованных методов;
char *GetProc(int) – передает название функций, реализующих данные методы;
char *GetDescription() – передает справочную информацию библиотеке;
int GetFuncID(int) – передает идентификатор функции.
Сами функции, реализующие методы обработки, должны соответствовать следующей форме:
float func(unsigned char* inbuf,unsigned char* outbuf,int height, int width );
где func – имя соответствующей функции,
inbuf – параметр, содержащий ссылку на исходное изображение,
outbuf – параметр, содержащий ссылку на обработанное изображение,
height – определяет высоту изображения в пикселях,
width – определяет ширину изображения в пикселях.
Все экспортируемые функции объявляются с ключевым словом _declspec(dllexport). Пример листинга программы динамической библиотеки приведен ниже.
