Я люблю фотографию. Есть что‑то волнующее в наблюдении за изображением через объектив, выстраивании кадра для получения композиции и работы над получившимся фото. Я менял зеркальные и беззеркальные камеры, пока, наконец, не влюбился в Canon AE-1P — аналоговую зеркалку, с которой мой отец путешествовал по миру, пока, наконец, не обосновался в Штатах.

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

Долгие годы мой процесс работы выглядел так: я заправляю плёнку и делаю фотографии, отправляю плёнку в лабораторию и жду проявки, забираю плёнку, разрезаю негативы на полосы, вставляю их в держатель, сканирую негатив каждого кадра специальным сканером, открываю каждый файл в Darktable, инвертирую вручную, вношу правки, а затем решаю, где хранить и/или публиковать экспортированное изображение. Поначалу этот процесс казался мне восхитительным, но чем больше я снимал плёнок, тем больше времени уходило на обработку всех 36 её кадров.

A desk lit by a lamp, with a strip of negatives hanging from it, VueScan open on a monitor showing an orange negative, and film holders, a blower and a brush next to a blue Plustek scanner.

В среднем на сканирование плёнки из 36 кадров и внесение изменений мне требовалось примерно четыре часа. При работе с плёнкой нужно внимание, особенно чтобы избежать пыли и царапин на готовом снимке. Разумеется, этот процесс достаточно быстро стал казаться утомительным. Я тратил больше времени на обработку фотографий, чем на их съёмку, поэтому начал искать способы сэкономить время, облегчив операции в моей личной цифровой лаборатории.

Даём Claude полномочия уничтожать технику

Моя первая гипотеза заключалась в том, что можно сделать этот цикл полностью автономным. Пусть Claude управляет сканером через SANE (опенсорсный стек драйверов сканера) и занимается всем процессом сканирования, цветовых преобразований и редактуры.

При первом прогоне Claude использовал SANE с инвертированными направлениями X/Y, едва не поломав зубчатый механизм внутри сканера. Из‑за этого мне, к сожалению, пришлось тратить время на выполнение срочной хирургической операции для экономии $200 на покупку нового.

Чат: пустые белые сканы

20 сентября 2026 года

  1. Shan, 16:54

    Плёнка точно внутри, возможно, дело в выбранных тобой параметрах сканирования

  2. Claude, 16:56

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

  3. Shan, 17:01

    Я попробовал vuescan, но датчик или каретка не движутся; похоже, ты что‑то сделал не так

  4. Shan, 17:04

    Ситуация точно плохая. можешь проверять сканер, пока я не скажу, что он движется? я слышу какие‑то щелчки, возможно, он движется в обратном направлении

  5. Claude, 17:05

    Я выяснил причину щелчков: причина в моих сканах. … В конце каждого скана бэкенд genesys отправляет каретку назад слепым обратным движением: 7010 шагов с 900 dpi, а затем дополнительно с 3600. Он предполагает, что при сканировании каретка двигалась вперёд. … Поэтому каждый скан заканчивался тем, что двигатель перемещал каретку, которая уже была припаркована в точке своего останова. Именно эти щелчки вы слышали, и ваше мнение о направлении было правильным. Я выполнил семь сканов, то есть это произошло семь раз.

The Plustek scanner with its case removed, showing the carriage, a threaded rod, a spring and the motor gear.
Хирургическая операция: засовываем вал и шестерёнку на место, куда они вставляться не хотели.

В результате я стал работать с тем, что уже хорошо работало. Лицензию на VueScan я купил уже давно; эта программа была лучше всего совместима с моим сканером, а у меня не имелось робота‑манипулятора, автоматизирующего физическую вставку и сканирование плёнок, поэтому я просто буду пользоваться программой сам и искать решение, которое сможет выполнять операции сразу после этого.

Студия

К счастью, неудачная попытка заставила меня посмотреть на проблему под другим углом. Я работаю с VueScan, как делал это всегда, поэтому мне нужно каким‑то образом оптимизировать обработку сканов. Проведя несколько тестов с данными изображений, я создал целый пакет инструментов, помогающих мне в выполнении процесса.

Преобразование негативов

В основном для преобразования негативов в позитивы требуется лишь код. Инверсия реализована в виде небольшой программы на numpy, которая работает с оптической плотностью плёнки и измеряет цветовые характеристики всей плёнки, прежде чем корректировать каждый кадр с учётом ограничений, задаваемых его негативом. Благодаря этому 36 кадров выглядят однородно на всей плёнке, а, например, закат не подвергается радикальной цветовой коррекции. Обычно я мучился с этим даже при ручной обработке. Мой агент определил, что пустой начальный слот плёнки будет хорошим эталоном весов цветовой коррекции относительно остальных кадров. Прежде чем делать что-либо ещё, я испытал систему на старой фотоплёнке, чтобы решить, стоит ли продолжать работу.

Чат: тест преобразования

21 сентября 2026 года

  1. Shan, 10:35

    Запусти тест преобразования для film/valentines2026

  2. Claude, 10:40

    Тест преобразования пройдет для 28 из 29 кадров. Самодельное преобразование работает достаточно хорошо, чтобы развивать его дальше, и для этого не нужен darktable… Мои снимки получаются светлее и с более нейтральной цветопередачей, тогда как ваши экспортированные изображения уходят в бирюзовые оттенки и выглядят темнее (небо над отелем Hotel del Coronado, портрет на пляже, снимок сада). Но здесь дело не только в правильности цветопередачи, но и во вкусе, так что судить тебе.

  3. Shan, 10:40

    мне нравится выбранное тобой направление. запусти тест распознавания пыли

