Журнал LinuxFormat - перейти на главную

LXF112:GIMP

Материал из Linuxformat
Перейти к: навигация, поиск
Фотография в Linux Исправляем дефекты на любительских снимках в средствами свободного ПО для ваших приложений

Содержание

Блестящая фотосессия

Никто не совершенен, и отснятые вами фотографии могут оказаться далеки от идеала. К счастью, Linux и свободное ПО готовы прийти вам на помощь – Александр Толстой расскажет, чем именно они могут быть полезны.

Цифровой фотографией сейчас увлекается едва ли не каждый второй, но при этом далеко не все начинающие фотографы перешагивают тот рубеж, за которым хобби превращается в профессиональную работу. Одна из причин тому – невнимание к дефектам и искажениям, вызванным особенностями устройства цифровых камер, а также их настройками. Отнюдь не всегда снимок сразу получается «идеальным», и иногда его необходимо грамотно отредактировать на компьютере. Это относится ко всем камерам – от встроенных в мобильные телефоны и до дорогих зеркальных моделей.

Linux – прекрасная ОС для фотолюбителя и, во многих случаях, для профессионала. Вы можете не только хранить, упорядочивать и печатать свои снимки, но и «вытягивать» размытые и «шумные» фото. Другими словами, большинство распространённых дефектов цифрового фото можно исправить программно – об этом и пойдёт речь ниже. Мы рассмотрим три наиболее распространённых дефекта: размытость (съёмка без вспышки «с рук»), шумность картинки (свойство матриц недорогих камер) и оптические искажения, вызванные параметрами линз в объективах.

