- •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
- •Цель работы
- •Порядок выполнения работы
- •Методические рекомендации
- •Методические рекомендации
- •Особенности текстурной памяти.
- •Особенности линейной текстурной памяти.
- •Защита лабораторной работы
- •Правила оформления отчета
- •Оформление титульного листа
- •Библиографический список
Нелинейные методы выделения границ областей
Градиентный фильтр. В обработке изображений первые производные реализуются через модуль градиента. Для функции f(х, у) градиент в точке (х, у) определяется как двумерный вектор-столбец:
Модуль этого вектора определяется следующим образом:
(2.4)
Компоненты вектора градиента являются линейными операторами, но модуль вектора, очевидно, нет, поскольку он выражается через операции возведения в квадрат и извлечения квадратного корня. Хотя это и не является строго правильным, модуль вектора градиента часто называют градиентом.
Объем вычислений, необходимых для обработки всего изображения оператором (2.4), достаточно велик, поэтому частой практикой является замена значения модуля градиента суммой модулей отдельных компонентов, вместо квадратов и квадратных корней:
(2.5)
Аналогично лапласиану, первоначально определим дискретные приближения приведенных выше уравнений, а затем уже по ним будут сформированы соответствующие маски фильтров. Чтобы упростить последующие рассуждения, для указания точек в окрестности 3×3 будут использоваться обозначения, показанные на рис. 2.15.
Рис. 2.15. Область изображения размерами 3х3 элемента (z1…z9 – значения яркости соответствующих пикселей под маской) и маски, используемые для вычисления градиента в точке, отмеченной z5. Суммы коэффициентов по каждой из масок равны нулю
Так, например, центральная точка z5 обозначается f(x, у), а z1 обозначается f(x-1, у-1), и так далее.
Фильтр Робертса.
Простейшими приближениями первой производной являются
Gx = (Z8 — Z5) и Gy = (Z6 – Z5).
Два других определения, предложенные Робертсом, используют перекрестные направления:
Gx=(Z9 – Z5) и Gy=(Z8 – Z6).
Если выбрать уравнение (2.4), то градиент будет вычисляться по следующей формуле:
Если используются абсолютные значения, тогда получим следующее приближение к значениям градиента:
Это уравнение может быть реализовано с помощью двух масок (Рис.2.16, а,б).
Рис. 2.16. Маски фильтра Робертса
Эти маски называют перекрестным градиентным оператором Робертса.
Фильтр Собеля.
Маски четного размера реализовывать неудобно. Наименьшая маска фильтра, которая нас интересует, имеет размеры 3×3. Приближением, использующим абсолютные значения для той же самой точки Z5, но уже по маске 3x3, будет
(2.6)
Разность между значениями пикселей в третьей и первой строках окрестности 3x3 приближает значение производной по направлению х, а разность между значениями пикселей в третьем и первом столбцах приближает значение производной по направлению у. Маски на рис. 2.15, б, в называют оператором Собеля (Sobel). Они могут использоваться для реализации уравнения (2.6). Заметим, что суммы коэффициентов каждой из масок равны 0, и это означает, что на участках изображения с постоянным уровнем яркости отклик любого из приведенных операторов будет равен 0, как и должно быть у оператора, соответствующего первой производной.
Оператор Превита
Оператор Превита действует аналогично оператору Собеля и также рассматривает два ядра свертки:
,
Исходя из этих сверток, вычисляются величина и направление края. Свертка для каждой функции ядра вычисляется отдельно. Обозначим отклики ядер Hx и Hy соответственно:
,
,
где А – соответствующий
фрагмент обрабатываемого изображения.
В качестве отклика данного фильтра
выступает величина
.
