Я работал над алгоритмом, который может обнаруживать вызывающие приступы стробоскопы в видео.
В настоящее время мой код возвращает практически каждый кадр как способный вызвать захват (мигает 3 Гц).
Мой код вычисляет относительную яркость каждого пикселя и видит, сколько раз яркость увеличивается, затем уменьшается и т. Д., Или уменьшается, а затем и т. Д. Более чем на 10% в течение любой данной секунды.
Есть ли способ сделать это без сравнения каждого отдельного пикселя в течение секунды друг от друга, и это только возвращает правильные кадры.
Пример того, что я пытаюсь подражать: https://trace.umd.edu/peat
Общий подход к решению этого типа проблем состоит в том, чтобы преобразовать кадры в градации серого, а затем построить куб, содержащий кадры с интервалом времени от 1 до 3 секунд. Из этого куба вы можете извлекать изменяющиеся во времени характеристики либо отдельных пикселей (шум), либо блоков (рекомендуется). Полученные 1D кривые можно сначала наблюдать вручную, чтобы увидеть, действительно ли они показывают искомое изменение 3 Гц (иногда эти изменения либо теряются, либо искажаются из-за настроек автоэкспозиции камеры). Если вы видите это, они должны быть в состоянии использовать БПФ для его автоматического обнаружения и обнаружения.
Преобразовать изображение в оттенки серого. Разбейте изображение на блоки, возможно, 16×16 или 64×64 или больше (поэкспериментируйте, чтобы увидеть, что работает). Возьмите среднюю яркость каждого блока в течение минимум 2/3 секунд. Создайте волну яркости с течением времени. Сделайте fft на этой волне и найдите минимальный энергетический порог около 3 Гц.