Удивительно большая часть окружающего мира общается с помощью мигания. Роутеры сообщают о своем состоянии светодиодными сигналами. Бытовая техника мигает кодами ошибок. Дешевые светодиодные лампы пульсируют с невидимой глазу скоростью — пока от них не разболится голова. Вентиляторы, дрели и колеса вращаются со скоростью, которая имеет значение и которую никто не может сосчитать на глаз. Все это — периодические световые сигналы, а камера — это, помимо прочего, устройство, которое фиксирует свет с постоянной частотой. Направьте одно на другое, и вы получите таймер.
Для этого предназначен инструмент Мигание: направьте камеру на мигающий свет, и он измерит частоту мигания, либо на вращающийся объект, и он оценит частоту вращения. Запись отслеживает, как яркость в кадре меняется со временем, находит период и выдает частоту — число, которое можно сохранить, сравнить и отследить в динамике, вместо ритма, который вы пытались сосчитать про себя.
Мерцание, которого вы не видите, но которое чувствует ваша голова
Начнем со сценария, который больше всего удивляет людей. Многие светодиодные лампы и дисплеи снижают яркость с помощью ШИМ — широтно-импульсной модуляции. Свет на самом деле не становится слабее; он полностью включается и выключается сотни раз в секунду, а ваша зрительная система усредняет эти импульсы, делая его «темнее». То есть усредняет их сознательно. Множество людей испытывают усталость глаз, головные боли или смутное чувство дискомфорта от низкочастотной ШИМ, особенно от дешевых ламп, которые мерцают на удвоенной частоте сети, и обычно они так и не узнают причину — мерцание невидимо по своей природе.
Камера не усредняет так, как это делает мозг. При фиксации сенсором мерцание ШИМ проявляется как периодический сигнал яркости, частоту которого инструмент может измерить. Если подозрительная лампочка над вашим столом мерцает с частотой 100 Hz, а та, на которую вы ее заменили, действительно горит ровно, теперь это измеренное различие между двумя объектами в вашем каталоге, а не просто догадка. Измерьте параметры ламп на витрине магазина перед покупкой, и источник головной боли выдаст себя сам.
Мигающие коды: светодиод пытается вам что-то сказать
Вторая группа — более медленные и буквальные сигналы. Роутеры, зарядные устройства, посудомоечные машины, принтеры и промышленное оборудование сообщают о своем состоянии с помощью мигания индикаторов, а в руководствах пользователя указываются временные интервалы: «медленное мигание (один раз в секунду) — подключение; быстрое мигание (два раза в секунду) — ошибка». Люди плохо отличают 1 Hz от 1.5 Hz, особенно когда злятся на роутер. Камера справляется с этим отлично. Направьте, запишите, считайте частоту, найдите значение. И поскольку измерение сохраняется в привязке к объекту — этому роутеру — частота мигания во время сбоя в прошлом месяце все еще будет доступна, когда тот же индикатор начнет мигать снова.
Вращение: с какой скоростью на самом деле вращается этот вентилятор?
Вращающийся объект тоже модулирует свет. Лопасти вентилятора проносятся мимо, и отраженная яркость в любой точке возрастает и падает один раз при прохождении каждой лопасти; периодичность в кадрах кодирует вращение. Инструмент «Мигание» использует тот же анализ во временной области для оценки частоты вращения детали: потолочного вентилятора на средней скорости, вентилятора в корпусе компьютера, который, как вы подозреваете, выходит из строя, или двигателя в мастерской, паспортную скорость которого вы хотите проверить на адекватность. Неисправный вентилятор часто замедляется перед тем, как остановиться — два измерения с интервалом в месяц, сохраненные для одного и того же объекта, помогут заметить эту тенденцию.
Честное ограничение: алиасинг
Теперь о важном нюансе, поскольку он вполне реален и определяет всю конструкцию прибора. Камера фиксирует свет с частотой кадров — обычно 30 или 60 кадров в секунду. Теория дискретизации прямо говорит о том, что это дает: сигнал можно измерить напрямую только в том случае, если он меняется медленнее, чем половина частоты дискретизации. Если мигание происходит быстрее, камера увидит не «слишком высокую скорость для измерения», а ложный, более медленный ритм. Это алиасинг — тот же эффект, из-за которого в старых фильмах колеса телег вращаются назад, а вентилятор под люминесцентной лампой кажется неподвижным.
Поэтому инструмент честно предупреждает о пределах своих возможностей. Коды мигания индикаторов частотой в несколько герц: полностью укладываются. Медленная ШИМ и мерцание, связанное с сетью питания: достижимы при внимательном отношении к соотношению между частотой мерцания и частотой кадров. Сверло на 30,000 RPM — 500 оборотов в секунду: далеко за пределами того, что датчик с частотой 60 fps может измерить напрямую. Частота кадров — это линейка, и вы не можете измерить то, что находится за ее концом.
Принцип проектирования в действии: инструмент измерения должен знать — и сообщать, — где заканчиваются его физические возможности. Частота кадров камеры — это жесткий предел дискретизации, поэтому инструмент «Мигание» определяет только те частоты, которые он может измерить однозначно, вместо того чтобы выдавать искаженное значение за истинное. Уверенное ложное показание хуже, чем честное сообщение «вне диапазона»; зона алиасинга не скрывается, она передается другому методу анализа.
За пределами частоты кадров: эксперимент «Стробоскоп»
Что находится по ту сторону этого предела? Именно здесь алиасинг перестает быть просто помехой, ведь существует классический трюк, который превращает его в рабочий инструмент: стробоскоп. Если осветить вращающийся объект светом, мигающим точно с частотой его вращения, объект покажется застывшим — каждая вспышка застает его в одном и того же положении. Машиностроители уже целый век используют специализированные стробоскопы для определения RPM таким способом.
Фонарик телефона умеет мигать. Поэтому исследовательские сборки Sentio включают инструмент Стробоскоп, который изменяет частоту вспышек фонарика в некотором диапазоне и ищет стробоскопический эффект застывания, оценивая частоту вращающегося или вибрирующего объекта по тому, в какой точке происходит это застывание. Будем честны относительно его статуса: это эксперимент исследовательской сборки, а не готовая функция для конечных пользователей. Аппаратное обеспечение фонарика сильно различается по скорости и стабильности импульсов, и этот подход требует проверки на различных устройствах, прежде чем можно будет гарантировать его работу на потребительском уровне. Но это интеллектуально изящный аналог инструмента «Мигание»: то самое явление, которое ограничивает пассивное измерение времени, при управляемом использовании позволяет преодолеть этот лимит. Как и любой анализ данных на платформе, вычисления выполняются на самом устройстве, а исследовательские записи впоследствии можно сопоставить с эталонами с известным RPM — а это именно те данные, которые необходимы для проверки.
В каталоге, а не в памяти
Общая черта всех здешних Инструментов: суть не в разовом замере, а в замере в контексте. Частота мигания обретает смысл рядом с таблицей из инструкции; частота мерцания — при сравнении разных лампочек; RPM вентилятора — при сопоставлении с показателем прошлого месяца. Каждое Измерение сохраняется под соответствующим Объектом в каталоге, и ему можно присвоить подтвержденную метку, как только станет известен результат — та самая лампочка, от которой прошла головная боль, или вентилятор, который всё-таки сгорел. Мимолетные взгляды превращаются в записи, а записи — в сравнения, ради которых всё и затевалось.
У камеры есть и более спокойные режимы — измерение цвета и окружающего освещения вместо фиксации их частоты во времени; они описаны в статье Цвет и свет. А чтобы получить полное представление о том, что могут измерять датчики телефона, от микрофонов до акселерометров, начните с обзора Инструментов.