Дивовижно велика частина навколишнього світу спілкується миготінням. Маршрутизатори повідомляють про свій стан світлодіодними індикаторами. Побутова техніка блимає кодами помилок. Дешеві світлодіодні лампи пульсують із невидимою оку швидкістю — аж поки від них не розболиться голова. Вентилятори, дрилі та колеса обертаються із частотою, яка має значення і яку ніхто не може порахувати на око. Усе це — періодичні світлові сигнали, а камера, крім усього іншого, є пристроєм, який реєструє світло зі сталою частотою. Наведіть одне на інше — і ви отримаєте таймер.

Це інструмент Blinking: спрямуйте камеру на миготливе світло, і він виміряє частоту миготіння, або на об'єкт, що обертається, і він оцінить частоту обертання. Фіксація відстежує, як яскравість у кадрі змінюється з часом, знаходить період і видає частоту — число, яке можна зберегти, порівняти та проаналізувати в динаміці, замість ритму, який ви намагалися рахувати про себе.

Мерехтіння, якого ви не бачите, але яке відчуває ваша голова

Почнімо зі сценарію використання, який найбільше дивує людей. Багато світлодіодних ламп і дисплеїв зменшують яскравість за допомогою PWM (ШІМ — широтно-імпульсної модуляції). Світло насправді не стає тьмянішим; воно повністю вмикається та вимикається сотні разів на секунду, а ваша зорова система усереднює ці імпульси, сприймаючи їх як «тьмяніші». Усереднює їх свідомо, тобто для нашого сприйняття. Багато людей відчувають втому очей, головний біль або незрозумілий дискомфорт від низькочастотної ШІМ, особливо від дешевих ламп, які мерехтять на подвійній частоті електромережі, і зазвичай вони так і не дізнаються чому — це мерехтіння навмисно зроблене невидимим.

Камера не усереднює так, як це робить мозок. Мерехтіння ШІМ, зафіксоване сенсором, виглядає як періодичний сигнал яскравості, частоту якого інструмент може виміряти. Якщо підозріла лампа над вашим столом мерехтить із частотою 100 Hz, а та, на яку ви її замінили, справді світить рівно, тепер це виміряна різниця між двома об'єктами у вашому каталозі, а не просто здогадка. Виміряйте лампи на вітрині магазину перед покупкою, і генератор головного болю сам себе викриє.

Коди миготіння: світлодіод намагається вам щось сказати

Друга група сигналів повільніша та більш буквальна. Маршрутизатори, зарядні пристрої, посудомийні машини, принтери та промислове обладнання повідомляють про свій стан за допомогою шаблонів миготіння індикаторів, а в інструкціях зазначається точний час: «повільне миготіння (раз на секунду) — підключення; швидке миготіння (двічі на секунду) — помилка». Люди погано відрізняють 1 Hz від 1.5 Hz, особливо коли роздратовані через роутер. Камера ж робить це легко. Наведіть, зафіксуйте, зчитайте частоту, знайдіть значення. І оскільки вимірювання зберігається під відповідним об'єктом — цим маршрутизатором — частота миготіння під час збою минулого місяця все ще буде доступна, коли той самий індикатор знову почне блимати.

Обертання: з якою швидкістю насправді обертається цей вентилятор?

Об'єкт, що обертається, також модулює світло. Лопаті вентилятора пролітають повз, і відбита яскравість у будь-якій точці зростає та падає один раз на кожну лопать; періодичність у кадрах кодує обертання. Інструмент Blinking використовує такий самий аналіз у часовій області, щоб оцінити частоту обертання деталі, що крутиться: стельового вентилятора на «середній» швидкості, вентилятора корпусу ПК, який, як ви підозрюєте, виходить із ладу, або двигуна в майстерні, паспортну швидкість якого ви хочете перевірити. Справний вентилятор, що ламається, часто сповільнюється перед зупинкою — два вимірювання з інтервалом у місяць, збережені під тим самим об'єктом, допоможуть помітити цю тенденцію.

Чесне обмеження: аліасинг

