Почти профессиональный пленочный сканер из хлама
Во времена моей молодости очень многие занимались фотографией. Увлечение было еще то — никаких сервисов по проявке не было, и вообще это был Советский Союз — все нужно было уметь самому. У каждого такого любителя в ванной хранилось куча бутылок с разными проявителями-закрепителями, где-то на антресолях лежал фотоувеличитель и красный фонарь (это не то, о чем вы могли подумать, никакого отношения к Амстердаму). Особо буйные, к которым я всегда относился, делали цветные фотографии. Там химии было очень намного больше, и процесс был очень критичен к температурам. И хорошо, если удавалось купить ГДР-овскую пленку ORWO, советская почти гарантированно уходила в брак. Хотя не исключено, что я ее просто готовить не умел.
И вот, 40 лет спустя, я перебираю старые слайды. Кадры, где мы молодые, счастливые, где моя жена выглядит так, что я сам себе завидую. И понимаю: время беспощадно не только к людям, но и к пленке. Цвета выцвели, появились царапины. Счастье-то было, а мы его не ценили. Надо спасать!
Лет 10 назад я купил недорогой пленочный сканер. Простая штука: белая светодиодная подсветка и камера на 5 мегапикселей. Евро этак за 100-150. Хорошие, контрастные слайды он еще переваривал, но с проблемными пленками, где краски уже «поплыли», он творил какую-то ерунду.
Покупать профессиональный сканер за бешеные деньги ради пары коробок со слайдами? Из за угла выглядывала хитро прищурившаяся жаба. А жаба у пенсионера — это зверь крупный и серьезный. Я решил обойтись подручными средствами, но это потребовало много времени. Как известно, время (которое у пенсионера есть) — это деньги (которых у него нет). Основная статься расходов моей самоделки — это старый фотоаппарат Canon PowerShot S5 IS с интернет-барахолки — всего 25 евро. Убитая камера? Да нет, это оказалось просто находка, хотя куплена была именно она совершенно случайно — первое, что попалось за дешево.
Но зачем брать древнюю 8-мегапиксельную камеру, если в любом телефоне под 50 МП и больше? Но не всё коту масленица.
- Режим Super Macro — камера умеет фокусироваться практически в упор, прямо вплотную к объективу. Это позволило мне сделать простую конструкцию держателя для слайдов и забыть про лишнюю засветку.
- Размер имеет значение — у камеры достаточно крупный сенсор. И 8 мегапикселей на этом сенсоре — это не перенаселенная коммуналка, а вполне просторные квартиры. Крупные пиксели ловят больше света и меньше шумят.
- Честный RAW — штатно RAW-формат есть только у серьезных камер. Но с помощью прошивки CHDK (Canon Hack Development Kit) большинство старых камер Canon могут снимать в RAW. А для моей цели это критично.
И, кстати, о мегапикселях. Сканировать пленку — это не котиков фотографировать. У самой пленки есть зерно. Снимать ее матрицей на 30 МП — все равно что рассматривать песок через микроскоп. Толку ноль, а файлы будут гигантские и шумные.
В профессиональных супер-пупер сканерах используется хитрый метод — RGB-сканирование и монохромный сенсор. Пленку во время прохода по очереди подсвечивают красным, зеленым и синим светом, и получается три отдельных снимка. Потом из этих трех кадров собирают один, но с идеальным цветом и бешеным динамическим диапазоном.
А чем я хуже? Только вместо специального сканера у меня будет старая камера и… экран смартфона.

Итак, схема такая: я подсвечиваю слайд чистым красным цветом через экран телефона. Камера в этот момент видит не пеструю картинку, а только яркость в красном канале. Потом зеленый, потом синий. И каждый раз снимает отдельный RAW-кадр. В RAW нет никаких «украшательств» — только чистые данные с матрицы.

Для подсветки я использовал свой андроид смартфон. Но тут есть нюанс: экран должен быть OLED-овским. У таких экранов каждый пиксель светится сам, и цвета получаются чистыми и ничего делать не надо.
Чтобы телефонное «зерно» (те самые пиксели) не отпечаталось на пленке, между экраном и слайдом нужен рассеиватель. Я распотрошил подсветку от дохлого LCD-монитора какого-то навигатора, выкинул лишнее и оставил только нужные пленки, добился того, что свет идет ровным, направленным потоком, выбивая максимальную детализацию и контраст из эмульсии.
Снимать каждый кадр вручную, меняя цвета на телефоне — это можно до второго пришествия провозиться. Поэтому я написал простой скриптик на Python.

