GIMP — вільний редактор растрової графіки

У попередній лекції, присвяченій векторній графіці і програмі OpenDraw, наводились основні факти, що стосуються відмінностей між векторною і растровою комп'ютерною графікою:

  • растрове зображення є інформацією про колір крапок в рівномірно розміченому прямокутнику, а векторне — інформацію про колір, форму і розмір геометричних фігур;
  • векторне зображення оборотно збільшується і зменшується; растрове зображення при збільшенні виявить лише свій растр в збільшеному вигляді, а операція його зменшення не є оборотною;
  • векторне зображення може бути без збитку сприйняттю перетворено в растр, але зворотне перетворення в загальному випадку проблематично;
  • векторне зображення може бути розділеним на елементи без яких-небудь втрат, а з растровим зображенням таке, в загальному випадку, неможливе;
  • векторне кодування добре підходить для роботи з кресленнями, схемами, графіками і т.п., а растрове — для обробки фотографій і малюнків.

Джерела і параметри растрової графіки

Звичайним джерелом растрових зображень є сканер — пристрій, що «проходить» (сканує) лист паперу або кадр фотоплівки крапка за крапкою і передає комп'ютеру відповідне значення інтенсивності базових квітів в кожній крапці. Все більшою популярністю користуються цифрові фотокамери — апарати, що замість фотоплівки фокусують зображення на світлочутливій матриці, котра передає цифровий запис зображення на незалежний носій інформації (гнучкий диск або т.з. флеш-карту), який потім може читатися комп'ютером.

Растрові зображення можуть також створюватися людиною на комп'ютері за допомогою пристроїв координатного введення («миші» або більш підходящого для цієї мети графічного планшета) або синтезуватися різними програмами. Найважливішими параметрами растрового зображення є його растровий розмір (у крапках) і «глибина кольору» (кількість біт, що використовуються для представлення кольору кожної крапки). Ці параметри часто записують у вигляді 1024х728x24, що означає 1024 крапки по горизонталі, 728 крапок по вертикалі і 24 бітний на колір (двадцяти чотирьох біт достатньо для отримання «фотореалістичних» зображень, подальше підвищення розрядності не приводить до збільшення якості зображень, що відображаються або друкуються сучасними засобами, хоча в проміжній обробці або при синтезі зображень іноді використовується більші значення глибини кольору). Ще одним параметром, передбаченим деякими форматами зберігання растрової графіки, є його «масштаб», який прийнято вимірювати в крапках на дюйм (DPI); це чисто інформаційний параметр, який може враховуватися при друці зображень, але не впливає на можливість їх обробки.

Джерела, параметри і формати представлення растрової графіки

За тридцятирічну історію комп'ютерної графіки розроблена велика кількість (сотні) форматів зберігання зображень. Більшість з них є плодом неузгодженості «технічної творчості» окремих груп дослідників і компаній, а також відображає особливості специфічних пристроїв, що давно вийшли з ужитку. Важливими властивостями форматів є притаманні їм внутрішні обмеження, з яких найбільш значущими є обмеження на глибину кольору, підтримувані колірні моделі («моніторна» RGB, «поліграфічна» CMYK і т.д.), можливість збереження декількох шарів зображення (поняття шарів, контурів і масок тут не обговорюються), наявність т.з. «альфа-каналу» (фіктивного «кольору», відповідного ступеню прозорості зображення при накладенні його на інше зображення) і підтримувані алгоритми стиснення. Алгоритми стиснення, що вживаються в растровій графіці, підрозділяються на неруйнуючі і формати з втратою якості (останні використовують психофізіологічну модель людського зору для того, щоб позбавитися незначущих деталей зображення, що дещо знижує його якість, але дозволяє добитися набагато більшої компактності коду).

Практично універсальними є формати TIFF (звичайно вживаний в поліграфії, допускає лише неруйнуюче стиснення), PNG (найбільш зручний для представлення графічних даних в мультимедійних системах і WWW, що допускає неруйнуюче стиснення), а також JPEG (що допускає стиснення з втратами) і GIF (обмежений 8 бітами (256 кольорами)). Крім того, багато графічних редакторів (включаючи описаний нижче GIMP) володіють власним форматом, що дозволяє зберігати в тому ж файлі масу допоміжної інформації, корисної при роботі, що продовжується більш аніж один сеанс.

Загальні відомості про GIMP

GNU Image Manipulation Program (Програма ГНУ для маніпуляції зображеннями), або скорочено GIMP (читається «гімп») — нащадок курсового проекту двох студентів, Пітера Маттаса і Спенсера Кимболла (1985-86 рр.).