Frame 2 as scanned, an orange-masked negative of the portrait with the giant paper flower.
Образцы негативов и преобразованные позитивы (эти царапины — характерная особенность типа плёнки)
Образцы негативов и преобразованные позитивы (эти царапины — характерная особенность типа плёнки)

Удаление пыли и редактирование

Модели приходят на помощь, когда исчерпываются возможности кода. Пыль обнаруживается при анализе изображения негатива и помечается на удаление. Это сложнее, чем кажется: на кадре с пляжем первый детектор пометил как пыль примерно две тысячи солнечных бликов на воде. Решение заключалось в том, чтобы учитывать контекст и применять обработку только там, где окружающая область достаточно однородна. Обнаруженные пятна заполняются с помощью LaMa (модели для восстановления изображений, или inpainting). При этом в восстановленный участок добавляются детали с соседних участков плёнки, чтобы он не выглядел размазанным. Это похоже на инструмент «Восстанавливающая кисть» в Photoshop.

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

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

The frame review screen in studio: a frozen lake under a pale sky, covered in circles marking dust and scratches, with sliders and dust counts in a panel on the left.
Обзор кадра. Зелёные окружности — это автоматически устранённая пыль, оранжевые оставлены для ручной проверки.

Метаданные

Индексирование данных об аналоговой фотоплёнке может занимать много времени, особенно если приходится самостоятельно работать с несколькими отдельными инструментами. Это была одна из тех задач, о которых думаешь: «А почему бы и нет?» Теперь, раз я использую технологии, я могу пойти дальше и добавить возможность распознавать фотографии, чтобы впоследствии их было проще искать.

Поэтому при поступлении новых сканов в Ollama локально запускается Qwen3-VL, анализирует каждый готовый кадр и примерно за пять секунд составляет для него набор тегов. В сочетании с данными о камере, объективе, дате съёмки и типе фотоплёнки это позволяет создать полноценный архив фотографий, в котором легко искать нужные снимки.

The Gallery tab of the review panel beside a portrait of a woman in front of a Green House Motel sign, with drafted tags: woman, sign, motel, plants, flowers, greenhouse.
Теги, сгенерированные Qwen3-VL за три секунды, которые фиксируются после того, как я выберу кадр.

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

The studio app with valentines2026 selected in the sidebar's list of roll folders: a roll header with Revolog Rasp 200, the Canon AE-1P and notes about the Chicago Botanic Garden's orchid show, and a contact sheet of all 28 converted frames marked live or check.

Галерея

После того, как я разобрался с конвейером, появился вопрос, где хранить все изображения.

Обычно они лежат на моём 4-терабайтном HDD, который постоянно подключен к моей машине. Но теперь, когда я избавился от необходимости создания корпоративного ПО для личного пользования, мне захотелось изучить возможности хранения в world wide web.

Процесс публикации

У меня есть аккаунт Cloudflare, который время от времени активируется благодаря посетителям, просматривающим CDN-контент с моего личного сайта. Разве есть способ лучше, чтобы выжать максимум из бесплатного тарифа, кроме загрузки всех фотографий в собственный бакет R2? Поэтому я расширил студию, добавив возможность публикации.

The publish dialog for the valentines2026 roll over the studio: label Valentines 2026, stock Revolog Rasp 200, date 2026-02, a private-link checkbox, and all 23 picked photos numbered in the order the gallery shows them.

Показ фотографий по плёнкам

Простая сетка миниатюр показалась мне слишком непрезентабельной. Я продолжал сканировать плёнки, вспоминая о том, как раньше возил плёнки на проявку. Когда я увидел, как лаборанты разматывают саму фотоплёнку и заправляют её в процессор для проявки по процессу C-41, мне пришла в голову простая идея — воссоздать саму фотоплёнку в цифровом виде.

Я понимаю, что это не самый реалистичный способ воссоздать процесс, но идея оказалась очень увлекательной, и её хотелось развивать дальше. В итоге у меня получился суконный стол, на котором лежат смоделированные для Three.js кассеты с фотоплёнкой с настоящими изображениями этикеток и случайными потёртостями. Берёшь кассету, вытягиваешь из неё плёнку, и на ней появляются кадры. Затем плёнка просто падает на стол.

Мой уголок Интернета

Суммарно этот проект занял 11 дней и потребовал 64 коммита. В галерее сейчас есть 22 плёнки и 314 фотографий, первые из которых были сняты ещё в 2020 году.

Я продолжу добавлять фотографии и сливать деньги на плёнки и проявку. Это мой уголок Интернета, в котором могут отдохнуть посетители.

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

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

Shan in a wide-brimmed green hat and a white shirt, looking down at a black Canon film camera held in both hands, on a tree-lined road with a van and a stall of king coconuts behind him.

Комментарии (2)


  1. woodiron
    28.10.2026 12:39

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


    1. Kot_na_klaviature
      28.10.2026 12:39

      Перекрученная резкость, яркость и контрастность не признак качества. Пленка даёт особую пластику и атмосферу. Это как фильмы, снятые на пленку - совершенно другое впечатление, чем от цифры.