Pull to refresh

Как я пленки цифровал, и не только

Reading time8 min
Views225K

Немного предисловия



Сначала даже мысли не было писать статью, все казалось обыденным и малоинтересным. Но к своему удивлению, занимаясь на новогодних выходных приведением в порядок фотоальбомов, с интересом заметил, что не только я решил посвятить этому полезному делу праздничное время. Соответствующая по тематике статья «Опыт создания каталога и индексации семейного фото-архива. Индексация и оцифровка фотопленок» была и на хабре. Чуть позже появилась еще одна статья «Метаданные для организации хранения фото-архива». Посему решил поделиться каким-никаким опытом, может что по крупицам кому и пригодится.



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



Сканер



Первое, в чем был вопрос — естественно сканер. В свое время, лет 7 назад, пытался оцифровывать негативы и решил запасти пленочный сканер. Денег особо не было, выбрал что подешевле, им оказался Miktotek Filmscan 35.

По сравнению с монстрами сканирования, стоил он копейки, но и результат выдавал устрашающий. Я использовал к нему Silverfast как наиболее продвинутый софт в то время (может и сейчас). Не знаю, почему, но иногда мне при разных проходах это чудо выдавало то синюю, то зеленую фотку, то зависало все, это было непредсказуемо и очень грустно, над каждым кадром приходилось корпеть по 10-15 минут, выправляя гистограммы и осуществляя прочие танцы с бубном. Вобщем этот процесс отбил у меня охоту сканировать пленки на несколько лет, сканер так где-то и валяется.

Сейчас, обдумав все за и против, было решено следующее.
Было несколько моментов, которые надо было учесть:
  • сканировать по большей части буду не я, а родители, благо у них время сейчас есть
  • сканировать надо не только пленки, но и фото
  • сканировать надо много
  • сказочного бюджета нет


Кроме всего означенного я понимал, что сейчас пленка уже не является актуальным носителем, и поэтому скорее всего сканировать надо будет только один раз, правда может уйдет на это много времени.

Итак, пленочные сканеры отпали по двум причинам:
во-первых, предыдущий опыт показал, что за дешево нормальный такой агрегат не купить, а то, что дешево — ой, такой ад второй раз я не вынесу.
Во-вторых, покупать отдельно сканер для фоток и отдельно для пленки — тоже как-то дороговато и нецелесообразно.
Тем более, сказал я себе, если попадется что хорошее — отнесу в профессиональную лабораторию, уж на десяток кадров можно и разориться.

Посмотрев, что есть в продаже из того, что умеет сканировать кроме бумаги еще и пленку, выяснилось, что выбор невелик: или опять же заоблачные цены, или всего пара-тройка вариантов. Перерыв все работающие сразу после праздника магазины оказалось, что есть следующие приемлемые варианты:

  • Epson Perfection V330 Photo (A4, 4800 x 9600 dpi, USB 2.0, CCD,Film Adapter)
  • Epson Perfection V370, Photo (A4, 4800x9600 т/д, CCD, USB 2.0)
  • Canon CanoScan LiDE 700F (A4 9600х9600dpi 48bit CIS Слайд-адаптер USB2.0)
  • Canon CanoScan 5600F (A4 4800х9600dpi 48bit Слайд-адаптер USB2.0)


Остальное было или слишком дорого, от 10000, или, наоборот, ничего не умело. К сожалению, CanoScan 5600F отпал по причине отсутствия в данный момент в продаже, хотя по описанию очень неплох. Остальные оказались, по отзывам, примерно одинаковыми, но решающую роль сыграл тот факт, что для Epson'ов были драйвера для Linux, а поскольку хотелось бы работать не только под виндой, то в конце концов выиграл Epson Perfection V330 Photo. Нигде не смог узнать, чем же 330 модель отличается от 370, но поскольку линуксячьи драйверы упоминались только для 330, то остановился на нем, так сказать, «во избежание».



Драйверы берут на сайте AVASYS.

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

В отзывах по поводу сканера местами упоминается проблема с появлением полос при сканировании пленок — но я такого пока не наблюдал. Тем не менее на мой взгляд вот кое-что полезное по этому поводу, найденное в одном из отзывов на яндекс-маркете: «Спустя два года могу отчитаться об итоге расследования: в рамке сканера есть калибровочное окошко, где устанавливается баланс белого. Если туда попадают пылинки — получаются „битые пиксели“, которые при прогоне каретки дают полосы. Это, скорее всего, конструктивный дефект новой светодиодной подсветки (но кто же в этом сознается...). Итак господа, если у вас есть такой сканер,
удаляйте пыль.»

