Цифровая стабилизация изображения со стационарных камер — корреляционный подход Страница 1 из 2

Введение

Данную статью я решил написать после прочтения статьи «Массивно-параллельная стабилизация изображения», в которой описывается алгоритм для стабилизации изображения с поворотных камер. Дело в том, что в свое время мной был реализован алгоритм для стабилизации изображения со стационарных камер, который используется в IP-видеосервере MagicBox и некоторых других продуктах компании Синезис, в которой я работаю по настоящее время. Алгоритм получился достаточно удачным по своим скоростным характеристикам. В частности, в нем очень эффективно реализован алгоритм поиска смещения текущего изображения относительно фона. Эта эффективность позволила задействовать основные его элементы (конечно с некоторыми модификациями) для сопровождения объектов, а также для проверки их на неподвижность.

Алгоритм стабилизации включает в себя следующие основные элементы: обнаружение смещения для текущего кадра, компенсация данного смещения и периодическое обновление фона, относительно которого происходит стабилизация. Ниже я подробно распишу каждый из них.





Рис. 1 Стабилизация изображения иногда очень полезна.


Обнаружение смещения текущего кадра

Базовый подход, на котором основывается корреляционный подход по определению смещения, можно кратко описать так:
1) Берется центральная часть фонового изображения. Величина отступа определяется максимальным возможным смещением, которое мы хотим определить. Центральная часть не должна быть слишком маленькой, иначе у корреляционной функции (смотри ниже) не будет хватать данных для стабильной работы.
2) На текущем кадре выбирается часть такого же размера, но смещенная относительно центра картинки.
3) Для каждого смещения рассчитывается некоторая метрика, описывающая корреляцию центральной части фона и текущего изображения. Для этого может быть использована, например, сумма квадратов разности для каждой точки этих двух изображений или, например, сумма абсолютной разности для каждой точки.
4) Смещение, для которого корреляция максимальна (меньше сумма квадратичных разностей или сумма абсолютных разностей), и будет искомым смещением.




Рис. 2 Смещение текущего кадра относительно фона.

Естественно, что если такой подход применить в лоб, то скорость работы алгоритма будет катастрофически низкой, даже не смотря на то, что скорость работы корреляционной функций может быть очень высока. Это не удивительно, так как нам нужно будет перебирать все варианты возможного смещения изображений относительно друг друга (сложность алгоритма можно оценить как O(n^2), где n – число точек изображения).

Первой оптимизацией является использование не полного перебора всех возможных вариантов, а использование метода градиентного спуска: в начале, рассчитывается корреляция в области 3х3 для нулевого смещения, затем выбирается смещение с максимальной корреляцией и процесс повторяется до тех пор, пока не будет обнаружен локальный максимум. Данный метод значительно быстрее, но в худшем случае больших смещений он будет иметь сложность O(n^1.5), что тоже не приемлемо.


  • 1159
  • 22/04/2014


Поделись



Подпишись



Смотрите также

Новое