Лабораторный практикум по курсу «Компьютерная графика и инженерная обработка изображений. GIMP. Версия № 2»
.pdfВопросы для контроля
1.Что такое плагин?
2.Поясните технологию применения плагинов в GIMP.
3.Что такое сценарии?
4.Каким образом реализуются сценарии?
5.Чем сценарий отличается от скрипта?
6.Чем плагин отличается от сценария?
7.Чем отличается скрипт от сценария?
8.Какова технология подключения (обращения) к плагинам и скриптам в среде GIMP?
Список литературы и интернет-источников
1. GIMP. Инструменты преобразования. M., 2024. URL:https://mostik.info/glava4_instrumenti_preobrazovaniya/ (дата обращения: 18.10.2024).
31
Лабораторная работа 4
ИОИ: МЕТОДЫ И АЛГОРИТМЫ ИОИ В СРЕДЕ GIMP
Цель – изучение основных возможностей группы алгоритмов предобработки изображений для инженерных приложений в среде GIMP: алгоритмов, основанных на методесвертки или в терминологии GIMP-фильтров.
Продолжительность работы два академических часа.
При реализации дистанционного режима (on line) каждый студент предварительно выполняет работу в соответствии с заданием, затем по расписанию сдает результаты выполнения в персональном режимедиалогаспреподавателем, демонстрируярезультатыидавая пояснения на вопросы.
Введение
Программный продукт GIMP – одна из наиболее распространенных и мощных программных сред для обработки растровых изображений. Очевидная область применения – обработка изображений (ОИ) в широком смысле этого термина. Однако GIMP не лишен ограничений и недостатков с точки зрения изучения и применения его для ИОИ. Перечислим основные из них.
Среда GIMP ориентирована, прежде всего, на обработку фотографий, поэтому большая часть операций, составляющих основу этого редактора, – операции предобработки изображений, которые востребованы при реставрации и улучшении качества восприятия.
Отсутствуют алгоритмы и операции для сложной обработки изображений, ориентированной на ИОИ, например отсутствуют алгоритмы, в основе которых лежат методы разложения изображения в различные ряды, а также алгоритмы распознавания и классификации объектов на изображении. Нет многих других классов алгоритмов, например алгоритмов измерения размеров объектов, с текстурным анализом или кластеризацией.
32
Чтобы иметь возможность работать с такими алгоритмами в GIMP, можно использовать технологии подключения плагинов и сценариев (скриптов). Знакомству с этими технологиями посвящена работа 6.
В основном функционале GIMP, кроме относительно простых методов предобработки изображений, рассмотренных в работе 3, присутствует возможность реализации наиболее популярных фильтров, какназываютихразработчики GIMP, которыеоснованынаматематической операции свертки. Практическому изучению этой важной и, можно сказать, классической операции, в основном, и посвящена работа 4, хотя в документации GIMP термин «свертка», являющийся основой многих алгоритмов ИОИ и ОИ, найти трудно.
Ниже приводится краткое описание возможностей и функций GIMP, которые будут полезны при выполнении алгоритмов обработки изображений в работе 4.
Все функции, основанные на алгоритме свертки, следует искать в меню Фильтры: линейная фильтрация на основе алгоритма свертки в пространственной области, как с произвольной маской с ядром свертки 5х5, так и с предустановленными настройками с ядром 3х3 (фильтр ВЧ, фильтр НЧ, фильтр для выделения границ и т.д.). Предварительно следует изучить общие сведения о функциональности и математической основе алгоритма свертки, используя материалы лекций, монографий и интернета.
В терминологии GIMP, «фильтр» – плагин, который изменяет внешний вид изображения, в большинстве случаев это относится только к активному слою изображения. Не все элементы в меню отвечают этому определению, однако термин «фильтр» часто, возможно не совсем корректно, используется для обозначения любой операции, преобразующейизображение, независимооттого, чтоона делает.
Немного теории
Далее коротко рассмотрены некоторые классические алгоритмы ОИ, которыеможно отнести к большой группе«алгоритмов предобработки».
33
Алгоритм свертки. Обозначим исходное изображение: fi, j , i 0, m 1, j 0, n 1.
Вспомогательную матрицу, которая называется ядро свертки (фильтр), обозначим:
hk ,l , k a, b, l c, d.
Размерность ядра в подавляющем большинстве случаев существенно меньше размерности обрабатываемого изображения.
Результат операции свертки изображения определяется так:
fi, j kb a ld c hk ,l fi k , j l , |
i |
|
|
|
|
0, m 1, j 0, n 1. |
|||||
Замечание 1. В документации по GIMP и меню операций пакета отсутствуют термины классической теории ОИ, а именно: «гамма коррекция», «алгоритм свертки», «ядро свертки», «морфология» и ряд др. Поэтому необходимо иметь начальное математическое представление о базовых операциях теории ОИ с тем, чтобы находить соответствующие операции в GIMP и понимать их функциональность.
Замечание 2. На границах обрабатываемого изображения необходимо использовать какое-либо доопределение алгоритма свертки, иначе пограничные пикселы не будут обработаны или будут обработаны неверно.
Функциональность конкретной операции свертки определяется, прежде всего, алгоритмом ядра свертки и значениями используемых коэффициентов.
Для проведения экспериментальной проверки работы различных фильтров удаления шума нужно использовать операции GIMP, которые позволяют к исходному изображению добавить шум с выбранными характеристиками:
Цвет – Подмешать шум или Фильтры – Шум – Шум в RGB.
Медианный фильтр. Отклик фильтра вычисляется как средний элемент (медиана) упорядоченных по яркости пикселов, попавших в маску. Это самый быстрый по скорости выполнения алгоритм для фильтрации одиночных искажений, например [6]. Недостаток – раз-
мывает границы объектов: Фильтры – Размытие – Медианный
фильтр.
Фильтр Гаусса. Принцип сглаживания заключается в замене текущего значения интенсивности на среднеезначениев окрестности, так как мы часто предполагаем, что точки, расположенные ближе к пикселю, имеют больший вес, что приводит к нечеткой фильтрации
34
Гаусса. Его ядро представляет собой двумерную матрицу с гауссовым распределением, которое имеет большиезначения в серединеи постепенно уменьшается к периферии, например [6]. Недостаток – размытие границ: Фильтры – Размытие – Гауссово размытие.
Низкочастотная фильтрация. Низкочастотный фильтр ослабляет высокочастотные компоненты и усиливает роль низкочастотных. Частота в применении к изображениям отражает количество имеющихся в изображении деталей. Резкие перепады яркости, помехи и шумы являются примером высокочастотных элементов в изображении. Сглаживание изображения реализуется, например, с помощью следующих ядер [7]:
|
|
1 |
|
1 |
1 |
1 |
|
|
1 |
1 |
1 |
1 |
|
|
1 |
1 |
2 |
1 |
|||||
H1 |
|
|
|
|
|
|
H2 |
|
|
|
|
H3 |
|
|
|
|
|
||||||
|
|
1 |
1 |
1 |
, |
|
|
1 |
2 |
1 |
, |
|
|
|
2 |
4 |
2 |
. |
|||||
9 |
10 |
16 |
|||||||||||||||||||||
|
|
|
1 |
1 |
|
|
|
|
1 |
|
|
|
|
1 |
2 |
1 |
|
||||||
|
|
|
|
1 |
|
|
|
|
1 |
1 |
|
|
|
|
|
|
|||||||
Высокочастотная фильтрация. Высокочастотный фильтр ослабляет низкочастотные компоненты в изображении и усиливает роль высокочастотных. Фильтрывысокой частоты применяютсядля выделения таких деталей, как контуры, границы, или для повышения резкости изображения. Каждый скачок яркости и каждый контур представляютсобой интенсивныедетали, связанныесповышенными частотами. Выделение высокочастотных компонент может осуществляться, например, с помощью следующих ядер [7]:
|
1 |
1 |
1 |
|
|
0 |
1 |
0 |
|
|
1 |
2 |
1 |
|||||
H1 |
|
1 9 |
|
, |
H2 |
|
1 |
|
|
|
, |
H3 |
|
2 |
5 2 |
|
||
|
1 |
|
5 1 |
|
. |
|||||||||||||
|
|
1 |
1 |
|
|
|
|
0 |
1 |
0 |
|
|
|
|
1 |
2 |
1 |
|
|
|
1 |
|
|
|
|
|
|
|
|
||||||||
Фильтры – Улучшение – Высокочастотный фильтр.
Подчеркиваниеграницможнотакжеосуществить, выполняядискретную фильтрацию с использованием высокочастотного импульсного отклика. Далее представлены три, несколько иных, масок для выполнения высокочастотной фильтрации для подчеркивания границ:
35
маска 1
0 |
1 |
0 |
|
|
H 1 |
5 |
1 |
, |
(4.1) |
|
1 |
|
|
|
0 |
0 |
|
|
|
|
|
|
|
|
маска 2 |
|
|
|
|
1 |
1 |
0 |
|
|
H 1 |
9 |
1 |
, |
(4.2) |
|
1 |
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
маска 3 |
2 |
|
|
|
1 |
1 |
|
||
H 2 |
5 |
2 . |
(4.3) |
|
|
2 |
|
|
|
1 |
1 |
|
||
|
|
|
|
|
Эти маски характеризуются тем, что сумма их элементов равна единице.
Фильтры – Выделение края – Оператор Лапласа – алгоритм для оценки второй производной (выделение границ контуров или подчеркивание границ). Сумма коэффициентов должна равняться:
w(i, |
j) 1. |
|||
i |
|
j |
|
|
Например: |
|
0 |
1 |
0 |
|
|
|||
w |
|
1 |
5 |
1 . |
|
|
0 |
1 |
|
|
|
0 |
||
|
|
|
|
|
А это примеры других масок оператора Лапласа [7]:
|
0 |
1 |
0 |
|
|
1 |
1 |
1 |
|
|
1 |
2 |
1 |
||||
H1 |
|
1 |
4 |
1 |
|
, |
H2 |
|
8 |
|
, |
H3 |
|
2 |
4 2 |
|
|
|
|
1 |
1 |
|
. |
||||||||||||
|
|
0 |
1 |
0 |
|
|
|
|
1 |
|
|
|
|
1 |
2 |
1 |
|
|
|
|
|
|
1 |
1 |
|
|
|
|
|||||||
В этих ядрах сумма элементов матриц равна нулю, поэтому отклик фильтра может быть отрицательным.
36
Фильтр – Общие– Матрица свертки – позволяетзадатьпроиз-
вольные коэффициенты в ядре свертки с максимальным размером 5х5. Например, длянизкочастотной фильтрациинеобходимовыполнение условия, что сумма коэффициентов маски равна единице.
Для проведения экспериментальной проверки работы различных фильтров для удаления шума можно использовать операции GIMP, которые позволяют к исходному изображению добавить шум с выбранными характеристиками:
Фильтры – Выделение края – Оператор Собела – алгоритм оценки первой производной (выделение границ контуров).
Ядра свертки некоторых алгоритмов, которые будем для краткости называть «именные», например Робертса, Превитта или Собела, …, обычно используются для определения границ объектов на изображении путем вычисления оценок производных в различных направления пространства изображения:
|
0 0 |
1 |
|
|
1 |
0 0 |
|
|
|
|
||||||
Roberts |
0 |
|
1 |
0 , |
|
|
|
0 |
|
1 |
0 |
; |
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
0 |
|
0 |
|
|
0 |
|
0 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 0 |
1 |
|
1 |
1 |
|
1 |
1 |
|
|
|||||
Prewitt |
|
|
0 |
|
|
|
0 |
|
0 |
0 |
|
; |
||||
3 |
1 |
1 , |
|
3 |
|
|
|
|||||||||
|
|
|
|
|
|
1 |
|
1 1 |
|
|
||||||
|
|
1 0 |
1 |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 0 |
1 |
|
1 |
1 |
|
2 |
1 |
|
||||||
Sobel |
|
2 |
0 |
2 |
|
, |
|
0 |
|
0 |
0 |
|
. |
|||
4 |
|
|
4 |
|
|
|
||||||||||
|
|
|
|
|
1 |
|
2 1 |
|
||||||||
|
|
1 0 |
1 |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОператорСобела[7]. Оператор Собела применяютвалгоритмах выделения границ. Это дискретный дифференциальный оператор, вычисляющий приближенное значение градиента яркости изображения. Результатом применения оператора Собела в каждой точке изображения является либо вектор градиента яркости в этой точке, либо его норма. Метод усиления края с помощью оператора Собела рассматривает два различных ядра свертки:
37
|
1 0 |
1 |
|
|
1 2 |
1 |
||||||
H1 |
|
2 |
0 |
2 |
|
, |
H2 |
|
0 |
0 |
0 |
|
|
|
|
. |
|||||||||
|
|
1 |
0 |
1 |
|
|
|
|
1 |
2 |
1 |
|
|
|
|
|
|
|
|
||||||
Исходя из этих сверток может быть вычислена величина и направление краев. Свертка для каждого ядра вычисляется отдельно. В качестве отклика данного фильтра выступает величина
S P2 Q2 ,
где P и Q – отклик ядер H1 и H2.
Иногда в качестве оператора Собела берется величина
S P Q .
Реализацию метода Собела в виде плагина и его исследование можно использовать в качестве темы для работы 5 и получения «автомата».
Алгоритмы свертки с «курсовой» ориентацией. Целый ряд именных методов свертки, например Превитта, Робертса, Кирша и др., «именных» курсовых ядер свертки, имеют особенность, которая состоит в том, что их ядра следует «поворачивать» на 45 градусов для изменения предпочтительного направления определения границ:
Gradient |
|
Prewitt |
|
|
Kirsch |
|
|||
direction |
|
compass |
|
|
|
|
|
||
|
|
gradient |
|
|
|
|
|
|
|
|
|
1 1 |
1 |
|
5 |
3 |
3 |
|
|
East |
H1 |
1 |
2 |
1 |
, |
5 |
0 |
3 |
; |
|
|
|
|
|
|
|
3 |
|
|
|
|
1 1 |
1 |
|
5 |
3 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
3 |
3 |
3 |
|
Northeast |
H2 |
1 |
2 |
1 |
, |
5 |
0 |
3 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 1 |
1 |
|
5 |
5 3 |
|||
|
|
|
|
|
|
|
|
|
|
38
Многие из них имеют ряд вариантов, которые разработаны как авторами «именнных» алгоритмов, так и другими разработчиками. Например, методусилениякраяспомощьюоператораПревиттарассматривает два различных ядра свертки:
|
1 0 |
1 |
|
|
1 |
1 |
1 |
||||
H1 |
|
1 |
0 |
|
, |
H2 |
|
0 |
0 |
0 |
|
|
1 |
|
. |
||||||||
|
|
1 |
0 |
|
|
|
|
1 |
1 |
1 |
|
|
|
1 |
|
|
|
|
|||||
Результат работы оператора Превитта есть max {P, Q}.
Реализацию метода Превитта в виде плагина и его исследование можно использовать в качестве темы для работы 5 и получения «автомата».
Лабораторная работа выполняется фронтально, в соответствии с заданием, приведенным далее. Для выполнения работы подготовлены несколько тестовых полноцветных и монохромных изображений в форматеRGB, которыерасположены в папке«Образцы_изображений для_лаб_ОИ». Аналогичные по виду исходные файлы можно, и даже рекомендуется, подготовить самостоятельно средствами GIMP или скачать из Интернета. Для каждого из пунктов задания необходимо открыть одно из подходящих по типу изображений, имеется в виду прежде всего модель цветности.
Задание
1. Изучить основы и функциональные возможности операций свертки, перечисленныхвглавноеменю– ФильтрыGIMP. Изучить основы различных сверток, которые перечислены в разделе «Немного теории». Уметь объяснить преподавателю существо алгоритма свертки изображения и каждого примера.
2. Добавить к изображению случайный шум (выбратьего характеристики). Выполнить операцию фильтрации шума несколькими фильтрами с целью его удаления. Убедиться, что удалить шумовую составляющую крайне сложно, а полностью практически невозможно. Показать результаты преподавателю и объяснить, с исполь-
39
зованием какого из алгоритмов фильтрации выполнены эти операции и в чем состоит отрицательный эффект их выполнения. Срав-
ните результат с операцией Фильтры – Улучшение – Подавление шума, укажите достоинства и недостатки каждого, какой из них больше подходит для удаления шума.
3. Выполнить несколько различных операций Фильтры – Размытие, а потом выделить края объектов различными свертками (Собел, градиент и т.п.). Убедиться, что исправить внесенные искажения очень сложно, а практически невозможно. Показать результаты преподавателю и объяснить, для какого размытия и с использованием какого из алгоритмов выполнены эти операции. Уметь объяснить сущность методов.
4. Изучить возможность применения произвольного ядра для операции свертки алгоритмом Робертса, задавая свои коэффициенты ядра размером 3х3. Исследовать эффект «курсовой» ориентациивыполненияданной операции. Объяснить смыслметода «курсовой» ориентации.
5. Изучить работу оператора Лапласа для ахроматического и цветного RGB-изображения. Объяснить математическую основу выполняемых операций.
6. Сравнить результаты применения фильтра Лапласа к изображению «молоток» и «отвертка». Оценить видимую разницу в результатах срезультатамиприменениядругихалгоритмов выделения краев. Попробовать объяснить причину этой разницы.
7. Разработать и продемонстрировать преподавателю обработку изображения (ахроматического или полноцветного) с использованием цепочки алгоритмов пакета GIMP c целью получения тонкого (один пиксель по толщине и без разрывов) контура объекта на изображении. Длявыполненияэтогопункта следуетиспользовать, кроме алгоритмов свертки, некоторые из алгоритмов из лабораторной работы 2 (получениеахроматическихизображений, бинаризация, морфология). Результат продемонстрировать преподавателю и объяснить, путемприменениякакойцепочкиалгоритмовонполучен. Следует заметить, что таких цепочек алгоритмов может существовать несколько. Возможно сравнение результатов, полученных различными цепочками для данного типа изображений.
40
