Как стать автором
Обновить

Комментарии 11

Так ведь наблюдать одновременно за всем не получится, человек не может фокусироваться на 32 изображениях одновременно.
Для каждой задачи надо подходить индивидуально.
Для видео с камер оставить только отрезки с движением (довольно тривиально) или с движением на неподвижных участках (немного тяжелее). Далее распознавание образов. Определить грузовик уровень студенческой работы.
В остальных задачах надо делить не на фиксированные отрезки, а на моменты смены сцены (что само по себе не тривиально, но в контексте проблемы можно ограничиться сменой ракурса). Из этих отрезков можно нарезать случайные кадры (или не случайные — зависит от задачи) и уже их анализировать. В общем случае использовать нейросети, для чего то конкретного можно и ручками подобрать параметры (цвета, размеры объектов, плавность смены кадры, музыка).
Распознавать сцены тот же нетфликс вроде уже умеет.
Вопрос скорее для чего это вам нужно. Зная прикладной сценарий можно придумать гораздо более простые решения (как с камерами например).

Спасибо за комментарий!
Так ведь наблюдать одновременно за всем не получится, человек не может фокусироваться на 32 изображениях одновременно.

Это верно. Собственно поэтому предложен метод — деление на блоки. Там видео отрезки получаются более однородными. С другой стороны, в качестве примера, могу привести такой вариант. Вы в командировке, дома установлены камеры наблюдения, они пишут видео локально. Вот Вы вернулись и вроде записи все есть, а смотреть их по времени за неделю — кто будет? С помощью данной программы можете сильно ускорить процесс, т.к. если новый персонаж появился в кадре, то ему уделяется пристальное внимание, можно кликнув по ячейке посмотреть исходное видео в полный рост и принять окончательное решение.
В остальных задачах надо делить не на фиксированные отрезки, а на моменты смены сцены (что само по себе не тривиально, но в контексте проблемы можно ограничиться сменой ракурса).

В общем да, пожалуй. Поспорю лишь насчёт тривиальности. В другом своём приложении я для деления на сцены использовал изменение цветовых составляющих. При смене сцен, обычно, усреднённые значения R,G,B сильно меняют свои значения, а внутри сцены это происходит более плавно. Кстати, помню ещё в ранних версиях Pinnacle Studio (использую этот видеоредактор в течение долгих лет) была функция разбивки на сцены и работала она хорошо.

Для задачи мониторинга с камеры наблюдения (особенно дома) можно попробовать разбить хранилище на две части. В первую как обычно пишется все циклически, но цикл линейно зависит от объема хранилища, т.к. пишется все подряд. Во вторую часть прямо на лету (или параллельно чуть с запозданием) копируются только фрагменты с движением. Там продолжительность хранения зависит от "насыщенности жизни" наблюдаемой области. Таким образом вернувшись через неделю имеем час движухи, причем уже порезанной на серии. И неделю (или сколько влезло) полного видео. Полное желательно тоже оставлять, т.к. не всегда автоматика отследит движение (условно упавшую вазу поймает, а мышку ее спихнувшую уже за движение не считает).

Как сказать… Если в доме кто-то живёт, то движуха может быть всё время, пока люди не спят. Даже если релаксируют сидя перед телеком, то на самом телеке картинка меняется. У самого камеры Xiaomi стоят, они это фиксируют. Но, в общем, я согласен, подход правильный.
Похоже на инструмент поиска в фильме «крамольных» сцен и присвоения рейтинга — фильмов много, цензоров мало, надо выкручиваться)
Как вариант, но не только.
похоже на инструмент которым киношники отрезауют «ненужные» куски из фильмов, чтобы сократить общую продолжительность и впихнуть его в таймслот
ну ладно
это конечно все неплохо
но где аналогичная реализация на ffmpeg (openCV)?
как выбираются кадры — просто каждые 7 (n) секунд дергается или можно настроить на изменение содержимого (сцена изменилась)?
в кодеках же вроде тоже идет опорный кадр а следующие — это изменение относительно опорного кадра что позволяет сжимать с высоким коэффициентом
А это и написано на OpenCV (конкретно там используется библиотека ffmpeg). Плюс для ускорения процесса всё завёрнуто в интеловский TBB. Для рипов под 1.5 ГБ и табличке, скажем 8x8 на моём стареньком (пятилетней давности) четырёхядерном Core i5 3.6 ГГц табличное видео идёт с частотой от 20 до 40 FPS. Если скачаете ZIP-архив с приложением, всё эти DLL отчётливо видны.
как выбираются кадры — просто каждые 7 (n) секунд дергается или можно настроить на изменение содержимого (сцена изменилась)?

Это Вы, видимо, о блоках. Их количество указывается в настройках. Программа сама искать сцены и разделять видео на них не умеет. Это делает пользователь ручками. Но за счёт табличного представления можно в десятки раз ускорить процесс.

Не очень понятно, блоки режутся по смене сцены, или просто равномерные куски одинаковой длительности? Первое гораздо удобнее.

Блоки — это равномерные куски. Согласен, что первое удобнее, но этого нет. Задачи бывают разные, иногда пишется просто видео с одной неподвижно установленной камеры, там разбиение на сцены очень условно (первая сцена — вот топает кучка левых людей, а вот вторая сцена — прохожу я с друзьями).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории