к оглавлению

Сканирование негативов

Сравнение сканеров, которые я использовал в разное время:

Paper scan
Paper scan
Acer
Acer
Canon
Canon
Rolley
Rolley

Фрагмент, перемасштабированный к разрешению 1200dpi. У acer разрешение было исходно чуть лучше, у бумаги чуть хуже. Canon умеет сканировать до 4800dpi, но улучшения качества на больших разрешениях я не заметил.

Paper
Paper
Acer
Acer
Canon
Canon
Rolley
Rolley


Сканирование с помощью Canon 9000f mark II.

Пленки загружаются в держатель по два 6-кадровых куска и сканируются вместе. Получение инфракрасного канала - это дополнительный, довольно долгий проход. Для сканирования я сделал простой скрипт, который запускает scanimage и, после сканирования, делает jpg-превьюшку с более-менее осмысленными цветами. Сканирую на 1200 dpi (сканер поддерживает 2400 и 4800, но для моих негативов это слишком много, а времени требует пропорционально больше).

Скрипты и программы я выкладываю сюда: https://github.com/slazav/ph_scan

Цветной 48-битный pnm занимает 164 Mb, плюс 64 Mb на инфракрасный канал. Выглядит результат как-то так (преобразовано в 24-битный jpg):

RGB
RGB

Infrared
Infrared

В этом примере картинка не видна в инфракрасном канале, видна только пыль, что очень удобно. Однако, на некоторых пленках это, увы, не так.

Следующий шаг: я открываю превьюшку в xfig (у меня это делается по нажатию кнопки в программы для просмотра фотографий) и отмечаю прямоугольниками границы кадров. Теперь можно запустить скрипт, который делает следующее:

Проблема: инфракрасный канал не совсем точно совпадает с остальными, он немного сдвинут и растянут. Некая постоянная калибровка у меня зашита в скрипте для вырезания кадров, небольшой дополнительный сдвиг определяется и делается в программе для удаления пыли.

Пыль находится довольно простям способом: ищутся локальные минимумы по вертикали и горизонтали, с заданным размером (обычно +/- 5 точек) и глубиной не меньше заданного значения (обычно 5% от всего цветового диапазона). Программа для коррекции цвета и преобразования в 24-битную картинку примерно та же, что я использовал при сканировании на acer.

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

RGB channel
RGB channel
infrared channel
infrared channel
dust
dust
uncorrected
uncorrected
corrected
corrected

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

Вот еще один пример. Тут инфракрасный канал выглядит гораздо лучше:

RGB channel
RGB channel
infrared channel
infrared channel
dust
dust

uncorrected
uncorrected
corrected
corrected

Все такие картинки генерятся автоматически. Если результат меня устраивает - я удаляю все лишнее и оставляю только конечный jpeg. Если нет - пытаюсь убирать пыль с другими параметрами.