Тепер про застереження, адже воно цілком реальне і визначає всю концепцію розробки. Камера реєструє світло з власною частотою кадрів — зазвичай 30 або 60 кадрів на секунду. Теорія дискретизації прямо говорить про можливості такого методу: виміряти час сигналу безпосередньо можна лише тоді, коли він змінюється повільніше, ніж половина частоти дискретизації. Спробуйте блимати швидше, і камера покаже не «занадто швидко для вимірювання», а хибний, повільніший ритм. Це і є аліасинг, той самий ефект, через який у старих фільмах колеса возів обертаються у зворотний бік, а вентилятор під люмінесцентним світлом здається нерухомим.

Тож інструмент чесно позначає свій робочий діапазон. Індикаторні коди миготіння на частоті кілька герц — цілком у межах досяжності. Повільна ШІМ та мережеве мерехтіння — доступні, якщо уважно поставитися до взаємодії між частотою мерехтіння та частотою кадрів. Свердло дриля на швидкості 30,000 RPM — 500 обертів на секунду — це далеко за межами того, що сенсор із частотою 60 fps може виміряти безпосередньо. Частота кадрів — це лінійка, і ви не можете виміряти щось за її межами.

Правило проєктування в дії: інструмент вимірювання повинен знати — і повідомляти, — де закінчуються можливості його фізики. Частота кадрів камери є жорсткою межею дискретизації, тому інструмент Blinking показує лише ті частоти, які він може визначити однозначно, замість того, щоб видавати хибне значення через аліасинг за дійсне. Впевнене хибне показання гірше, ніж чесне «поза діапазоном»; зона аліасингу не приховується, вона просто передається іншому методу вимірювання.

За межами частоти кадрів: експеримент зі стробоскопом

Що лежить по той бік цього обмеження? Саме тут аліасинг перестає бути просто завадою, адже існує класичний трюк, який перетворює його на інструмент: стробоскоп. Освітіть об'єкт, що обертається, світлом, яке спалахує точно з частотою його обертання, і об'єкт здаватиметься нерухомим — кожен спалах заставатиме його в одному й тому самому положенні. Машинобудівники вже століття використовують спеціальні стробоскопи, щоб вимірювати RPM цим способом.

Ліхтарик телефону може спалахувати. Тож дослідницькі версії Sentio містять інструмент Strobe, який плавно змінює частоту спалахів ліхтарика та шукає стробоскопічне «застигання», оцінюючи частоту об'єкта, що обертається або вібрує, за моментом, коли це застигання відбувається. Якщо говорити відверто про його статус: це експеримент із дослідницької збірки, а не готова функція для кінцевих користувачів. Апаратне забезпечення ліхтариків у різних телефонах суттєво відрізняється за швидкістю та стабільністю імпульсів, і цей підхід потребує перевірки на різних пристроях, перш ніж його можна буде пропонувати як споживчу функцію. Проте це інтелектуально витончена противага інструменту Blinking: те саме явище, яке обмежує пасивне вимірювання часу, при свідомому застосуванні допомагає подолати це обмеження. Як і для кожної фіксації на платформі, аналіз виконується на самому пристрої, а дослідницькі записи згодом можна порівняти з еталонними значеннями відомих RPM, що є саме тими даними, які необхідні для перевірки.

Зафіксовано, а не просто запам'ятовано

Спільна риса кожного тутешнього інструмента: суть не в поодинокому вимірюванні, а у вимірюванні в контексті. Частота блимання має значення, якщо порівняти її з таблицею в інструкції; частота мерехтіння має значення при порівнянні різних лампочок; RPM вентилятора має значення порівняно з показником за минулий місяць. Кожен запис зберігається під певним об'єктом у каталозі й може отримати позначку фактичного результату, коли ви дізнаєтеся фінал — лампочка, яка позбавила головного болю, чи вентилятор, який таки зламався. Швидкі погляди перетворюються на записи, а записи — на порівняння, які й були початковою метою.

Камера має і спокійніші режими — наприклад, для вимірювання кольору та навколишнього освітлення замість фіксації часу, про що йдеться у статті Колір і світло. А для повної картини того, що можуть вимірювати датчики телефону (від мікрофонів до акселерометрів), почніть з огляду інструментів.