ТЕХНИЧЕСКОЕ ЗРЕНИЕ
ГЛАВНАЯ
СТАТЬИ
ПРОГРАММЫ
ЛИТЕРАТУРА
МЕРОПРИЯТИЯ
Статьи

Коррекция смещения кадров изображения


23.01.2011 Пасяда Александр Васильевич

Для обработки поляризационной картины экспериментально получено несколько кадров, на каждом из которых из-за оптических искажений изображение смещается на небольшое расстояние относительно первого кадра. Это смещение необходимо скорректировать.

Перед видеокамерой установлен вращающийся линейный поляризатор с дистанционным управлением, во время эксперимента получаем по 4 кадра статического изображения при 4 угловых положениях поляризатора 0°, 45°, 90° и 135°, а при повороте он вносит смещение в получаемое изображение на несколько точек. На этой установке уже получено много требующего обработки материала, и, чтобы не менять поляризатор на плёночный (тогда бы смещение не мешало), решим задачу по скоррекции смещения. Для этого проведён эксперимент с примерами смещения на изображении чёрно-белой настроечной таблицы:


Рис. 1а — уменьшенный общий вид (затемнение к краю кадра — это границы анализатора),

Рис. 1б — смещение на фрагменте с углом настроечной таблицы

После ряда экспериментов на глаз определяется, что
поворот на 45° даёт смещение ≈3-4 точки вправо и ≈1-2 точки вниз,
поворот на 90° даёт смещение ≈4-5 точек вправо и ≈5-6 точек вниз,
поворот на 135° даёт смещение ≈1,5-2 точки вправо и ≈8-9 точек вниз относительно полученного изображения при положении 0°.
Для дальнейшей обработки поляризационной картины полученные изображения, конечно, надо совместить, с этой целью нужно определить смещение точнее и составить алгоритм для коррекции.

Для изображения фрагмента угла настроечной таблицы достаточно провести одномерное определение смещений по горизонтали и по вертикали.

таблица яркостей диаграмма распределения яркости
Рис. 2 — нерезкий край с плавным изменением яркости изображения, показанного на рис. 1б
(экспорт в таблицу Excel проведён с помощью программы Color Table).

Чтобы ряд дискретных точек обработать как непрерывную функцию и определить положение фронта наиболее резкого перепада яркости, требуется интерполяция значений яркости в пикселях. Для этого предположим, что кроме сдвига остальные искажения (в т.ч. вносимые при повороте поляризатора) пренебрежимо малы, а границы прямого угла прямолинейны, так что их кривизну можно не учитывать.

Так как узлы интерполяции отстоят друг от друга на равное расстояние и упорядочены по величине, то можно использовать интерполяционную формулу Ньютона.
Число точек n + 1. xn — значение конечной точки, а x0 — начальной, зададим для удобства отсчёт с x0 = 0.
Шаг между узлами: xi+1xi = h, который зададим в единицах пикселей h = 1
Прямая интерполяционная формула Ньютона:
P(x) = I0 + q⋅Δ1I0 + q⋅(q – 1)⋅Δ2I0/2! + ... + (q⋅(q – 1)⋅...⋅(q – n + 1))⋅ΔnI0/n!
Здесь q = (xx0)/h, а при взятых h = 1 и x0 = 0 становится q = x.
Ii = f(xi) — выборка значений функции яркости, распределённой в пространстве,
а выражения ΔkI0 — нулевые конечные разности k порядка, например:
Δ1I0 = I1I0,
Δ2I0 = Δ1I1 – Δ1I0 = I2 – 2⋅I1 + I0.

И для нашего случая с 7 точками:
P(x) = I0 + x⋅Δ1I0 + x⋅(x – 1)⋅Δ2I0/2! + x⋅(x – 1)⋅(x – 2)⋅Δ3I0/3! + x⋅(x – 1)⋅(x – 2)⋅(x – 3)⋅Δ4I0/4! + x⋅(x – 1)⋅(x – 2)⋅(x – 3)⋅(x – 4)⋅Δ5I0/5! + x⋅(x – 1)⋅(x – 2)⋅(x – 3)⋅(x – 4)⋅(x – 5)⋅Δ6I0/6!