С каким разрешением сканировать — этот вопрос был не последним. Сканер выдает максимум 4800х9600, но при попытке выставить такое при скане фото 9х13см система стала материться на масштаб, пришлось уменьшать.

Критерий выбора разрешения простой: если считать, что печатать можно со стандартным разрешением 300dpi, то чтобы получить такое же изображение, надо иметь минимум 300dpi. Учитывая, что фото старые, то смысла сильно завышать эту цифру нет — все равно физическое разрешение не позволит получить качество из ничего. Опять же, вряд ли кто-то когда-то захочет печатать плакат с изображение прадеда на формате А1 или даже А4. Если кто и напишет книжку — то вряд ли будет картинка больше чем на лист. Вобщем решил, что для совсем старых сойдет двукратное превышение, для более качественных и более поздних — трехкратное, т.е. 600dpi и 900dpi соответственно. Далее выбрал то, что было наиболее близко из того, что выдала софтина, что шла со сканером.

Для негативов решил использовать максимум — не зря же покупал с таким разрешением… Скорее всего это перебор 4800х4800dpi, но всегда можно потом урезать, но главное, что потом уже не придется пересканировать с другими параметрами и можно спать спокойно.

Сканы сохраняются, естественно, ни в коем случае не в jpeg, дабы избежать потерь на сжатие. Все — только tiff. Вроде, конечно, место кушает побольше, но зато раз отсканировать — и потом проблем не знать: что хочу, то и делаю. К этому я тоже пришел не сразу, но практика показывает, что если сэкономить сейчас — потом буду жалеть и возвращаться к этому вопросу, а так, если все по-максимуму — то потом и сожалеть не о чем.

Каталогизация



Естественно, после оцифровки надо все это дело как-то разгребать. Основной задачей было подписывание пра-пра-родственников, ибо я хотел сохранить историю семьи на будущее, а без грамотных комментариев там никто никогда не разберется.

Вариант сразу обрабатывать фотки и выкладывать на сайт не подходил по двум причинам: во-первых, надо обработать все и сразу, а это время, да и родители в этом ничего не понимают; во-вторых, технологии меняются, и кто б знал, как через пару десятков лет будет выглядеть сайт, если вообще он будет как-то существовать.

Использование умной программы-каталогизатора не подходила по той же существенной причине — нет никакой гарантии, что через несколько десятков лет эта софтина будет жива и соотвественно никто не поймет, что, где и как хранится в ее умном уникальном формате.

На ум пришло решение хранить описание в обычном текстовом файле с тем же именем, что и фото — текст он и в африке текст, наверняка прочитать сможет кто угодно спустя десятиления, даже если придумают еще какой-то супер-юникод, все же это намного надежнее, чем специальный софт. Но как программист я с ужасом смотрел на этот вариант — ну некрасиво и все тут. Да и неудобно в процессе работы.

Родители сказали, что вообще хотят как в ворде — вот фотка, вот подпись — и все понятно. От такого предложения волосы встали дыбом, ибо опять же — сегодня ворд есть — завтра его нет.

Еще один вариант — хранить подписи в EXIF. Тут смущало то, что при обработке картинок многие софтинки EXIF просто игнорируют, в результате потерять драгоценные подписи может оказаться невосполнимым.

В общем, проанализировав всю ситуацию, принял решение: скнируем фото, подписываем его в виде EXIF и потом все эти картинки с подписями делаем read-only, дабы не было никакого соблазна что-то менять, и таким образом гарантируем сохранность информации. Хочется менять — делай копию — и вперед. Ну и бэкапы конечно. И вообще, в конце концов на то мы и программисты, дабы набросать небольшой скриптик, чтоб весь EXIF можно было на всякий случай экспортнуть в текстовый файлик, «во избежание» :)

Для работы с EXIF в линуксе есть куча инструментов командной строки, но это неприемлемо для удобной работы с большим количеством картинок. Тем не менее, вот что есть: exif, exiftool, exiv2, погуглив, можно найти более подробную информацию. Далее я использовал exiftool для пакетной обработки, но об этом позже.

Смотрим, что есть из GUI. Поизучав, что нам предлагает OpenSource сообщество, как-то остановился на DigiKam — «digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX», как написано у них на сайте.
Редактировать я решил в GIMP, GNU Image Manipulation Program, аналог фотошопа, но opensource. Поэтому возможность редактировать фото для софтины каталогизации отдельно не требовалась, а вот в самой каталогизации подкупили несколько вещей.



