Недавно нашёл лёгкий способ удалять пятна грязи с фотографий. Речь о пятнах пыли на матрице. Если на камере объективы сменные и иногда меняются, грязь на фоточувствительный элемент рано или поздно проберётся. И встроенная очистка справляется с ней с переменным успехом. Выглядят эти пятна примерно так:
Их легко распознать, они появляются во всех снимках серии на одном и том же месте. Наиболее заметны они становятся на маленькой диафрагме, при съёмке более-менее однотонных объектов (небо, море, далёкие холмы). Поэтому можно поставить маленькую диафрагму (скажем, f/22 или меньше) и снять чистое небо. Если пятна сильно заметны, то матрицу придётся чистить.
Я же расскажу, что делать с фотками, на которых эти пятна уже есть. Использую для этих целей Gimp и плагин Resynthesizer. Конечно, можно было бы обойтись обычной клонирующей кистью, но вычищать несколько фотографий подряд, особенно если там по несколько пятен на каждой, утомительно. А Resynthesizer оказался неплохой автоматической «клонирующей кистью». Пользователи Ubuntu могут установить плагин пакетом gimp-resynthesizer.
Вначале пятна надо найти и выделить. Я обычно использую свободное выделение . Чтобы выделить сразу несколько пятен, удерживаю нажатой клавишу Shift. Важно захватить в выделение достаточное количество «чистых» пикселей на границе: они влияют на результат работы Resynthesizer.
Затем можно запустить сам плагин: Фильтры -> Карта -> Resynthesize.... В общем, параметры по-умолчанию работают обычно достаточно хорошо. Возможности периодического мощения (make ... tileable) нам в этом случае не нужны.
Плагин не очень шустрый. На большой фотке (10-15 мегапикселей) нужно будет несколько секунд подождать. Впрочем, это всё равно быстрее и легче, чем использовать клонирующую кисть.
Наконец, нужно осмотреть результат, нет ли никаках странностей. Скорее всего, всё будет нормально (пятна обычно заметны как раз на таких местах, которые Resynthesizer легко восстанавливает: небо, облака, море, сплошная растительность). Если выделение было слишком тесным, его граница прошла слишком близким к пятну, то на месте пятна может всё равно остаться размазанное потемнение. В этом случае нужно отменить исправление и повторить, выделив пятна по-другому. Однако обычно всё удаляется с первой попытки:
Фотографии я храню, группируя каталоги по годам и по датам съёмки (указывая дату в формате ISO), то есть в архиве путь к альбому у меня примерно такой: photos/2009/20090628 - название альбома/. Очень удобно, потому что обычно один день — одна тема, и даже при алфавитной сортировке каталога альбомы упорядочены хронологически. И такая организация не зависит ни от операционной системы, ни от конкретной программы-каталогизатора.
Однако если на карточке фотографии разных дней — раскидывать их по альбомам вручную утомительно. Поэтому у меня есть ещё и скрипт-сортировщик для внесения фото в архив. Он смотрит на дату в EXIF, создаёт нужные каталоги и помещает в них фото:
#!/bin/sh
ARCHIVE=$HOME/photos
for f in "$@"; do DT=$(exiftool -s -DateTimeOriginal "$f") YEAR=$(echo $DT|awk '{print $3;}'|awk -F: '{print $1;}') ISODAY=$(echo $DT|awk '{print $3;}'|sed 's/://g') TARGET="$ARCHIVE/$YEAR/$ISODAY" install -d "$TARGET" && \ install "$f" "$TARGET" echo "$f -> $TARGET" done
Запускаю из каталога с фотокарточки:
$ import-photos *
Так можно импортировать и JPEG-и, и RAW. И там, и там EXIF обычно есть.
Иногда, отфотографировав день-два-три можно обнаружить, что всё это время в камере стояла неправильная дата. Я тут как раз ошибся: на один год (вперёд), 12 часов (a.m./p.m, эх) и один часовой пояс.
Дело поправимое. Поможет exiftool. Чтобы откатить дату на один год и 12+1 (13) часов, поступаем так:
Смотрим, что получилось, и если что-то не так, то возвращаемся к оригиналам (exiftool их услужливо сохранит):
$ for f in *_original ; do mv $f ${f%_original} ; done
Если же всё в порядке, добавляем фотографии в свой архив и используем по назначению. Например, добавляем геотаги.
Чтобы изменить сразу три временны́х тега (DateTimeOriginal, CreateDate и ModifyDate), можно использовать опцию -AllDates. Например, чтобы сдвинуть время на один час вперёд для всех фоток в папке:
Давно хотел написать эту заметку. Расскажу о том, как можно сравнительно легко склеивать панорамы из отдельных фотоснимков. Хотя на всех иллюстрациях снимки экрана сделанны в линуксе, все описываемые программы доступны и пользователям других операционных систем (Windows, MacOS X). Так что аудитория этой заметки заметно шире моей обычной аудитории. В отличие от панорамного софта, который чаще всего упоминается в рунете, эти программы свободны и распространяются бесплатно. Итак, герои сегодняшнего дня:
Hugin. Графический интерфейс для склейки панорам. В примерах использовалась версия 0.7.0-beta5. Программа названа в честь одного из воронов Одина.
Autopanosift. Программа ищет «связующие точки» между отдельными кадрами. В большинстве случаев вызывается из Хугина.
Enblend. Бесшовно склеивает отдельные кадры в единое изображение. Она обычно тоже запускается автоматически из Хугина, хотя в сложных случаях её можно запускать и вручную.
Ещё потребуется какой-нибудь графический редактор. В примерах у меня будет показан nip2 (умеющий работать даже с очень большими изображениями) и Gimp. В общем, это дело вкуса.
В общих чертах, технологический процесс выглядит так:
снимаем фото,
загружаем отдельные кадры в Хугин,
ищем «связующие точки» между отдельными кадрами, или автоматически (с помощью Autopanosift), или вручную,
оптимизируем панораму (после этого отдельные кадры располагаются так, чтобы связующие точки по возможности совпадали), смотрим на предварительный результат,
окончательно выбираем проекцию и склеиваем кадры в единую панораму (на этом этапе пригождается Enblend),
обрезаем сшитую панораму, проверяем на наличие ошибок сшивки,
окончательно ретушируем кадр, как в случае обычных фото.
Теперь подробнее о каждом этапе.
Как снимать панорамы
Нужно взять фотокамеру и последовательно снимать фрагменты будущей панорамы. Здесь есть несколько тонкостей:
кадры должны перекрываться примерно на треть, это необходимо для успешного поиска связующих точек между отдельными кадрами,
составлять горизонтальные панорамы удобнее из вертикальных кадров, таким образом вертикальный угол зрения однорядной панорамы будет шире, панорама будет восприниматься естественнее при просмотре целиком на экране компьютера, больше будет запас для окончательного кадрирования,
чаще всего удобно снимать с широким углом изображения (на минимальном «зуме»), в этом случае панорама будет состоять из минимального числа кадров (и наоборот, когда цель состоит в создании максимально детальной панорамы, стоит снимать длиннофокусным объективом, но в несколько «рядов»),
используйте бленду или прикрывайте объектив рукой, чтобы избежать бликов на объективе (при съёмке панорам часто приходится снимать почти против света),
не используйте поляризатор, хотя он и делает цвета сочнее на отдельных кадрах, из-за него небо на панораме в целом выглядит неестестсвенно,
снимайте все кадры панорамы с одними и теми же настройками экспозиции и баланса белого; хотя Хугин и Enblend и умеют выравнивать экспозицию и баланс белого в итоговой панораме, это не всегда получается достаточно хорошо, а разные цветовые тона сразу делают заметными отдельные кадры в панораме; тут очень может пригодится ручной режим экспозиции в фотокамере (если такой есть),
то же относится и к фокусному расстоянию, сшивать будет проще, если все кадры будут сняты с одним и тем же фокусным расстоянием,
старайтесь снимать с горизонтально выровненного штатива, если есть такая возможность; конечно, можно успешно снять панораму и с рук, но очень многие панорамы мне не удались именно из-за того, что я поленился достать штатив,
как в случае штатива, так и в случае съёмки с рук, важно обеспечить неподвижность оси вращения камеры, в идеале она должна проходить через оптическую ось объектива; особенно хорошо, если ось пройдёт через «точку без параллакса» (вот тут о её поиске по-английски),
последние два правила особенно важны, если объекты переднего плана расположены близко к камере,
лучше снимать все кадры последовательно в одном направлении, или слева направо, или справа налево, это минимизирует смещение подвижных объектов (например, облаков) в соседних кадрах; если в панораму попадает какой-то быстродвижущийся объект (например, машина, животное, человек), то потом бывает удобно иметь любой кадр панорамы в двух вариантах, с объектом и без него.
Многие из этих «хитростей» я почерпнул отсюда (текст по-итальянски). Это проект, который объединяет 380 круговых панорам, снятых с разных вершин в западных Альпах. Кстати, интересный пример того, что можно сделать со снятыми панорамами.
В результате получаем набор кадров будущей панорамы. Например, такой:
Как склеивать кадры в Hugin
Запускаем Хугин. В современных версиях Хугина все основные действия доступны прямо с его первой вкладки. По порядку, сверху вниз. Вначале загружаем фото:
После этого нужно создать контрольные точки. Жмём «Объединить…»:
После этого запустится Autopanosift:
Как правило, достаточно нажать кнопку «Compute» и дождаться, пока программа найдёт все контрольные точки.
Когда Autopanosift закончит, кнопка «Exit» в его окошке станет доступна:
Жмём и попадаем обратно в Хугин. Вначале откроется окно предварительного просмора
Это результат предварительной сшивки. Чтобы увидеть проблемные области, удобно переключить режим совмещения с нормального на «Разницу», тогда в области перекрытия кадров светлый цвет будет соответствовать несовпадению изображений:
Однако закроем предварительный просмотр и вернёмся на первую вкладку Хугина. Там будут указаны параметры оптимизации. В данном случае предварительный результат оставляет желать лучшего:
Максимальная погрешность оптимизации составила 25 пикселей, т.е. одна из контрольных точек отстоит от своей пары на соседнем снимке на 25 пикселей. Это действительно плохо.
Перейдём на вкладку «Контрольные точки» и, попарно разглядывая кадры, посмотрим, как их расставил Autopanosift. Вот, например, и наша проблемная точка:
Проблемная точка оказалась где-то в облаках. И это хорошо, это легко исправить. Вообще, следует избегать размещения контрольных точек на изменчивых объектах: облаках, качающейся траве, волнах. Контрольные точки на таких объектах — почти гарантия проблем сшивки.
К сожалению, Autopanosift не умеет распознавать объекты на фото и предсказывать их поведение. Поэтому результаты его работы требуется корректировать вручную. В частности, точки на облаках можно просто убрать.
Другой нюанс. Autopanosift не умеет распознавать линию горизонта или гор, или стену здания, а для зрителя очень важно, чтобы они были ровными, неразрывными. Чтобы это обеспечить, проще всего просто добавить кое-где точки вдоль таких линий, тогда их положение будет учитываться при оптимизации панорамы.
На иллюстрации я добавляю такую точку:
Для этого я щёлкаю на выбранной точке на снимке слева, а затем примерно в том же месте на снимке справа. Чаще всего Хугин правильно размещает парную точку на втором снимке. Иногда же ему это не удаётся, и тогда можно увидеть такое сообщение:
Ничего страшного, парную точку можно уточнить вручную. Современные версии Хугин услужливо увеличивают окрестность точки, так что правильно поставить парную точку легко. Уточнив её положение, нажимаем «Добавить».
Ещё пара советов о расположении точек: избегайте «кучкования» всех контрольных точек в одном месте, особенно если это место находится на переднем плане, небольшие ошибки в положении этих точек будут соответствовать большим смещениям кадра при оптимизации. Старайтесь «выкладывать» контрольные точки вдоль важных для глаза контуров (и наоборот, не ставьте слишком много там, где глаз не чувствует линии).
Вот, например, сравните как расставила точки программа:
и как лучше их расположить:
Есть ещё один тип контрольных точек, пример которых я не буду приводить, потому что в данной панораме они не понадобились. Если обе точки пары поставить на один и тот же кадр, то зададут горизонталь или вертикаль в этом кадре. Это полезно, если в кадре есть архитектурные сооружения или деревья. Один известный дизайнер много писал о том, что здания на фотографиях должны стоять вертикально.
Поправив контрольные точки, попробуем ещё раз оптимизировать панораму. Кстати, если перейти на вкладку «Оптимизатор», то можно будет выбрать, какие именно параметры кадра оптимизировать. Мне кажется, что очень часто лучших результатов можно достичь, если оптимизировать не только положение кадра, но и его поворот вокруг оптической оси, «(y,p,r)». Особенно это верно для панорам, снятых с рук (снимая с рук, легко нечаянно немного наклонить камеру).
Заново оптимизировав, можно ещё раз посмотреть на результат в области предварительного просмотра:
Кстати, в области предварительного просмотра можно посмотреть панораму в разных проекциях, выбрать положение оптической оси виртуального объектива (щелчок левой кнопкой мыши по области изображения) или повернуть виртуальный объектив вокруг оптической оси (щелчками правой кнопки мыши по области изображения).
Очень полезны функции «По центру» и «Уместить», а вот функцией «Выровнять» надо пользоваться осторожно. Если панорама была снята с горизонтально выровненного штатива, то выравнивание вообще не должно требоваться, если же сняли с рук, и кадры пошли «волной», то иногда выравнивание помогает убрать волну, но мне кажется, что при этом ухудшается результат сшивки. Функция «Выровнять» в Хугине довольно новая.
Теперь, если всё в порядке, делаем последний шаг. Переходим на вкладку «Сшиватель», выбираем проекцию, советую ещё раз рассчитать поле зрения и выбрать оптимальный размер (при котором не происходит уменьшения изображения).
Для просмотра на экране целиком, на мой взгляд, очень хорошо подходит цилиндрическая проекция. Если же планируется просматривать в тех или иных программах просмотра, например в апплете PTViewer, то лучше использовать эквидистантную проекцию (или ту, которую требует программа просмотра). А «рыбий глаз», по-моему, лучше всё равно снимать «рыбьим глазом».
Результат сшивки я всегда сохраняю в формате TIFF, потому что потом его ещё приходится редактировать. Жмём «Собрать», и ждём:
Ждём долго, это, пожалуй, самый долгий вычислительный процесс во всей технологической цепочке. Конец этого процесса выглядит примерно так:
Всё. У нас теперь есть большой файл со сшитой панорамой. Сохраняем проект Хугина и закрываем. Дальше нужно довести сшитую панораму до ума.
Обработка сшитой панорамы
Итак, у нас теперь есть TIFF-файл со сшитой панорамой. Он может быть довольно большим. В этом примере он получился 101 мегабайт. В действительно больших панорамах счёт может пойти на гигабайты. Поэтому я приведу пример, как можно обрезать панораму в редакторе nip2, который может работать даже с изображениями, размер которых превышает размер оперативной памяти.
Вообще, редактор nip2 довольно нетрадиционный. Советую для первого знакомства посмотреть заметку о нём Михаила Конника. Редактор по принципу работы больше похож на электронные таблицы, но работает действительно быстро.
Чтобы обрезать нашу панораму, дважды щёлкнем по ячейке с исходным файлом A1. Откроется новое окно с изображением:
Масштабируем с помощью Ctrl+колёсико мышки. Зажав Ctrl и перетягивая мышку от левого верхнего угла к правому нижнему выделяем прямоугольную область:
Да, выделять прямоугольную область в nip2 нужно именно так: от верхнего левого угла к правому нижнему и зажав Ctrl.
Теперь в главном окне nip2 появляется новая ячейка A2:
Именно содержимое этой ячейки (уже обрезанную панорамe) мы и сохраняем в файл.
В данном случае я обрезал с небольшим запасом, поэтому в одном месте на краю панорамы есть дырка:
По-моему, лучше оставить такую дырку в малозначительном месте, чем отрезать что-то важное в другом месте панорамы. А в малозначительном месте можно помахать клонирующей кистью:
Наконец, сохраняем окончательный вариант панорамы, добавляем геотаги, и любуемся:
Чтобы добавить геотаги потребуется скопировать EXIF-теги из исходных кадров в окончательный вариант панорамы. Я это делают так:
Одно из самых интересных панорамных сообществ, на мой взгляд, группа Perfect Panoramas на фликере. Туда принимают только те панорамы, в которых модераторы не найдут дефектов.
Есть фотосообщество в ЖЖ, тоже посвященное панорамам. Не помню, как называется.
Панорамам с геотегами — самое место на Panoramio. Хорошие панорамы потом покажут в Google Earth :)
В интернете панорамы можно показывать с помощью апплета PTViewer.
Дополнение 2010-02: со времени написания заметки появился хороший панорамный хостинг pan0.net. На него можно выкладывать как круговые, так и частичные панорамы. Есть флэш-просмотрщик, который можно легко вставлять в блоги.
Перфекционисты и любители монументального искусства могут снимать гигапиксельныепанорамы.
Ну и в общем ещё много разных применений этой техники. В том числе и вполне серьёзных.
Продолжаю серию заметок про GPS. В этот раз расскажу, как, используя GPS, добавить к фотографиям геотаги.
Геотаг
— связанная с фотографией информация о географических координатах места съёмки, высоте над уровнем моря и географическом названии местности; технически, геотаги — это дополнительные поля «GPS Latitude», «GPS Longitude» и «GPS Position» в заголовках EXIF.
Если в фотографии присутствует геотаг, то при загрузке её на Flickr или Panoramio она может быть автоматически привязана к карте (на фликере это надо явно разрешить в настройках учётной записи). Умеют обрабатывать геотаги и многие другие сервисы и программы (например, есть плагин для Gallery2).
Для создания геотагов нужно 3 вещи:
Фотографии с правильными датами и временем в EXIF (для этого лучше ещё до съёмки установить часы фотокамеры по приёмнику GPS).
GPS-трек, в котором записана траектория перемещения фотоаппарата (фотографа) с указанием времени.
Программа, которая присваивает фотографии географические координаты из трека. Я расскажу о двух их них: digiKam и HappyCamel (хотя есть ещё gPicSync и другие программы)
Фотографии
Как я уже отметил, часы фотоаппарата лучше синхронизовать с GPS заранее, ещё до съёмки. Если же так случилось, что часы синхронизованы не были, то в дальнейшем придётся установить какое было расхождение часов в двух приборах и указывать его в процессе присвоения геотагов. Здесь и далее я предполагаю, что фотографии уже обработаны и сохранены в формате JPEG (не RAW) и имеют EXIF-заголовки с правильной датой съёмки.
GPS-трек
Подготовка GPS трека вещь более тонкая. Трек должен содержать время для каждой точки. Трек желательно должен быть непрерывным (я выключаю GPS на время стоянок и ночёвок ⇒ треки отдельных переходов нужно объединить в один). Из трека лучше выкинуть «ошибочные» точки (в зонах с плохим приёмом координаты GPS часто «скачут»). Максимальный временной интервал между точками трека должен быть желательно небольшим (иначе придётся полагаться на автоматическую интерполяцию уже в процессе присвоения координат).
В случае навигаторов Garmin это всё означает, что не надо пользоваться функцией «Save track» в приборе. Она не только не сохраняет трек, но и удаляет из него данные о времени, а также сокращает количество точек ради экономии памяти. Подробнее об этом здесь. Для наших целей нужно или брать основной и единственный активный трек из памяти устройства (он обычно называется «ACTIVE LOG #XX») или «сырой» GPX-трек сохраняемый на карточку памяти. А про функцию «Save track» в Garmin лучше забыть и проводить всю обработку треков на компьютере. Скопировать трек на компьютер можно любым удобным способом (некоторые из них я уже описал в предыдущей заметке).
Похоже, самые универсальный и мощный инструмент для обработки треков — GPSBabel. В случае, если я хочу сразу взять активный трек с устройства Garmin, подключенного к /dev/ttyUSB0, команда будет выглядеть так:
где параметры коммандной строки означают следующее:
-i garmin -f /dev/ttyUSB0 говорит брать исходные данные прямо с устройства Garmin подключенного по USB (если исходные данные уже доступны в виде GPX-файла, можно заменить на -i gpx -f исходный-трек.gpx, если исходных GPX-файлов несколько, то можно указать их всех, напримее -i gpx -f 20080621.gpx -f 20080622.gpx -f 20080623.gpx -f 20080624.gpx);
-t -w говорят брать с устройства информацию только о треках (-t) и точках маршрута (-w) — точки маршрута включаю, потому что трек мне пригодится и для других целей;
-x radius,distance=3K,lat=45.058646,lon=6.907375 — это фильтр, отсекающий всё, что не входит в круг радиусом 3 км относительно заданной точки (необязательно);
-x track,pack — этот фильтр объединяет треки отдельных переходов в один большой;
-x discard,hdop=3,vdop=3 — этот фильтр выбрасывает из трека точки, для которых горизонтальная или вертикальная мера ошибки больше 3 (как HDOP и VDOP связаны с метрами), на практике этот фильтр действительно эффективно отсеивает точки внезапно «выскочившие» из траектории, значение «3» эмпирическое, иногда я указываю даже «10»;
-x position,distance=5m — объединяет точки, расстояние между которыми меньше 5 м (короткие остановки);
-x interpolate,time=60 — интерполирует трек так, чтобы между соседними точками было не более 60 секунд (это один из самых полезных фильтров для создания геотагов!);
-o gpx -F мойтрек.gpx — сохраняет результат в файл мойтрек.gpx в формате GPX.
Проверить качество полученного трека можно просмотрев его в какой-нибудь программе. Мне пока больше всего нравится Viking, он быстро запускается и позволяет подгрузить карты Google под трек, чтобы посмотреть как трек соотносится с местностью. Если трек получился красивый и правильный, переходим к следующему этапу.
Добавление геотагов
Расскажу о двух программах, которые позволяют добавить геотаги: о digiKam (красивый фотоорганайзер с большими возможностями, для добавления геотагов есть графический интерфейс) и о HappyCamel (скрипт для коммандной строки, написанный на Python). Желающие могут легко найти и другие инструменты.
В любом случае, при добавлении геотагов на этом этапе кроме подготовленного трека в формате GPX и фотографий потребуется ещё вспомнить, в каком часовом поясе живём (какое время на фотоаппарате). Здесь нюанс: часовой пояс нужно будет указывать с поправкой на летнее время, то есть, если зимой +03:00, то летом будет +04:00, если зимой +01:00, то летом +02:00.
Добавляем геотеги в digiKam
Признаюсь, после долгого перерыва я опять установил digiKam как раз, чтобы попробовать добавить геотаги. К своему удивлению, обнаружил, что как фото-каталогизатор digiKam стала за эти год-два гораздо лучше. Я бы даже сказал лучшим из всех доступных под Linux :-) Настолько, что я его даже оставил и стал пользоваться. Тем более, что работает быстро, структуру моего фотоархива (ГОД/ГГГГММДД-название-альбома) понимает и не пытается переделывать, метаданные пишет в виде стандартного и открытого IPTC, а по возможностям превосходит всех остальных (F-Spot, Blue Marine, gThumb, Picasa).
Ну а как добавить геотаги, проще показать, чем рассказать:
Добавляем геотеги с помощью HappyCamel
Можно добавить теги и из коммандной строки. Результат получается примерно тот же, только гибкости немного больше. В репозиториях Debian скрипта HappyCamel ещё нет, но установить его несложно с помощью
(если использовать checkinstall или stow, то потом его можно будет легко и просто убрать).
Лучше, конечно, если в системе будет установлен и exiftool (libimage-exiftool-perl в Debian). HappyCamel умеет писать в EXIF и без него, но автор рекомендует всё же полагаться на exiftool.
Чтобы добавить теги, переходим в каталог с фотографиями и выполняем примерно такую команду:
-x y — писать геотэги в EXIF; можно попросить внести туда и географические названия с Geonames.org (-g y);
--exiftool=y — читать и писать EXIF используя exiftool;
--utc-offset=+02:00 — часовой пояс фотоаппарата (с учётом летнего времени!);
--elevation=2 — интерполировать данные о высоте над уровнем моря (не обязательно);
--use-outside=y — фотографии, сделанные до начала или после конца записи трека помечать используя первую и последнюю точки трека соответственно (не обязательно);
-t мойтрек.gpx — трек с траекторией;
*.jpg — no comments :-)
Вот в общем, и всё. Теперь можно загружать фотографии на Flickr или Panoramio. Да, если кому-то интересно, можете посмотреть на мои фотографии.
Если данных GPS, к сожалению, нет, а геотег добавить надо, то можно сделать так: загрузить фотку на Flickr, поместить её на карту с помощью Flickr Organizr, а потом скачать все помеченные таки образом фотки обратно и по метаданным Flickr добавить уже нормальные геотаги. Подробно это описал Sphinx в заметке Геотеги Flickr в EXIF. Он же написал скрипт, который этот процесс автоматизирует.
Дополнение: Второй способ. Как верно заметил в комментариях massalim, можно добавить геотег просто позиционируя фотографию на карте прямо в digiKam (у меня в digiKam 0.9.3 с kipi-plugins 0.1.5 эта возможность есть). В меню выбираем Image → Geolocation → Edit coordinates… и затем просто находим нужное место на карте:
Не секрет, что у цифровых камер довольно ограниченный динамический диапазон, то есть разница между самым яркими и самыми тёмными градациями в кадре. Говоря цифрами, динамический диапазон закатного пейзажа вполне может достигать 20 ступеней (соотношение яркостей 220), а большинство любительских камер обладают динамическим диапазоном максимум 8 ступеней. Это значит, что на фотоснимке такого пейзажа солнце и небо будут выбеленны, а детали в тенях неразличимо чёрными.
Чтобы обойти это ограничение в последнее время часто применяется техника известная как High dynamic range imaging (HDR). Идея её состоит в том, что берутся несколько кадров одной и той же сцены с разным уровнем экспозиции. Затем по совокупности кадров вычисляется сколько света должно было падать на каждый пиксель изображения. Эта информация позволяет построить новое изображение, как если бы динамический диапазон камеры был сколь угодно широк. При этом информация о тёмных градациях изображения берётся в основном со светлых кадров, а информация о светлых градациях — с тёмных. Полученные изображения часто очень красивы и приближены к нашему естественному восприятию сцен с высоким контрастом.
Однако надо учитывать, что большинство любительских камер могут делать в режиме автовилки максимум 3 кадра, и шаг экспозиции между ними обычно ограничен ±2 EV, а то и всего ±1 EV (как в моей камере). Это позволяет расширить динамический диапазон соответственно на 4 или лишь 2 ступени. Хорошо, но не очень много.
В этом случае часто может быть проще и быстрее использовать плагин Exposure Blend plugin для GIMP (сайт, похоже, часто не работает, но в Debian этот плагин можно найти в пакете gimp-plugin-registry). Результат работы этого плагина не является настоящим HDR. Вместо этого с помощью масок берутся тёмные детали с яркого снимка, а светлые детали с тёмного, и объединияются в одном изображении за счёт наложения слоёв. Однако результат бывает довольно хорош. И даже честный HDR по трём кадрам с любительской камеры и шагом экспозиции ±1 EV не даст результата лучше.
В GIMPе плагин запускается из меню Расш. / Photo / Exposure Blend. Нужно указать ему три файла (нормальный, тёмный, светлый). Большинство настроек хороши по-умолчанию. В результате будет создано изображение с тремя слоями (нормальный внизу, над ним слой с тёмными деталями и слой со светлыми деталями). При желании можно поиграться с прозрачностью слоёв.
Конечно, если камера поддерживает большой шаг автовилки — это хорошо. При съёмке лучше задавать максимально возможный. Результаты будут лучше. К сожалению мой фотоаппарат умеет делать максимум ±1EV, а этого не достаточно.
Поэтому для этого примера я избрал немного иной подход. Я снял одно изображение в формате RAW (12 бит на цветовой канал), а затем обработал его в UFRaw, сделав три изображения: одно нормальное и два с коррекцией экспозиции ±2EV.
Вот что получилось (ссылки ведут на более крупные изображения, лежащие на imageshack.us, желающим могу выложить RAW или полноразмерные версии): + + =
Сравните обычный кадр с композитным изображением, полученным с помощью Exposure Blend (внизу):
В изображении, созданном Exposure Blend, детали более отчётливы, чем в исходном изображении. И в тенях (фон, шары, поверхность), и в светлых областях (воск свечи). И это сделано компактной камерой и всего несколькими кликами мыши!
Я специально не исправлял гамму и не трогал цветовых кривых. Одно из ключевых преимущества использования Exposure Blend перед использованием HDR — это сохранение естественной цветопередачи. В случае HDR задача преобразования композитного изображения с расширенным динамическим диапазоном к обычному цветовом пространству совсем не тривиальная (попробуйте повторить результат в Qtpfsgui!). При использовании Exposure Blend никакой необходимости подгонять и настраивать особенности цветопередачи нет. Изображения всегда выглядят натурально.
Можете взглянуть также на некоторые другие изображения, полученные с помощью Exposure Blend (ссылки на Flickr):
P.P.S. Как отметил в комментариях nagos, в будущих версиях пакета enblend появится также утилита enfuse, позволяющая совмещать кадры с разной экспозицией (в том числе более 3); в данный момент она доступна в версии enblend для разработчиков. Можете посмотреть также заметку про создание HDR в qtpfsgui, написанную nagos.