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

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

Идея хороша, но пример совсем плох. Может там вообще в видео редактор поставили фиксированный кадр и изредка изредка «тягали»? Покажите работу в динамике: с людьми, поездом, птицами. А то вдруг их тоже «стабилизирует»?
Работает честно — во время тряски движущиеся объекты сопровождаются детектором движения. В данном примере тоже все честно — я сам лично штатив с камерой тряс :).
во время тряски движущиеся объекты сопровождаются детектором движения

Ну так покажите!
Добавил пример с сопровождением объектов. Не понимаю, почему вы мне не верите — алгоритм реализован уже пять лет назад. И 4 года как минимум присутствует в готовых продуктах.
Очень даже верю, но полноценно картинка сложилась только после последнего видео.
Спасибо!
Почему бы не использовать уже существующие алгоритмы матчинга? берем motion estimation или тот же SURF, получаем сматченные точки, потом аппроксимируем аффинное или перспективное преобразование (с RANSAC для стабильности), применяем к картинке, вуаля. Я использовал ME + перспективное + RANSAC для более сложной задачи, все ок. Если нужно побыстрее — меняем SURF на FAST и получаем матчинг за единицы миллисекунд!
рекомендую к просмотру
www.youtube.com/watch?v=fYUDfD2nc0A
www.youtube.com/watch?v=QdXugkXBTbc
Ну так, а у меня и 1.5 миллисекунды, из которых поиск корреляционного максимума — 0.3 миллисекунды, а остальное компенсация ARGB изображения методом билинейной интерполяции.
Зато по точкам можно будет компенсировать поворот + не только стационарную съемку. При этом укладываясь в realtime (25 FPS)
Предполагаю, что судя по описанному применению решения (системы видеонаблюдения) проблема тут не только в том что нужно укладываться в реалтайм, а в том что нужно укладываться в реалтайм на 32 одновременно обрабатываемых сервером каналах. Т.е. нужно выдавать 25 х 32 = 800 FPS на имеющихся мощностях.
Решения требующие 1 ядро на обработку одной камеры в системах видеонаблюдения будут неконкурентоспособны.
Какая именно «метрика» корреляционной функции у вас применялась и каков размер «центральной части»? Максимальное смещение в роликах, похоже, не очень-то большое по отношению к размеру кадра?
В качестве корреляционной функции использовалась сумма абсолютных разностей точек изображений. Максимальное смещение — где-то четверть от высоты изображения.
Следовательно, центральная часть, которая сравнивается, примерно вполовину кадра?
Зависит от максимально возможного смещения, которое компенсируется (выступает в качестве параметра алгоритма). Для максимально возможного значения сравнивается действительно где-то половина изображения, но по умолчанию процентов 75.
Мне кажется, ваши последовательные масштабные преобразования то же самое, что производить градиентный спуск с переменным шагом. Интересное решение.

Если вычислять корреляцию не в 9 точках на каждом шаге, а в 5 (крестиком), то количество вычислений в вашем квадратике уменьшится с 36 до 25, что существенно быстрее
Градиентный спуск с переменным шагом надо делать над исходным изображением, а не над уменьшенным (правда это частично компенсируется необходимостью строить многомасштабные изображения). У многомасштабного изображения есть другой плюс — в процессе их построения происходит усреднение и сглаживание, что уменьшает вероятность попасть в ложный локальный максимум.
Да, это понятно
Удивился, когда не увидел в статье слова «БПФ»/«FFT».
Второе видео где вода течет, та часть которая с водой ровненько так встала в половину кадра с «оригиналом», ну а на половинке где стабилизированное изображение, воды с рябью нет. Крайне удобно выбран ракурс. Можете прогнать тот же алгоритм на том же видео, но теперь уже стабилизировать ту часть где вода. Хочется посмотреть что он сделает с рябью.
Чуда не будет, о чем я честно указал в статье (см. раздел Недостатки предложенного подхода).
1) Стабилизация изображения в текущей реализации возможна только для стационарных камер.
— если опорный кадр постоянно сдвигать на усредненное смещение, то высокочастотные дрожания компенсируются, а сканирование (или дрейф опорного кадра) будет отслеживаться, примерно так, правда, с некоторым запаздыванием, зависящим от степени усреднения
Прошелся по своим старым комментариям, заметил что Вы и в самом деле написали эту статью. =)

Спасибо Вам огромное.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.