За вісім років і за участю десятків програмістів GIMP виріс в один з найбільш насичених функціональністю графічних редакторів, поступившись лише «під зав’язку» набитому сторонніми модулями редактору Photoshop6. Поточна стабільна версія — 1.2 (як і в деяких інших проектах непарним «малим» номерам відповідають експериментальні (розроблювані) версії, а парним — стабільні).

Цікаво, що в рамках проекту GIMP була створена бібліотека роботи з екранними примітивами GTK (нині GTK+), що є на сьогодні однією з найрозвиненіших і широко використовуваних в своєму класі (зокрема, на GTK+ засновано популярне графічне операційне середовище GNOME).

GIMP, доступний для всіх популярних настільних платформ (включаючи Linux, MACOS, Microsoft Windows і ін.), широко використовується для роботи над WWW і мультимедійною графікою, обробки любительського, репортажного і навіть художнього фото, ретушування кінокадрів. Правда, для останньої мети частіше використовується модифікація, відома як FILMGIMP, її, зокрема, активно експлуатували при монтажі першого фільму про Гарі Поттера.

GIMP рідко використовується для переддрукарської підготовки графіки: у ньому поки немає підтримки «поліграфічних» колірних моделей і системи кольороподілу. Ще одним обмеженням поточних версій GIMP є відносно низька продуктивність, що утруднює роботу з дійсно великими (сотні тисяч крапок) і складними (десятки шарів) зображеннями. Для створення і обробки достатньо компактних і простих зображень, а також для їх відображення на моніторі і друці на устаткуванні споживчого класу ці обмеження не важливі.

GIMP здатний працювати з розвиненими координатними пристроями — графічними планшетами, зокрема, моделями, що розпізнають силу натиснення на перо.

GIMP — програмований графічний редактор

Ймовірно, своїм успіхом GIMP не в останню чергу зобов'язаний модульній і програмованій архітектурі. Сам по собі цей редактор — достатньо компактна і проста програма, проте його можливості примножуються за рахунок відкритості архітектури і наявності безлічі модулів (у поточному постачанні — близько трьохсот), що реалізовують ті або інші додаткові функції, такі як імпорт-експорт сторонніх форматів або обробку зображення або його фрагмента по тому або іншому алгоритму.

Такі модулі можна розробляти як окремі програми з використанням бібліотеки GDK, а можна користуватися одним з вбудованих в GIMP інтерпретаторів мов програмування. Саме наявність таких інтерпретаторів і робить GIMP програмованим графічним редактором. Можна сказати, що його архітектура подібна архітектурі текстового редактора Emacs, про який йшла мова в другій нашій лекції.

Таких інтерпретаторів на сьогодні два. Забавну назву Script-fu, мабуть, слід розуміти як англійсько-китайський вираз, що означає «майстерність сценування» (нагадаємо, що сценаріями називають програми, написані на інтерпретованих мовах). Script-fu — це перший вбудований в GIMP інтерпретатор функціональної мови Схема (Schema), першої мови функціонального програмування, що є нащадком, Лісп. Розробник сценарію має доступ до численних базових функцій - графичних примітивів.

Схема — вельми продумана і струнка мова, проте її методичний потенціал не може повною мірою бути розкритий в сьогоднішніх курсах інформатики в середній школі, програмування в яких вводиться в директивній (сентенциональній) парадигмі. На Схемі, так само, як і на Ліспі, можна писати в директивному стилі, проте витонченості і простоти, такої необхідної в навчанні, досягти при цьому неможливо.

Директивною є інша мова, інтерпретатор якої також вбудований в GIMP. Це Перл (Perl), його GIMP-овська реалізація називається Perl-fu. Хороший програміст може писати на Перлі чисто і акуратно, проте синтаксис мови сам по собі настільки гнучкий (щоб не сказати «рідкий»), що, на нашу думку, Перл абсолютно не годиться на роль такого, що вивчається в числі перших (хоча існують і інші думки, вельми авторитетні).

Додавання в GIMP ще одного інтерпретатора (наприклад, алголо- або паскалеподібної мови) не представляється особливо складним завданням, проте про такі проекти нічого не відомо, і, напевно, від програмування обробки зображень «всередині» GIMP як від простої в методичному освоєнні теми більшості педагогів варто наразі відмовитися.

Інтерактивна функціональність і ергономіка

Проте, базова інтерактивна функціональність GIMP (включаючи доступні модулі) цілком достатньо, щоб покрити питання обробки графіки, що зазвичай вивчаються в школі.

При запуску GIMP на екрані відкривається ряд вікон (Мал. 1). Головне вікно містить меню основных функцій, панель піктографічно позначених «інструментів» і області, в яких відображаються поточні значення основного і фонового кольорів, форми кисті, поточного градієнта. Вікна зображення відповідають окремим відкритим графічним файлам (або шарам в них).

