Л

Линейное слежения

Линейное слежения — способ определения смещения объектов на кадрах с камеры.

Пусть мы имеем два смежных кадры с видеокамеры, которые представляют собой две битмапы одинаковой ширины и высоты. Если в поле зрения видеокамеры были только неподвижные объекты, то (с некоторой точностью) эти две битмапы (картинки) будут совпадать попиксельно.

Во-пиксельное сравнения картинок очень прост алгоритмом, однако оно лишь может служить индикатором, есть движущиеся объекты в поле зрения видеокамеры, и не может ответить на такие простые и важные вопросы: как и куда объекты двигаются. Если усложнить по-пиксельное подход, и сравнивать один пиксель одного кадра с различными пикселями следующего кадра (с разными координатами), то теоретически мы можем распознать смещение объекта на целое количество пикселей. Однако если объект сместился на дробное количество пикселей, скажем на пол-пикселя — такой усложненный подход не сработает вовсе.

Помощь принципа на примере идеализированного изображения

Есть второй, аналитический подход для вычисления смещения объектов. Как модель, рассмотрим сначала битмапы, в которой величина пикселя (интенсивность) линейно нарастает по координате абсцисс (ось):

Линейное слежения

Если на второй битмап это же изображение будет смещен на величину, то интенсивность меняется по закону:

Линейное слежения

Имея эти две картинки, мы легко можем вычислить смещение объекта

Линейное слежения

даже если это смещение произошло на дробное количество пикселей.

Коэффициент в формуле (1) является проекцией градиента интенсивности на ось абсцисс:

Линейное слежения

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

Линейное слежения

Подготовка рельного изображения для применения линейного слежения

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

Линейное слежения

В этой формуле для простоты записи суммы, координаты обозначено через.

Рассмотрим непрерывную модель. Функция интенсивности меняется непрерывно внутри протяженных объектов, и скачком меняется (разрывы первого рода) на границе двух объектов. Нас интересует сглаживания именно таких скачков. Сумма по соседним пикселях в непрерывном модели становится интегралом свертки:

Линейное слежения

Если функция сглаживания будет непрерывные первые производные, то и результат сглаживания будет непрерывной функцией и тоже будет первые производные (везде, потому разрывов мы избавились):

Линейное слежения

Функция, кроме непрерывности и дифференцируемости, должна быть положительной в некотором небольшом окрестности нуля, и доривнювты нулю за пределами этого окрестности (иначе мы при усреднении можем домешать пиксели посторонних объектов, и вообще выйти за рамки картинки). Одним из кандидатов является следующая функция, которую образно можно назвать «биквадратным шляпой»:

Линейное слежения

Она положительная внутри эллипса с полуосями, и ее первые производные непрерывно превращаются в ноль на границе. Ясно, что при сглаживании функцией (9) четкой вертикальной черты мы получим примерно линейный участок на интервале, является частью полуоси, на больших расстояниях мы не можем пользоваться линейным приближением. Как показывают вычисления, при погрешность при вычислении по формуле (3) будет около 23%.

Оптимальное использование цвета

Пусть наша видеокамера выдает цветную RGB-картинку. Тогда смещение записывается тремя формулами (по одной на каждый цвет):

Линейное слежения

Если рассматривать сглаженную границу между двумя цветными объектами, то очевидно при смещении объектов все три формулы должны дать один и тот же результат. Однако было бы нерационально вычислять все три формулы (10), проводя усреднение (7) по каждому из трех цветов (трата процессорного времени). Лучше выбрать в качестве интенсивности некоторую линейную комбинацию цветов:

Линейное слежения

и уже для нее проводить все усреднения и вычисления. Но как подобрать коэффициенты лучшим образом? Пусть мы имеем протяженный цветной объект, цвет которого задается числами, на цветном же фоне. Цвета можно рассматривать как векторы в пространстве RGB. Тогда очевидно, наиболее информативной изменением цвета на грани объекта будет проекция вектора разницы:

Линейное слежения

В аналитической геометрии проекция вектора на вектор будет отношением скалярного произведения к длине вектора:

Линейное слежения

Возвращаясь к формуле (11), можно по аналогии с формулой (13) вычислить коэффициенты:

Линейное слежения
Линейное слежения
Линейное слежения
Линейное слежения

Использование итерации для повышения точности линейного слежения

Рассмотрим применение итерации на примере задачи бинокулярного зрения. Пусть мы сфотографировали один вертикальный объект (например столб) двумя видеокамерами, которые разнесены на некоторое расстояние по горизонтали. Ясно, что изображение этого столба будет смещено по горизонтали на некоторое смещение при сравнении двух фотографий. Смещение по вертикали не ожидается, поэтому эта задача несколько проще чем слежения за подвижными объектами. Поскольку нам нужен только градиент по оси, то функция сглаживания (9) должно быть сплюснутой. Коэффициент должен как минимум вдвое превышать ожидаемое смещение по Иксу:. На коэффициент не наложен никаких математических условий; но если мы возьмем его поменьше, то уменьшим количество вычислений, с другой стороны, лучше чтобы некоторое сглаживание по оси происходило, чтобы избавиться шороховатостей. Поэтому предположим, что равняется малом целому числу (в пикселях), например.

Теперь мы используем формулы (3), (4) подставляя в них сглаженную интенсивность (желательно также с учетом цвета по формуле 11). Получим результат первой итерации:

Линейное слежения

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

Линейное слежения

Есть примерно:

Линейное слежения

а поэтому следующая формула будет точной:

Линейное слежения

поскольку второе слагаемое в этой сумме есть малой поправкой.

Другие медоды слежения

Линейное слежения позволяет вычислить смещение только в направлении поперечном к контуру объекта. В случае наличия в поле зрения видеокамеры компактного яркого объекта на тусклом фоне, можно применить другой, более простой и быстрый алгоритм яркой точки, который позволяет вычислить обе координаты и яркость.

Показать больше

Похожие статьи

Добавить комментарий

Проверьте также
Закрыть
Кнопка «Наверх»
Закрыть
Закрыть