Вычислив по данной формуле интерполяционную функцию, можно использовать как нахождение среднего значения I, так и вычислить первую производную по x — P'x и вторую — P''x. Нулевое значение второй производной наряду с максимумом первой производной (по абсолютному значению) в этой окрестности укажут на наиболее резкий перепад яркости. На рис. 3 показан график полученной интерполяции и её двух первых производных:

график с интерполяцией
Рис. 3 —  график исходных значений яркости I(x) (см. рис. 2),
 жирная линия — функция интерполяции P(x) по значениям яркости,
 первая производная этой функции P'x(x) и
 вторая производная P''x(x).
В месте наиболее резкого яркостного перепада максимум |P'x| и P''x(x)=0, где x≈2,4.

Аналогично было сделано и для остальных 3 кадров. Численно определив пространственные координаты нулевого значения второй производной по x от функции интерполяции P(x) (при максимуме |P'(x)|), запишем результаты координат перепада яркости по горизонтали:
при 0° отсчёт от начала выборки x≈2,4, в котором смещение берётся за 0,
при 45° отсчёт от начала выборки x45°≈3+2,55 (3 — это смещение в целых пикселях относительно изображения при 0°), и общее смещение 5,55 – x = 3,15 ,
при 90° отсчёт от начала выборки x90°≈4+2,2, и общее смещение 6,2 – x = 3,8 ,
при 135° отсчёт от начала выборки x135°≈1+2,9, и общее смещение 3,9 – x = 1,5 ,

А для смещения по вертикали
при 0° отсчёт от начала выборки y≈ – 2,3 (где P''(y≈–2,3)=0), в котором смещение 0 ,
при 45° отсчёт от начала выборки y45°≈2 – 2,1, и общее смещение вниз 0,1 – y = 2,4 ,
при 90° отсчёт от начала выборки y90°≈6 – 2,3, и общее смещение вниз  3,7 – y = 6 ,
при 135° отсчёт от начала выборки y135°≈10 – 3,2, и общее смещение вниз 6,8 – y = 9,1 .

Теперь можно предложить простой линейный алгоритм совмещения сместившихся изображений (хотя в общем случае даже при квадратных фотоэлементах ПЗС матрицы алгоритм учёта смещения для большей точности должен быть более сложным). В одномерном случае при смещении на заданное нецелое число пикселей хсм. новую яркость точки будем вычислять как
Iнов.(x) = (xсм. – int(xсм.))⋅I(х – int(xсм.)) + (int(xсм. + 1) – xсм.)⋅I(х – int(xсм. + 1)),
при x – int(xсм.) ≥ 0,
где int(.) — функция выделения целой части числа.

В двухмерном случае последовательно проводится коррекция смещения по x, а затем по y:
Iнов.(y) = (yсм. – int(yсм.))⋅I(х – int(yсм.)) + (int(yсм. + 1) – yсм.)⋅I(х – int(yсм. + 1)),
при y – int(yсм.) ≥ 0,

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

Iсред.=(Iсветл.+Iтёмн.)/2
вдоль каждой выборки. Посчитав смещения и для этого случая, представим всё в виде таблицы:

Таблица 1
Угол Смещение вправо по х в точке, где P''(x)=0 Смещение вправо по х в точке, где P(x)=Iсред. Смещение вниз по y в точке, где P''(y)=0 Смещение вниз по y в точке, где P(y)=Iсред.
0 0 0 0
45° 3,15 3,17 2,4 2,09
90° 3,8 3,7 6 6,33
135° 1,5 1,52 9,1 9,45

Результат коррекции смещения оказался не таким успешным, как ожидалось.

посещений счетчик посещений