Почему электронный затвор изгибает пропеллеры и вертикальные линии

Строки кадра записываются в разное время и изгибают быстрые объекты.

Почему электронный затвор изгибает пропеллеры и вертикальные линии

Как из ровной полосы получается наклонная

Представьте кадр высотой 1000 строк. Сенсор начинает с верхней строки и примерно за 20 мс доходит до нижней. Это 0,020 с, или 1/50 секунды. Пока идёт запись, белая вертикальная полоса движется вправо по изображению со скоростью 1000 пикселей в секунду.

Верх кадра увидит полосу около отметки 500 пикселей. Через 10 мс середина запишет её уже около отметки 510. Ещё через 10 мс низ поймает полосу у отметки 520. Каждая строка честно сохранила то, что находилось перед камерой в её момент, но вместе эти строки образуют наклонную линию.

Сдвиг между верхом и низом в таком простом случае можно оценить без сложной модели:

Δxvизображенияtсчитывания\displaystyle \Delta x\approx v_{\text{изображения}}\,t_{\text{считывания}}
1000 пикс./с×0,020 с=20 пикс.\displaystyle 1000\ \text{пикс./с}\times0{,}020\ \text{с}=20\ \text{пикс.}

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

Этот пример условный, но механизм настоящий. В работе о геометрии rolling shutter Марси Мейнгэст, Кристофер Гайер и Шанкар Састри описывают такой кадр как набор строк, снятых в разные интервалы времени. Движение камеры или сцены нарушает обычную геометрию одной точки съёмки [Meingast et al., 2005].

Выдержка и время считывания отвечают за разные дефекты

В настройках камеры может стоять выдержка 1/1000 с. Это означает, что каждая строка собирает свет около одной тысячной секунды. Число не говорит, сколько времени разделяет запись верхней и нижней строк.

В нашем примере одна строка за 1/1000 с увидит движение примерно на 1 пиксель. Такой локальный смаз почти незаметен. Однако между верхом и низом всё равно останутся 20 мс и 20 пикселей сдвига. Получится довольно резкая, но наклонная полоса.

Если сократить выдержку до 1/8000 с, смаз каждой строки уменьшится примерно до 0,125 пикселя. Наклон сохранится, пока полное считывание по-прежнему занимает 20 мс. Быстрая выдержка способна сделать искажённый пропеллер удивительно чётким. В этом и состоит ловушка.

У камеры работают два таймера:

  • время экспозиции каждой строки определяет, как долго конкретная строка накапливает свет, и влияет на обычный смаз движения;
  • время построчного прохода, или frame readout time, определяет разницу между моментами верхней и нижней строк и влияет на наклон, растяжение и изгиб формы.

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

Поэтому самая короткая доступная выдержка и самая высокая скорость серии не доказывают быстрое считывание. Камера может дать 1/16 000 с каждой строке, но пройти весь сенсор заметно медленнее. Нужен параметр readout time для конкретного режима или сравнительный тест.

Та же граница полезна в ночной съёмке. Калькулятор выдержки для звёзд оценивает, сколько может длиться экспозиция строки до заметного следа звезды. Он не оценивает проход электронного затвора по кадру. Короткий звёздный след и малый rolling shutter являются двумя разными требованиями.

Почему лопасть изгибается, а видео становится «желейным»

Горизонтальное движение наклоняет вертикали. При быстром панорамировании столбы, оконные рамы и края домов смещаются вбок от строки к строке. Прямая линия остаётся прямой внутри каждой узкой полосы, но весь столб заваливается. Поворот камеры в другую сторону меняет направление наклона.

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

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

Дрожание создаёт «желе» в видео. Если камера успевает чуть повернуться туда и обратно за время считывания, соседние строки получают разные наклоны перспективы. В следующем кадре фаза дрожания меняется, поэтому стены будто колышутся. Стабилизация может уменьшить движение камеры, но не ускоряет сенсор и не исправляет быстро движущийся объект.

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

Когда искажение становится заметным

Главная величина здесь не скорость автомобиля на спидометре, а скорость его изображения на сенсоре. Один и тот же автомобиль при 60 км/ч займёт мало пикселей вдали на широком угле и пролетит через половину кадра крупным планом на телеобъективе. Быстрый панорамный поворот способен сильнее исказить неподвижный дом, чем медленный велосипед без движения камеры.

Для грубой оценки можно перейти от метров к пикселям. Допустим, ширина изображения равна 6000 пикселям, а на дистанции автомобиля в кадр помещается 12 м дороги. Машина едет поперёк кадра со скоростью 20 м/с. За 20 мс полного считывания она проходит 0,4 м, то есть 1/30 видимой ширины. Между первой и последней строками сенсора это соответствует 6000 / 30 = 200 пикселям. Если машина занимает четверть высоты кадра, её верх и низ разделяют примерно 5 мс, а ожидаемый сдвиг внутри машины составит около 50 пикселей. Искажение может быть большим, даже если выдержка каждой строки короткая.

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

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

Как уменьшить rolling shutter

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

Глобальный затвор решает геометрическую причину. Global shutter начинает и заканчивает экспозицию всех строк одновременно. Он убирает наклон из-за разницы моментов, но обычный смаз остаётся. Если объект заметно движется за 1/60 с, глобальный сенсор запишет его без изгиба, но не обязан сделать резким.

Ищите быстрый режим считывания, а не рекордную выдержку. У одной камеры фото, разные разрешения видео, кадрирование и режимы качества могут проходить сенсор с разной скоростью. Смотрите измеренный readout time или тест с вертикальными линиями именно для нужного режима. Число кадров в секунду задаёт период между кадрами, но не всегда равно времени сканирования одного кадра.

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

Одной выдержки 1/8000 для пропеллера мало. Нужен более быстрый проход сенсора, механический или глобальный затвор, меньшая угловая скорость либо другой ракурс. Короткая выдержка полезна против смаза, но может лишь подчеркнуть кривую форму.

Программная коррекция умеет выпрямлять часть видео, если оценивает движение камеры по кадрам или гироскопу. В объёмной сцене одной деформации плоскости может не хватить: близкие и дальние предметы искажаются по-разному, а после выпрямления появляются участки, для заполнения которых нужны соседние кадры и оценка глубины. Такие перекрытия отдельно исследованы в методе коррекции трёхмерных сцен [Vasu et al., 2018]. Коррекция способна улучшить материал, но не равноценна правильному захвату важных людей, текста или измеряемой геометрии.

Как проверить камеру дома

Выберите жалюзи, дверной косяк или книжный шкаф с несколькими вертикалями. Поставьте одинаковую выдержку, например 1/2000 с, включите полный электронный затвор и быстро проведите камерой слева направо. Затем повторите движение в обратную сторону. Если вертикали наклоняются в разные стороны, вы увидели временной проход по кадру, а не постоянную дисторсию объектива.

Теперь повторите пару кадров с механическим затвором или электронной первой шторкой, если камера их предлагает. Сравнивайте одинаковый участок и примерно одинаковую скорость движения. Более прямые линии покажут, что в новом режиме разные части кадра экспонируются с меньшим временным разрывом. Если наклон почти одинаков, проверьте, переключила ли камера тип затвора и не меняется ли режим автоматически.

Для вращения достаточно настольного вентилятора за защитной решёткой. Снимите его на короткой выдержке в двух режимах затвора. Лопасти могут быть резкими в обоих кадрах, но только один сохранит правдоподобную форму. Этот опыт за минуту объясняет больше, чем надпись «1/8000» в свойствах файла.

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

Есть что добавить?

Напишите своё мнение, комментарий или предложение.