Для нашей восстановительной работы потребуется всем известный редактор изображений The GIMP – это главный инструмент. Но не секрет, что сила GIMP состоит в его расширяемости, поэтому нам не обойтись без дополнений. Бороться с нерезкостью мы будем с помощью Refocus и Refocus-it, шумы подавим, установив GREYCstoration и кое-какие модули с сайта GIMP Plugin Registrry (http://registry.gimp.org), а для исправления искажений оптики в последних версиях GIMP есть соответствующие встроенные средства. Нужно отметить, что для описываемых здесь операций очень важна вычислительная мощь процессора. Так, удаление шумов на 7-мегапиксельной фотографии может отнять больше часа в случае, если используется AMD Athlon X2 бюджетной модели или более медленный ЦП.

Часть 1: Боремся с нерезкостью

Один из самых неприятных дефектов на фотоснимке – размытость очертаний, или нерезкость. Обычно эта проблема возникает при съёмке «с рук» без вспышки в условиях недостаточного освещения, когда фотокамера автоматически выставляет достаточно большую выдержку. За то время, пока шторка объектива открыта, руки фотографа неминуемо дрогнут – даже малейшее движение заметно отразится на резкости снимка. Другой тип размытости связан со стремительным перемещением фотографируемого объекта. Обычно для таких случаев применяют специальный режим съёмки (он может называться «Спорт» или похоже), при котором выдержка сводится к минимуму, однако бывает, что в нужный момент необходимые настройки не были выставлены и все-таки получился нерезкий снимок.

Заметьте, что фильтрами типа Sharpen или Нерезкая маска нельзя воздействовать на фокусное расстояние – они работают с деталями «на плоскости» и не могут повлиять на глубину резкости. Следует также понимать, что сильная нерезкость не исправляется никак. Тем не менее, если дефект выражен не столь ярко, можно попытаться исправить его с помощью специальных фильтров. Один из них называется Refocus, и после установки его можно найти в меню Фильтры > Улучшение. Помимо указанных выше типов нерезкости, Refocus также может использоваться для возвращения резкости снимкам, которые были отсканированы или как-либо ещё переведены из аналогового состояния в цифровое.


При запуске Refocus вы увидите диалог настроек (рис. 1). Справа от окна предварительного просмотра имеется пять параметров, от правильного выбора которых напрямую зависит результат работы Refocus.

  • Matrix Size Данный параметр отвечает за размер матрицы, по которой будут просчитываться пиксели изображения. Более высокие значения полезно использовать вместе с пропорционально увеличенными числами Radius и Gauss. Увеличение размера матрицы влияет на скорость работы: время растёт в геометрической прогрессии.
  • Radius Это радиус, по которому будут «подкручиваться» пиксели относительно друг друга (так Refocus пытается вернуть резкость). Радиус подкручивания (также называемого конволюцией) является самым важным элементом при восстановлении резкости. При несильном размытии подойдет значение по умолчанию – 1. Если изображение размыто существенно, то значение должно быть большим (подберите его вручную).
  • Gauss – радиус размытия по Гауссу. Логично, что наилучшим образом этот параметр влияет на изображения с таким типом размытия. Во всех остальных случаях здесь можно оставить 0 (значение по умолчанию). Нужно учитывать, что ненулевые значения данного параметра добавляют в изображения неприятные артефакты, которые полезно подавлять параметрами Correlation и Noise.
  • Correlation Смягчает действие Refocus и помогает избавиться от артефактов (когда, к примеру, края блоков в сжатом файле JPEG становятся чрезмерно резкими). Диапазон возможных значений – от 0 до 1. Самыми полезными из них являются 0,5 и близкие к 1 – 0,95-0,99.
  • Noise – способ подавления шумов. Очень важно правильно подобрать нужное значение этого параметра. Так, при 0 качество изображения будет ужасным, в то время как 0,2 и более уже будут работать против повышения резкости и лишь «замылят» картинку.

При умелом использовании всех параметров можно заметно повысить качество фотографии, например, как показано на рис. 2.

Рис. 2

Рис. 2. Повышаем резкость изображений: «до» и «после» обработки Refocus.

Refocus-it

Данное расширение также предназначено для борьбы с нерезкостью, однако оно предоставляет более тонкие параметры настройки. Refocus-it способен эффективно восстановить фокус в фотоснимках, сделанных с расфокусировкой, а также исправить такие дефекты, как размытие в движении (Motion blur) и гауссово размытие.

Кроме стандартных функций, направленных на улучшение резкости, разработчики Refocus-it позаботились о сопутствующих инструментах – у вас есть возможность сгладить прямо в окне резкие артефакты, неизбежно появляющиеся при работе с изображениями низкого качества. В правой части диалога имеется чёрный кружок со стрелкой – ею можно задать направление уже имеющегося размытия в движении.


Практическая польза Refocus-it особенно заметна в ситуациях, когда из-за размытия вы не можете прочитать или распознать нечто значимое. Возьмем, к примеру, фрагмент фотографии страницы журнала (рис. 3a). Очевидно, что прочитать такой текст почти невозможно – с трудом различимы лишь отдельные очертания. Нерезкая маска нам здесь не поможет, а лишь подчеркнет имеющиеся искажения. Действие же Refocus-it может оказаться просто волшебным, при условии, что вы сможете точно подобрать необходимые параметры. Пожалуй, главный из них – это величина размытия (радиус). При наличии на снимке резких объектов на контрастном фоне можно приблизить изображение и постараться посчитать число пикселей, создающих ореол размытия. Если этот способ вам не подходит, то остаётся метод проб и ошибок. При неверном значении радиуса размытия Refocus-it лишь ухудшит и без того несовершенный снимок.

Однако даже при удачном подборе радиуса читать текст будет неприятно: виной тому заслон из проявившихся фоновых чёрных точек. Чтобы устранить его, воспользуйтесь сглаживанием и включите подавление шумов. Результат на рис. 3b получается при следующем наборе параметров: Radius: 7.70, Gauss: 0.00, Motion size: 0.00, Motion angle: 0.00, Noise: 1000.00, Iterations: 200, Boundary: mirror boundary, Smoothness: 100.0, Area size: 3, Adaptive smoothing: yes. Конечно, и этот вариант не идеален, но он уже легко читается как человеком, так и OCR-программами (например, Cuneiform для Linux).

Нужно отметить, что своей эффективностью Refocus-it во многом обязан принципу итеративной обработки, то есть многократному повтору одинаковых действий. Выше использовалось высокое значение итераций (200), что делало работу расширения чрезвычайно медленной. Для фотографий этого не требуется.

Часть 2: Устраняем шум

Цифровой шум проявляется в виде случайным образом расположенных элементов, которые придают фотографии неестественный вид – создаётся ощущение, что на изображение наложена маска из точек различной яркости и цвета. В особенности цифровой шум портит восприятие однотонно окрашенных частей изображения (например, голубого неба) и объёмное восприятие объектов заднего плана, находящихся не в фокусе. На величину шума более всего влияет значение светочувствительности (ISO), а также конструктивные особенности матриц цифровых фотокамер.

GREYCstoration

Данное приложение может использоваться как отдельно (из командной строки), так и в виде расширения GIMP. GREYCstoration работает по принципу избирательного размывания с сохранением очертаний и краёв на снимке.


Для примера мы возьмём фотографию, сделанную без вспышки при искусственном освещении (рис. 4a). При этом была установлена светочувствительность ISO 1250, что неминуемо приводит к появлению шумов, генерируемых матрицей фотокамеры. Что можно сделать в данном случае?

Среди множества параметров GREYCstoration наиболее важными являются Noise Scale и Contour preservation. Первый отвечает за физический размер элементов шума и напрямую влияет на степень шумоподавления. Чем точнее вы подберёте его, тем более эффективной будет работа GREYCstoration в целом. Параметр Contour preservation отвечает за сохранение контуров и, следовательно, влияет на детализацию обработанного снимка. Распознавание контуров производится исходя из контрастности пикселя относительно его соседей, и поэтому нужно знать, что слишком низкие значения Contour preservation сохранят обводку у шумовых пятен (программа примет шум за полезный объект), а слишком высокие – «замылят» изображение.

GREYCstoration позволяет производить очень тонкую подстройку параметров под конкретный снимок. В случае, если на нем мало цветовых переходов и преобладают монотонные заливки, полезно увеличить количество проходов. Для этого предусмотрен параметр Number of Iterations. Если на снимке сильные шумы сочетаются с высокой детализацией и наличием очень мелких, но важных деталей, то есть смысл поменять механизм вычисления соседних пикселей – Interpolation type. По умолчанию в программе установлено значение Nearest neighbor (ближайший соседний), но вы также можете выбрать Linear или Runge-Kutta. Последний вариант наиболее предпочтителен, хотя он и замедляет работу GREYCstoration в несколько раз. В этом случае взаиморасположение пикселей вычисляется с помощью системы дифференциальных уравнений, которые решаются по методу Рунге–Кутты. В результате расширение эффективно удаляет шум, сохраняя при этом тонкие линии и прочие важные детали.

После удаления зернистости и мелкого шума на белой стене остаются крупные пятна, из-за чего она в левой части кажется жёлтой, а в правой – сиреневой. Этот дефект можно исправить вручную. Сделайте из фона отдельный слой: выделите его «волшебной палочкой», затем скопируйте и вставьте.

Теперь нужно подстроить цвета, используя инструмент Цвет > Тон-Насыщенность. В данном случае нужно уменьшить насыщенность для жёлтых и пурпурных оттенков и немного повысить освещённость. Так как в нашем слое нет мелких деталей, мы можем использовать для него модуль GREYCstoration ещё раз, увеличив значение Noise Scale и уменьшив Contour preservation. Теперь слои можно объединить.

Итоговый снимок (рис. 4b) является результатом удаления не только шумов, но и зернистости. Чтобы избавиться от хроматических шумов, не размывая изображение совсем, можно воспользоваться сочетанием разных инструментов.

Альтернатива есть всегда

На сайте проекта GIMP Plugin Registry можно найти также другие расширения, которые призваны бороться с шумом на фотоснимках. Среди них стоит отметить Wavelet denoise, а также несколько сценариев на языке Script-fu (дополнения выглядят как файлы *.scm; для установки их следует просто скопировать в каталог /usr/share/gimp/2.0/scripts).

Модуль Wavelet denoise отличается тем, что позволяет удалять шум не из всего изображения, а отдельно по каждому каналу RGB, либо по индивидуальным каналам YcbCr. Данный модуль борется не с зернистостью, а с хроматическими искажениями (цветными пятнами), поэтому в его настройках вы найдете не величину радиуса, а движки, отвечающие за пороговые значения хроматических пятен.


Из сценариев наиболее интересен Dechroma – набор действий, использующий хитрую комбинацию гауссова размытия, медианы и кое-каких других стандартных функций GIMP. Dechroma очень эффективно удаляет хроматический шум из снимка, что удобно показать на том же самом снимке с дартсом. Использование комбинации Dechroma и GREYCstoration дает очень убедительный результат (рис. 5).

Есть ли способы подавить шум стандартными средствами GIMP? В принципе, в GIMP имеются обычные фильтры в том же разделе Улучшение: это Сгладить (в других программах его часто называют Медиана) и Удаление пятен (также известный как Despeckle). Однако последний подходит только для удаления шума на тёмном фоне; в случае же снимка дартса он бесполезен.

Часть 3: Долой искажения!

Известно, что даже автомобильное лобовое стекло слегка искажает изображение, а уж гранёный стакан и вовсе даёт повод повеселиться над смешными диспропорциями. Линзы в фотоаппаратах, особенно в тех из них, где оптика встроена в камеру и не может быть заменена, тоже не лишены этого недостатка. Заметнее всего оптические искажения на кадрах, где присутствуют строго вертикальные и горизонтальные линии, а также объекты правильной (обычно прямоугольной) формы. В LXF78 была опубликована статья о том, как исправлять эффект «сходящихся вертикалей». Он почти неизбежно возникает при съёмке интерьеров (особенно снизу вверх). Здесь мы будем бороться со вторым распространённым оптическим дефектом – так называемыми «бочкообразными» формами прямоугольных объектов. Возьмите свою «мыльницу» и сфотографируйте в портретном режиме рамку на стене (рис. 6).


Вы уже знаете, что делать: открываем снимок в GIMP и берём на вооружение инструмент Перспектива. Тянем изображение за угловые точки и исправляем угол обзора. Теперь мы как бы смотрим на рамку под прямым углом (рис. 7).

Как видно, проблема закругляющихся линий никуда не делась, и первая мысль, которая приходит на ум – это кадрирование снимка так, чтобы рамки не было вообще. Но что делать, если белая рамка по каким-либо причинам важна и её нужно сохранить? Тогда следует взять инструмент Фильтры > Искажения > Исправить искажения оптики. Появится диалоговое окно, в котором мы можем легко компенсировать «бочкообразность».


В нашем распоряжении имеются 6 параметров, из которых все (кроме, пожалуй, Яркости) отвечают за определённые пространственные манипуляции с плоскостью снимка. Названия параметров говорят сами за себя, и вы без труда подберёте нужные значения вручную.

После нажатия «ОК» снимок будет готов к итоговому кадрированию с правильными вертикальными и горизонтальными линиями (рис. 8).


И это ещё не всё

Мы рассмотрели три распространённых дефекта, актуальных для любительской фотосъемки. Разумеется, за рамками данной статьи осталось ещё много разных особенностей цифровой фотографии, которые успешно лечатся в GIMP. Владея искусством применять и сочетать фильтры из богатейшей коллекции расширений этого редактора, можно исправлять хроматические аберрации (голубые и фиолетовые ореолы вокруг краёв объектов), растягивать маленькие изображения почти без потерь в качестве, повышать яркость снимков, сохраняя оттенки на светлых областях, и многое, многое другое.

Возможности GIMP в деле профессиональной обработки фотографий пусть и не безграничны, но очень велики; кроме того, редактор постоянно совершенствуется. Совсем недавно ещё не было никакой речи о работе с цветовым пространством CMYK, не было поддержки цветовых профилей и формата RAW. Но времена меняются, и теперь всё это есть, а значит, профессиональная фотома- стерская под Linux становится реальностью. Однако это тема уже для другой статьи. LXF

Ссылки

Персональные инструменты
купить
подписаться
Яндекс.Метрика