Лабораторный практикум по курсу «Компьютерная графика и инженерная обработка изображений. GIMP. Версия № 2»
.pdfДополнительные задания
1.Выполнить операцию удаления шума или изображения, имеющую несколько объектов небольшого размера, с использованием функций морфологии, входящих в состав GIMP.
2.Используя функцию меню Фильтры – Визуализация – Тек-
стура, исследовать качество выполнения операции создания изображений с текстурой в выделенной области, предварительно подготовленных изображений или областей.
3.ИспользуяфункциюменюФильтры– Имитация– Простой линейный итеративный кластеринг исследовать эффективность выполнения операции кластеризации для предварительно подготов-
ленных изображений, например типа текстура.
4.ИспользуяфункциюменюФильтры – Визуализация – Фрак-
талы, исследовать качество выполнения операции для предварительно подготовленных изображений или областей.
5.ИспользуяфункциюменюФильтры– Визуализация– Созда-
ние сферы, исследовать качество выполнения операции для предварительно подготовленных изображений или областей и объяснить
суть алгоритма.
6. Возможны и другие дополнительные задания.
Вопросы для контроля
1.Покажитеработу алгоритма негатив-позитив. Какое математическое преобразование лежит в его основе?
2.Покажите работу алгоритма бинаризации изображения. В чем смысл его работы?
3.Какое выражение лежит в основе преобразования полно-
цветного изображения в монохромное многоградационное (ахроматическое) изображение? Почему/откуда оно взято?
4.Что такое гистограмма изображения? Как этот алгоритм выполняется?
5.Какиевиды гистограмм можно строить для одного и того же изображения? Продемонстрируйте.
6.Что такое и изменение гистограмм?
7.Что такое алгоритм постеризации теоретически? Продемонстрируйте и объясните его работу в GIMP.
21
8.Чтотакоегамма-коррекция? Продемонстрируйтеееработув среде GIMP. Объясните сущность этого алгоритма.
9.В каких целях и для каких задач применяется гамма-коррек-
ция?
10.Объясните алгоритм функционирования одного из алгорит-
мов морфологии?
11. Для каких типов изображений обычно используется морфология?
Список литературы и интернет-источников
1.GIMP. Глоссарий. М., 2024. URL: https://docs.gimp.org/ru/glossary.html (дата обращения: 18.10.2024).
2.GNU. Image Manipulation Program. Руководство пользователя. 2024. URL:https://docs.gimp.org/2.10/ru (дата обращения: 18.10.2024).
3.Прэтт У. Цифровая обработка изображений: Пер. с англ. В 2-х кн. М.: Мир, 1982 (Pratt W.K. Digital Image Processing. New York: J. Wiley, 1978).
4.Форсайт Д.А., Понс Ж. Компьютерное зрение. Современный подход: Пер. с англ. М.: Издательский дом «Вильямс», 2004.
5.ГонсалесР., ВудсР. Цифровая обработкаизображений: Пер. сангл., 3-еизд. М.: Техносфера, 2012.
22
КГиОИ: Общая информация к лабораторным работам 3 и 5–6. Технологии программирования в среде GIMP
Вданномразделеприведена краткаяначальнаяинформацияоработесплагинамивGIMP, атакжеоразработкесценариев (скриптов) наязыкеScript-Fu. Большаячастьприведенной информациивзятаиз фирменной документации GIMP, например [4, 5]. Писать плагины (и скрипты) – самый простой способ реализации программных расширений для увеличения возможностей GIMP. Всекоманды в меню фильтров, и значительное число команд в других меню, на самом деле реализованы как подключаемые модули.
Расширения. Многие операции, которые выполняются в GIMP, реализованы как результат применения самого GIMP, за счет использованиянаиболеепростоговарианта– механизмафункционального расширения, а именно использования «штатной» библиотеки редактора GIMP, на основе скриптов редактора.
Например, за исключением трех верхних элементов меню Фильтры, все элементы этого меню реализованы с помощью дополнений. Каждое дополнение самостоятельно решает, в какое подменю себя поместить. Поэтому вид этого меню может сильно различаться у разных пользователей. Но в действительности различия не так существенны, потому что большинство расширений поставляются прямо с GIMP и находятся в меню на том же месте.
ДополнениямогутбытьнетольковменюФильтры. Дополнение можно добавить, как элемент к любому меню. Некоторые основные функции GIMP (например, Слой – Прозрачность – Полусведение)
созданы как дополнения. Меню Фильтры – база по умолчанию для всех дополнений.
Более сложная технология программного расширения – технология «плагинов» (plug-in, «подключать») – также широко используется в GIMP. Плагины, которые являются внешними, подключаемыми к основной, в нашем случае к GIMP, программами, которые очень тесно взаимодействует с GIMP, и способны манипулировать изображениями и другими объектами GIMP. Некоторые плагины
23
упакованы вместе с GIMP, но большинство функционально сложных плагинов необходимо разрабатывать самостоятельно.
Сценарии/скрипты (Скрипт-Фу). В дополнение к Plug-Ins, ко-
торыеявляютсяпрограммами, написанныминаязыкеСиилидругих языках высокого уровня, GIMP также может использовать скрипты. Script-Fu – это то, что в среде Windows назвали бы «макросы». Наибольшее их количество из существующих сценариев написаны на языке, называемом Script-Fu, который является уникальным для GIMP (это диалект Lisp-подобного языка, называемого Scheme). Крометого, можно писать скрипты в GIMP на Python. Эти языки более гибкие и мощные, чем Script-Fu, их недостаток заключается в том, что они зависят от программ, которые не автоматически поступают в упаковке с GIMP, поэтому не гарантируется их правильная работа в каждой установке GIMP.
Но Script-Fu является болеемощным, чем макрос. Script-Fu основан на языке интерпретации, который называется Scheme, а работает, используя функцию запроса к базе данных GIMP. Можно сделатьвсевиды операцийвScript-Fu, нообычный пользователь GIMP, вероятно, будет его использовать для автоматизации, прежде всего:
часто производимых операций;
действительно сложных и трудных операций.
Можно сделать многоесо Script-Fu. Сценарии, которыеприходят с GIMP, могут быть весьма полезны, но они могут также служить в качестве модели для изучения Script-Fu, или, по крайней мере, как основа иисточникизменений, когда был сделан собственный сценарий. Некоторыеиз скриптов такжеочень просты, и, вероятно, непонадобится никакой документации для обучения их использованию.
Script-Fu (диалект схемы) – не только язык сценариев для GIMP, он является единственнымязыкомсценариев, который устанавливается по умолчанию. Другиедоступныерасширения сценариев – Perl и Tcl (Tool Command Language). Можно установить оба эти расши-
рения в GIMP Plugin Registry [GIMP-REGISTRY]. Больше информа-
ции обиспользованныхв GIMP скриптахScript-Fu и методикенаписания своих собственных можно найти, например, в [1–5].
Плаги́н (plug-in, от plug in «подключать») – независимо компилируемый программный модуль, динамически подключаемый к основной программе и предназначенный для расширения и/или использования ее возможностей. Плагины GIMP являются внешними
24
программами, которые запускаются под контролем основной программы и очень тесно с ней взаимодействуют. Плагины могут обрабатывать изображения почти любыми методами. Их преимущество заключается в том, что намного легче добавить к GIMP новую операцию спомощью написаниянебольшого плагина, чем внести изменение в большую массу сложного кода, который составляет ядро GIMP. Множество ценных плагинов, написанных на C, содержат всего около 100–200 строк исходного кода, например [1].
Для получения общей информации о плагинах и о том, как их использовать, см. раздел пользовательской документации, посвященный плагинам. Некоторые плагины включены в основную поставку GIMP иустанавливаютсяавтоматически вместесним. Большинство из них может быть доступно через меню Главноеменю – Фильтры (фактически все, чтодоступнов этомменю, являетсяплагинами), но некоторое количество расположено в других меню. В большинстве случаев можно их использовать без какого-либо представления о том, что это плагин.
Кто угодно в мире может написать плагин и сделать его доступным через сеть, через реестр плагинов или через персональный вебсайт, и множество очень ценных плагинов может быть получено таким способом. Вместе с этой свободой появляется и определенная степень риска: тот факт, что любой может сделать плагин, означает, чтонесуществуетэффективногоконтролякачества. Восновном, когда загружается плагин, получается кое-что бесплатно, и иногда получается именно то, за что платили. Сказано это не для того, чтобы разочаровать, просточтобы былауверенность впонимании действительности – GIMP и его плагины имеют такую же гарантию, как и любое другое свободное программное обеспечение: а именно, никакой!
Замечания.
1. Вбольшинстве случаевможноиспользоватьплагинтакже, какилюбойдругой инструмент GIMP, без необходимости осознания того, что это плагин. Однако при использовании плагинов есть несколько вещей, которые полезно понимать. Прежде всего, плагины обычно не так устойчивы, как ядро GIMP. Когда в GIMP происходит сбой, этосчитается очень серьезным обстоятельством. Когда вплагине происходит сбой, тообычнопоследствиянестольсерьезны. Вбольшинстве случаев можно просто продолжать работать, не беспокоясь по этомуповоду.
2. Плагины GIMP написаны для разных версий. Однако плагины, написанные для одной версии, едва ли могут быть успешно использованы с другими версиями.
25
Они должны быть портированы: иногда этолегко, иногда нет. Многие плагины доступны для нескольких версий. Перед тем, как пробовать установить плагин, удостоверьтесь, что он был написан для вашей версии GIMP.
3.Поскольку плагины представляют собой отдельные программы, они сообщаютсясGIMP припомощиособогометода: разработчикиGIMP называютего«говорить по проводу». Когда в плагине происходит сбой, связь обрывается, и можно увидеть сообщение об ошибке «wire read error».
4.Когда в плагине происходит сбой, GIMP выдает сообщение о том, что плагин возможно покинул GIMP в испорченном состоянии, и нужно решить вопрос о необходимости сохранения изображенияивыйтиизпрограммы. Строгоговоря, это вполне правильно, посколькуплагины имеют силуизменения в GIMP почти всего, нона практике опыт показал, чторазрушения весьма редки, имножествопользователей просто продолжают работать, не беспокоясь об этом. Совет заключается в том, что просто подумайте, какие проблемы это причинит вам, если что-то пойдет не так, и взвесьте все за и против.
5.Из-за особенностей метода связи плагинов с GIMP они не имеют никакого
механизма информирования об изменениях, которые вы производите на изображении после запуска плагина. Если вы запустите плагин, а затем с помощью какоголибо другого инструмента измените изображение, плагин чаще всего будет «падать», и даже когда этоне происходит, результат окажется искаженным. Нужноизбегать запуска более чем одного плагина, и избегать операций над изображением дотехпор, покананемнезавершитработуплагин. Есливыигнорируетеэтот совет, то можете испортить не только изображение, но также и механизм истории отмен, следовательно, увас не будет возможности исправить вашуглупость.
Установка новых плагинов в Windows. Windows представляет собой намного более проблематичное окружение для сборки программного обеспечения, чем Linux. Каждый порядочный дистрибутив Linux полностью укомплектован инструментами для компиляции программ, и все они работают очень схожими способами, но Windows в своей поставке не содержит таковых инструментов. Можно создать хорошее окружение для сборки программного обеспечения и в Windows, но это требует значительного количества денег и программных компетенций разработчика.
Это означает применительно к плагинам GIMP следующее: или нужно выяснить, имеется ли окружениена вашем компьютере, в котором можно собирать программы, или его нет. Если такой возможности нет, тогда лучше надейтесь найти где-нибудь откомпилированнуюверсиюплагина, вэтомслучаенеобходимопростоположить его в вашу персональную директорию плагинов. Если у вас есть окружение, в которомможетесобирать программы, тогда вы, безсомнения, уже знаете немного об этих вещах. Основная библиотека,
26
используемая для взаимодействия с GIMP (именуемая «libgimp») имеет хорошо документированный API.
Если вы желаете настроить окружение для сборки, можете найти описание этих действий на странице GIMP Wiki HowToCompileGimp/MicrosoftWindows [GIMP-WIKI-MS], а также по ссылкам [1–5]. Часто приходится самостоятельно реализовывать пользовательский интерфейс, поскольку большинство плагинов не имеют полной взаимосвязи с ядром GIMP.
Список литературы и интернет-источников
1.GNU. Image Manipulation Program. Руководствопользователя. Создание сце-
нариев. Гл. 12. M., 2024. URL: https://docs.gimp.org/2.6/ru/gimp-scripting.html (дата обращения: 18.10.2024).
2.15 лучших плагинов. M., 2024. URL: ps://tehnografi.com/15-лучших-плаги-
нов-gimp-которые-вы-должны-им/ дата обращения: 18.10.2024).
3.8 лучших плагинов GIMP и как их установить. M., 2024. URL: htttps://vk.com/wall-5661271_25491 (дата обращения: 18.10.2024).
4.Инструкция поScript-Fu. M., 2024. URL: https:// docs.gimp.org/ru/gimp-using- script-fu-tutorial.html (дата обращения: 18.10.2024).
5.Как писать скрипты для Gimp 2.x? Осваиваем Scheme (Script-Fu). Ч. 2. M., 2024. URL:https://annimon.com/article/2048 (дата обращения: 18.10.2024).
27
Лабораторная работа 3
КГ: ТЕХНОЛОГИИ ПЛАГИНОВ И СКРИПТОВ В СРЕДЕ
GIMP
Для выполнения работы рекомендуется использовать подготовленные самостоятельно изображения или выбрать изображения с подходящей моделью цветности из числа «Образцы_изображений для_ИОИ».
Задание
1.Изучить технологию разработки плагинов и скриптов.
2.Выбрать для реализации, на свое усмотрение, технологию плагинов или скриптов.
3.Составитьтехническоезадание(ТЗ) ввидекороткоготекстового файла в формате *.doc, которое высылается преподавателю на почту для утверждения. В ТЗ указать: ФИО, номер группы, выбран-
ную технологию, краткое описание функционального содержания задания, т.е. описание методов и алгоритмов, необходимых для написания программы программистом, используемые библиотеки и языки программирования. Алгоритм следует выбирать из числа алгоритмов КГ. При сдаче работы утвержденное ТЗ предъявляется преподавателюнепосредственнопередсдачей данной лабораторной работы.
4.При выборетехнологии плагинов перейти кп. 5. При выборе технологии скриптов перейти к п. 6, а затем к п. 7.
5.Изучить механизм работы и алгоритм одного из скриптов,
интегрированных в GIMP. Внести изменение в текст этого скрипта (изменить алгоритм).
6. Изучить методику разработки плагинов. Разработать свой плагин в среде С/C++ или на любом другом языке. Алгоритм плагина должен быть выбран из числа алгоритмов КГ.
28
7. Написать и отладить ваше ПО. Подготовить для тестирования несколько подходящих изображений. Изучить и проанализировать полученные результаты работы.
8. При сдаче лабораторной работы 4 необходимо представить утвержденное ТЗ, затем продемонстрировать работу вашего ПО. Необходимо ориентироваться в коде демонстрируемого ПО. А также в теоретических основах используемых методов и алгоритмов.
9. Для окончательной сдачи работы необходимо составить краткий отчет и выслать его на почту своим преподавателям. Отчет должен содержать: ТЗ, теоретическиеосновы использованныхметодов и алгоритмов, описание процедуры подключения скрипта/плагина к GIMP, пример скриншотов исходного изображения и результата, а также текст программы с большим количеством комментариев.
Примеры вариантов заданий
Реализовать на основе технологии плагинов или сценариев (скриптов). Ниже приведены только несколько примеров процедурфункций библиотеки Скрипт-Фу. Среднийцветграницы – border average. Это примеры простейших вариантов задания в лабораторной работе 3.
1.Checkerboard – Create a checkerboard pattern – создание вы-
кройки.
2.Analyze colorcube – анализ цветового куба.
3.Curve Bend – изгибает активный слой.
4.Decompose – создает новые серые изображения.
5.Edit Metadata – редактирует информацию метаданных.
6.Разработать плагин, который позволяет установить водяной знак в произвольном месте входного изображения.
7.Разработать плагин, который выделяет белым цветом области
изображения коричнево-оранжевого цвета (ржавчины).
Изучив их болееподробно, следует составить и реализовать одно из возможных ТЗ. Ниже приведены примеры нескольких заданий.
1. Библиотека gimpfu. С помощью скрипта наложить фильтр плохой погоды на изображение.
29
Описание. Скрипт рекомендуется использовать с изображениями жанра пейзаж. Скрипт добавляет новый слой кисходному изображению, и может использовать различные методы небольших ухудшений качества изображения. Основой алгоритма является фильтрразмытиятекущегослоя. Результат: надополнительномслое возникает, например, эффект дождя. Далее следует подробное описание математической и логической основы использованных методов КГ и ОИ. Используемые технологии: язык python.
2. С помощью скрипта обработать изображение, создав из него схему для вышивки крестом с размерами 100 на 100 «клеточек» и фиксированным количеством цветов. В основе данного скрипта может лежать, например, метод пикселизации изображения – метод ближайшего соседа. Для сокращения количества цветов можно, например, использовать функцию Изображение – Режим – Индек-
сированный – Создать оптимальную палитру. Возможны другие варианты этого метода. Далее следует подробное описание математической и логической основы использованных методов КГ и ОИ. Язык программирования python. Библиотека gimpfu.
3. Разработать скрипт, имитирующий эффект Ортона (придание фотографиям мягкого свечения и объема). Для этого следует изменить настройки яркости и резкости, например применив гауссово размытие (фильтр нижних частот, ослабляющий высокочастотные сигналы), и фильтр «Экспозиция» (осветление теней и полутонов изображения). Далееследуетподробноеописаниематематической и логической основы использованных методов КГ и ОИ.
4. Разработать скрипт обработки ахроматического изображения, который выделяет белые области, удаляет их и создает новый слой без белого. Алгоритм скрипта находит белые области, а также ближайшиепоцветамкбеломупиксели, выделяетэтиобластиисоздает новый слой с удаленными белыми и приближенными к нему по цвету областями. Далее следует подробное описание математической и логической основы использованных методов КГ и ОИ.
5. Самостоятельно разработать ТЗна скрипт/ плагин по примеру перечисленных выше и реализовать его.
Замечание. Рекомендуется учесть, что при оценке лабораторных работ 3 и 5 будет учитываться знание теоретических основ методов и алгоритмов, используемых для реализации функционала различных «манипуляций» с изображениями, а также сложность и самостоятельность при разработке ТЗ и программ.
30