Додаткові інструментальні вікна (з якоїсь причини названі «діалогами») можуть відкриватися з меню головного вікна. Проте їх всього десяток («Шари, канали і контури», «Параметри інструментів», «Кисті», «Шаблони», «Градієнти», «Палітра», «Пристрої вводу», «Індекс документів», «Консоль помилок»), а основний масив функцій, що застосовуються до поточного або новостворюваного зображення чи вибраної ділянки зображення (включаючи функції, реалізовані зовнішніми модулями-фільтрами) «дістаються» через контекстне меню, що відкривається по клацанню правою кнопкою миші у вікні зображення.

Зате можна скористатися (незвичним для користувачів спрощених графічних середовищ, таких, як Microsoft Windows) властивістю графічної бібліотеки GTK+, відомим як «лінія відриву». Кожне меню вгорі містить пунктирну лінію, клацнувши мишею на якій можна перетворити це меню на самостійне інструментальне вікно, що зберігається, поки користувач явним чином його не закриє (Мал. 2-3). Таким чином (враховуючи настроюваність самої системи меню) можна у будь-який момент створити на екрані додаткові «панелі інструментів», що містять функції, якими найближчим часом передбачається скористатися. Звиклому до іншого стилю роботи користувачу це незвично; проте, звикнувши, цю інтерфейсну особливість можна використовувати вельми ефективно.

Множинність вікон, на жаль, може створювати деякі незручності в середовищах без розвиненого інструментарію управління вікнами. У розвиненіших середовищах можна «склеїти» декілька вікон, щоб вони переміщалися як єдине ціле або «підняти» вікно, щоб воно продовжувало залишатися видимим, навіть якщо буде активізовано вікно, розташоване «під ним» (власне, багатовіконне візуальне рішення і створено з розрахунку на наявність таких засобів), а якщо такі засоби відсутні (як, наприклад, в Microsoft Windows), користування редактором на моніторі з малим розширенням може бути обтяжено необхідністю здійснювати якісь додаткові дії.

Основная інтерактивна функціональність, доступна за допомогою «інструментів» в головному вікні, достатньо традиційна для програм цього класу. Вона включає, зокрема:

  • виділення області зображення (прямокутної, еліптичної або довільної форми, а також обмеженої кривими Безье). Області, що послідовно виділяються, можуть утворювати перетини, об'єднання або віднімання;
  • виділення зв'язної області («чарівна паличка») із задаванням параметрів зв'язності;
  • переміщення, копіювання, заливку виділених областей;
  • кадрування (обрізку) зображення;
  • зміна масштабу відображення на екрані;
  • обертання, масштабування, викривлення і дзеркальне відображення зображення;
  • введення тексту;
  • вибір поточного кольору («піпетка»);
  • заливку області суцільним кольором або градієнтом;
  • малювання «олівцем» або «пензлем» довільної форми і очищення «гумкою».

У базову функціональність GIMP входить також можливість захоплення зображення з сканера і з екрану.

Фільтрація і синтез зображень

Основний прийом автоматизованої обробки зображень — фільтрація їх цілком, або виділених в них областей. Велика частина згаданих зовнішніх модулів реалізує саме функцію фільтрації. Серед найбільш важливих в практичній обробці зображень фільтрів відзначимо:

  • зміна кольору, насиченості, яскравості і контрасту зображення;
  • видалення «шуму»;
  • підвищення різкості і розмивання, виділення країв.

Значну кількість фільтрів імітують різні «ефекти»: від проглядання зображення через хвилясте скло до натягнення його на сферу, циліндр або тор.

Синтез зображень в базовому постачанні GIMP і відомих нам фільтрах не дуже розвинений, проте є ряд фільтрів, що створюють фрактальні зображення (зокрема, натуроморфні).

Ресурси

GIMP входить у всі великі (багатодискові універсальні) дистрибутиви ОС Linux і в багато маленьких (одно-, двох- і трьохдискові, окрім орієнтованих тільки на серверне застосування). Інтерфейс GIMP перекладений російською мовою (хоча є окремі модулі, доступні тільки з іншомовними інтерфейсами).

GIMP доступний для Linux і інших відкритих систем — на http://www.gimp.org; для Microsoft Windows — на http://www.wingimp.org; для MACOS — на http://www.macgimp.org. Основний російськомовний ресурс, присвячений GIMP — http://www.gimp.ru.

Короткий сорокасторінковий вступ в GIMP є в книзі . З англомовних книг порадимо дві вільно доступні.