Во-первых, DigiKam редактирует EXIF, что мне и надо.

Во-вторых, все фото сразу на экране, подписываем в окошке рядом и сразу переходим к следующей — быстро, просто и удобно.

В-третьих, было замечено, что в самой EXIF есть несколько похожих тэгов для комментирования: Comment, UserComment, ImageComment, так вот, DigiKam пишет сразу во все, так что вероятность, что эту информацию прочитает другой софт, достаточно велика.

Кроме того, читая отзывы, меня порадовала мысль, что кроме просто EXIF софтинка умеет вести каталог, причем ничего никуда не копируя, в отличие от многих других, а просто обрабатывая все на месте. Это было огромным плюсом — я не искал эту возможность изначально, но она оказалась как нельза кстати. И что мне понравилось — кроме занесения инфы в EXIF, она пишет ее в свою базу и потом фото удобно сортировать и искать по меткам, тэгам, описаниям и т.п. И даже если в какой-то момент софт исчезнет и база тоже — то копия данных останется в EXIF, что, собственно, мне и надо.

Некоторые интересные мысли по каталогизации описаны в уже упоминавшейся статье «Опыт создания каталога и индексации семейного фотоархива. Индексация и оцифровка фотопленок». Так вот, все или почти все эти данные тоже можно держать в EXIF и при необходимости экспортить в любой формат, как нам будет удобно.
Дополнительным плюсом DigiKam является то, что можно в качестве обложки альбома можно выбрать любое фото, а мысль иметь в качестве обложки фото самого бумажного альбома мне понравилась, за что спасибо автору.

Еще один неочевидный момент, с которым я столкнулся при работе с DigiKam: если нет прав на запись в фото-файл, то софтина молча пишет только в свою базу, никак не давая понять, что есть проблемы. Я долго пытался разобраться, почему подпись в проге есть, а в файле — нет, тем более, что в настройках установлена опция «сохранять в файле». Так вот, имейте это в виду — проверяйте права доступа, а то можете потом долго материться.

Выкладываем на сайт



Итак, решены основные задачи — сканирование и каталогизация. Теперь настало время похвалиться перед родственниками, показать знакомым фото. Естественно путем выкладывания фото на сайт. Не так давно я уже делал софтинку для этого дела: сложил нужные фото в
каталог, запустил — и готово, сделался альбом. Об этом я писал на хабре в прошлый раз, «Simple automation: фотоальбом». Теперь же, используя DigiKam, я решил, что прямо в EXIF-тэгах можно помечать фото, надо его помещать в фотоальбом или нет, поскольку при сканировании были всякие картинки, которые на сайт выкладывать не стоит. Да и комментарии теперь можно брать из EXIF.

Вроде бы все хорошо, да не очень.

На сайте все обрабатывается в PHP, и там есть, как мне казалось, замечательная функция для работы с EXIF, read_exif_data(), но как показала практика, эта недофункция показывает только часть данных, абсолютно умалчивая про остальное. Перерыл все что мог — и мечта о легкой жизни канула в лету, пришлось вытаскивать EXIF из файлов на этапе генерирования альбома, благо инструменты командной строки имеют место быть.

В итоге переписал скрипт, вспомнив язвительный комментарий к предыдущей своей статье «Генератор php-файлов на Perl… Месье знает толк...», посмеялся про себя, что все же был прав, что полностью не положился на PHP — вот она мне подставила бы сейчас ножку, а так пара минут — и проблема решена.

Итак, при обработке фото в DigiKam помечаем фото флажком (он там называется PickLabel). Флажок пишется в файл в EXIF. Когда процессим все файлы из каталога — вытаскиваем флажок с помощью exiftool:

  $flagPickLabel = `exiftool -b -PickLabel '$fname_in'`;


Ну и далее в зависимости от флажка — если стоит — то процессим, если нет — пропускаем. Все задается в командной строчке, дабы было удобно. На самом деле тут можно обрабатывать много всего, это уже на вкус и цвет кому что надо.



Ссылка на исходники, если вдруг кому-то понадобится внимательно посмотреть или даже применить: photo_album-r143.tar.gz. Как пользоваться — упомянуто в предыдущей статье, не буду повторяться.

На этом спасибо за внимание, а если кому пригодилось — то безмерно рад.
Критика приветствуется.

UPD: Вот случайно нашел еще на хабре про сканирование негативов — удивляюсь, как раньше не заметил. Пусть будет тут до кучи.
Tags:
Hubs:
Total votes 24: ↑22 and ↓2+20
Comments46

Articles