На компьютере поднялся веб-сервер, который показывает на телефоне чистый красный, зеленый или синий прямоугольник. Можно регулировать яркость, чтобы точно подобрать экспозицию для каждого канала. А компьютер через USB дергает камеру: щелк — кадр с выключенной подсветкой (для компенсации шумов матрицы), щелк — красный, щелк — зеленый, щелк — синий. Всё четко, никаких нажатий на кнопку, сбивающих положение кадра.
Но самое интересное начинается потом, когда у меня на руках четыре RAW-файла на один кадр. Это еще не фотография, это полуфабрикат.
Тут снова зовем на помощь змеину Питона разбираться с цифрами:
— Лечим битые пиксели — у любой старой матрицы есть точки, которые всегда светятся или всегда черные. Медианный фильтр — наше все — аккуратно замазывает эти дефекты, не портя картинку.
— Гасим темновой ток — даже в полной темноте матрица видит шум. Вычитаем «черный кадр» из цветных — и получаем чистый сигнал.
— Собираем пазл — из красного кадра берем только красные пиксели, из зеленого — зеленые, из синего — синие. На самом деле это не совсем так, и даже совсем не так, но для упрощенного объяснения сойдет. Складываем их в один правильный массив, как в конструкторе. Только потом делаем качественную демозаику.
— Выравниваем баланс — матрица видит зеленый цвет лучше, чем красный. Вводим коэффициенты, чтобы серый оставался серым, а не отливал всеми цветами радуги.
— Растягиваем динамику — полезная информация на слайде занимает лишь часть диапазона. Мы растягиваем её на все 16 бит, чтобы не потерять ни тени в дедушкином пиджаке, ни блики на его лысине.

В итоге на выходе — 16-битный TIFF-файл, который содержит столько информации, сколько не снилось никакому JPEG-у. С этим файлом уже можно работать дальше.
А дальше… дальше в игру вступает Искусственный Интеллект. На моем компьютере стоит ComfyUI относительно недорогая видеокарта RTX-3050 (досталась очень дешево, со сломанным вентилятором — капля масла решила проблему).
Теоретически этого хватает чтобы
- Увеличить разрешение в 2-4 раза, не превращая картинку в мыло.
- Аккуратно убрать зерно, но оставить детали (специальные модели вроде SUPIR делают это).
- Поправить цвета так, как это сделал бы реставратор, понимающий, как выглядела пленка 40 лет назад.
Но с ИИ вышла заминка. Пока идеального рецепта нет. То он нарисует моей жене третий глаз, то сделает лицо абсолютно неузнаваемым, решив, что так будет «красивее». Так что обработка с нейросетями — дело тонкое, и я с ним разбираюсь, чтобы сделать алгоритм, работающий с любым снимком, без настройки под каждый кадр. Но это уже совсем другая история.

А пока я просто смотрю на отсканированные кадры. На себя молодого, на друзей — «иных уж нет, а те уже далече», на свою жену в молодости, которая, как оказалось, была писаной красавицей, завивки и краски ей были без нужды — от природы кудрявая.
Стоило ли ковыряться ради этого? Мне кажется, да.
| +28 |
3844
126
|
В принципе профессионалы HDR так и делают.
Дальше в Фотошоп или Лайтрум правим ББ, уровни, дисторсию объектива и прочее.
Если хочется ИИ, то рекомендую Topaz. Особенно шумы неплохо убирает.
> RGB-сканирование и монохромный сенсор
И используем RGB сенсор
> из красного кадра берем только красные пиксели, из зеленого — зеленые, из синего — синие
Ээээ. То есть вместо монохромного сенсора берём RGB и еще зачем-то делаем три экспозиции, 2/3 информации из которых выкидываем. Не проще ли тупо подсвечивать белым и снимать сразу RGB с сенсора?
Так как главного преимущества оригинального метода — монохромного сенсора без светофильтров мы по любому не имеем.
Хотелось бы повторить, вытянуть максимум из августа 1991 года))
Пожалуйста, можно скрипт на питоне ентот выкачать — ну и, желательно, и модель слайдхолдера, но, это, видимо всё одно под переделку.
И как вы убираете маску с негативов.
А улучшают качество без «творческих дорисовок» и масштабируют многие онлайн сервисы. Стоит ли делать это локально?