Сканируем негативы
Дано: семейный фотоархив на нескольких негативных чёрно-белых фотоплёнках.
Для решения проблемы был одолжен сканер EPSON Perfection 2400 Photo. Прибор заработал в старой и давно неподдерживаемой Ubuntu 8.04 сразу. Оказался довольно быстрым и качественным.
Дальше всё просто:
1. Определитесь, какой стороной засовывать негативы. Проще всего это сделать экспериментальным путём.
Если все кадры однородны по освещённости, то после предварительного сканирования xsane выставляет близкие к оптимальным параметры яркости, контрастности и гамма-коррекции. При разнородных кадрах приходится подстраивать вручную. При сильно разнородных – даже сканировать дважды, хотя последующая обработка показала, что смысла в этом не очень много.
Чёрно-белые негативы есть смысл сканировать сразу в чёрно-белом режиме – это быстрее.
2. Конструкция слайд-модуля такова, что вытащить «задний» конец плёнки затруднительно, но возможно. Я хотел попробовать сканировать плёнку, не разрезая, но это привело к появлению вертикальных полос и искажений. ??зрядно изнасиловав мозг, я догадался, что это происходит из-за того, что при этом конец плёнки закрывает калибровочную область.
Мораль: плёнку обязательно надо резать.
3. Плёнку лучше всего резать на кусочки ровно по 6 кадров и засовывать их всегда одинаково, так, чтобы границы кадров находились напротив разделительных линий слайд-модуля. Это нужно, чтобы потом автоматически порезать полученные сканы.
4. Так как сканов получилось много, для их автоматизированной обработки использовался пакет imagemagick. Был написан скрипт:
#!/bin/sh
c="-negate -blur 2 -unsharp 3x1+1.2+0.02 -equalize -normalize -verbose"
convert -crop 1100x1670+40+73 $c $1 $1-cut1.jpg
convert -crop 1100x1670+40+1850 $c $1 $1-cut2.jpg
convert -crop 1100x1670+40+3650 $c $1 $1-cut3.jpg
convert -crop 1100x1670+40+5420 $c $1 $1-cut4.jpg
convert -crop 1100x1670+40+7220 $c $1 $1-cut5.jpg
convert -crop 1100x1670+40+9005 $c $1 $1-cut6.jpg
Этому скрипту были скормлены сканы через
find | grep jpeg | grep -v cut | grep -v "/00/" | xargs -t -I '{}' ./dph.sh '{}'
В винде imagemagick тоже работает.
Помимо обрезки как таковой скрипт инвертирует негативы, нормализует и немного реруширует фотку. На большинстве снимков автоматическая обработка показала удовлетворительные результаты, с учётом возраста и качества исходных плёнок.
Только не спрашивайте, откуда цифры в скрипте – они получены экспериментально для обычной фотоплёнки и разрешения 1200 точек на дюйм с небольшим запасом (около 5% кадра).
Набор фильтров изначально был иным, немного оптимизирован по времени счёта.