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




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


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

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


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

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


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

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


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

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


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

