УДК 004.932.2
И. В. Тупицын
БЫСТРЫЙ АЛГОРИТМ РЕКОНСТРУКЦИИ ПРОМЕЖУТОЧНЫХ РАКУРСОВ ПО СТЕРЕОПАРЕ
Рассмотрен эффективный алгоритм стереореконструкции А. А. Лукьяницы. Предложена модификация данного алгоритма, позволяющая увеличить скорость его работы. Представлены результаты проведенных экспериментов.
Ключевые слова: стереоизображение, эпиполярная геометрия, соответствующие точки, диспарантность.
Одно из современных направлений представления видеоинформации связано с разработкой устройств, способных воспроизводить объемные изображения (многоракурсные дисплеи, проекционные системы). Для работы этих устройств необходимо получить заданное количество ракурсов воспроизводимой сцены, количество которых определяется конкретной задачей. Например, для комфортного просмотра видео бывает достаточно 4.. .6 ракурсов, тогда как для таких применений, как 3 D -томография и рентгеноскопия, графические рабочие станции CAD/CAM, отображение оперативной обстановки для авиадиспетчерских, аварийно-спасательных служб и т. д., может понадобиться от 40 до 150 ракурсов. Известны специализированные устройства, обеспечивающие от двух (стереовидеокамеры) до восьми ракурсов сцены. Восьмиракурсная видеокамера применялась в прототипе многоракурсной телевизионной системы НИКФИ, а видеокамеру с бульшим числом ракурсов пока невозможно представить. Не менее проблематичной является запись и передача по каналам связи такого сигнала. Следовательно, возникает потребность в реконструкции необходимого числа промежуточных ракурсов, т. е. изображений, которые были бы получены аналогичной камерой, если бы она занимала промежуточные положения между камерами, используемыми при стереосъемке.
Большинство алгоритмов решают эту задачу в два этапа: первый этап - поиск соответствующих точек, т. е. точек на изображениях, соответствующих одной и той же области трехмерного пространства; второй этап - аппроксимация промежуточных ракурсов по найденным точкам. Как правило, если найдены все соответствующие точки, то аппроксимация промежуточных ракурсов не вызывает затруднений, поэтому основной задачей при реконструкции промежуточных ракурсов является поиск соответствующих точек.
В качестве примера рассмотрим работу простого алгоритма стереозрения (рис. 1). Он состоит из нескольких этапов:
1) в качестве текущей линии выбирается первая (верхняя) эпиполярная линия;
2) для текущей эпиполярной линии в качестве текущего выбирается самый левый пиксель;
3) текущий пиксель левого изображения сопоставляется с каждым пикселем правого изображения;
4) выбирается наиболее похожий по некоторой мере пиксель из правого изображения и записывается в массив соответствующих пикселей. Этот массив представляет собой двумерный целочисленный массив, индексами
элементов которого являются позиции пикселей левого изображения, а значениями элементов - позиции соответствующих им пикселей правого изображения;
5) если текущий пиксель не последний в текущей строке, то следующий пиксель становится текущим пикселем и алгоритм переходит к п. 3. В противном случае переход к п. 6;
6) если текущая эпиполярная линия не последняя, то следующая эпиполярная линия становится текущей и алгоритм переходит к п. 2. В противном случае работа алгоритма завершается.
Результатом работы данного алгоритма является массив соответствующих пикселей. Используя этот массив, можно построить карту глубины или реконструировать промежуточные ракурсы.
Рис. 1. Блок-схема работы простого алгоритма стереозрения
Реконструкция промежуточных ракурсов по методу А. А. Лукьяницы. Постановка задачи. Пусть нам дана стереопара, т. е. два изображения одной и той же сцены,
зафиксированные стереокамерой. Обозначим изображение, полученное левой камерой, буквой Ь, а изображение правой камеры - буквой Я. Введем ортогональную систему координат, согласованную с камерами: ось х направим вправо через центры изображений, ось у - вниз вдоль вертикальной оси изображений, ось г дополнит их до правой тройки. Начало координат выберем таким образом, чтобы изображения находились в плоскости Оху, а центры изображений были симметричны относительно плоскости Оуг (рис. 2). Сцена зарегистрирована двумя камерами: Ь и Я. Следует построить промежуточный ракурс М.
Рис. 2. Геометрия стереосъемки
Пусть центр левого изображения в выбранной системе координат имеет координаты (хЬ, 0, 0), а центр правого -(хЯ, 0, 0). Задача состоит в том, чтобы построить изображение в плоскости Оху с центром в некоторой точке (хм
0, 0), наиболее близкое к изображению, которое было бы получено камерой, оптическая ось которой проходит через точку (хм 0, 0).
Метод А. А. Лукьяницы реализуется в два этапа [1]:
1) находятся сопряженные точки на левом и правом изображениях;
2) промежуточное изображение аппроксимируется по сопряженным точкам и заполняются области, для ко -торых соответствие не является однозначным.
Алгоритм поиска сопряженных точек. Пусть каждое изображение содержит К х N пикселей по горизонтали и вертикали соответственно. Задача нахождения сопряженных точек состоит в следующем: для каждого пикселя левого изображения Ьк., к = 1, ..., К, / = 1, ..., N, следует найти пиксель Я. ] = 1, ., N на правом изображении, соответствующий той же точке регистрируемой сцены. Предположим, что камеры установлены на одной горизонтали и имеют одинаковый коэффициент усиления. Тогда горизонтальные строки фотоприемников совпадают с эпиполярными линиями, поэтому сопряженные точки должны находиться на строках, имеющих одинаковый номер. Это позволяет записать следующее выражение для вычисления эпиполярных линий:
Ь(к, 0 » Я(к, ] + Д.), где Д. - смещение, зависящее от номера пикселя.
Нахождение сопряженных точек состоит в вычислении смещений для всех пикселей. Далее для простоты будем опускать первый индекс, поскольку он имеет одно и то же значение для сравниваемых изображений, и подразумевать, что описываемый ниже процесс выполняется для каждой пары соответствующих строк на левом и правом изображениях.
Для нахождения подходящих кандидатов в сопряженные пиксели необходимо сравнивать области О в окрестности этих пикселей, что существенно повышает устойчивость алгоритма. Действительно, в изображениях одного и того же участка сцены под различными ракурсами могут появиться отличия, связанные со взаимным расположением источников света и элементов сцены. Кроме того, некоторые области могут быть видимы для одной камеры и невидимы для другой.
Пусть сравниваемая область О имеет размеры к х п. Тогда в окрестности.-го пикселя на правом изображении следует просканировать область большего размера т х I, т > к, I > п. В процессе сканирования вычисляется функция расстояния й(/,.), характеризующая близость изображений, находящихся в окрестности О. пикселя Ь(/) и в окрестности О. пикселя Я(). В качестве функции расстояния обычно выбирается сумма разностей интенсивностей соответствующих пикселей из окресностей О. и О.:
к/2 п/2
й(/,] ) = I II Ь(к + т, / +1) - Я(к + т, ] +1 )|,
т=-к / п I=-п / 2
или сравниваются градиенты изображений из О. и О..
На практике лучше использовать сочетание этих методов, поскольку они имеют различную эффективность для разных типов изображений. Наиболее часто применяется метод сравнения интенсивностей, но при обработке изображений с однородными пространными объектами, как, например, стена дома, этот метод приводит к появлению плато у функции й(/,.), что затрудняет выбор соответствующих точек. Метод сравнения разности градиентов в этом случае позволяет учесть более тонкие детали изображений.
Для выбора соответствующих точек из всех возможных претендентов нужно, чтобы были удовлетворены два условия. Во-первых, очевидно, что номера индексов соответствующих точек должны минимизировать суммарные отличия сравниваемых областей на левом и правом изображениях. Во-вторых, величина смещения не может уменьшаться по мере возрастания индекса], т. е. Д. > Д . Это условие следует из геометрических свойств стереопары. Для удовлетворения этих условий предлагается следующий алгоритм, основанный на методе динамического программирования.
Введем две вспомогательных функции: вещественную у и целочисленную Р. Первая из них нужна для накопления суммарных отличий сравниваемых областей, вторая предназначена для хранения соответствующих индексов.
Алгоритм динамического программирования (рис. 3) состоит из трех этапов:
- инициализации:
у(/,1) = й (/,1), / = 1,..., N,
Р(/,1) = /, / = 1,..., N;
- индуктивного перехода:
У(/,]) = шту(к,} -1) + й(/,.),
1< к </
/ = 2,..., N, ] = 1,..., N,
Р(/,.) = ш^шт у (к,. -1),
1< к </
/ = 2,..., N, ] = 1,..., N;
- обратного хода:
J (N) = ал£ шт у (/, N),
1</< N
J (.) = Р( J (] +1), ] +1),
] = N -1,...,1.
В результате будет построен массив индексов для сопряженных точек J, по которому для любого пикселя левого изображения Ь(.) сопряженный пиксель правого изображения определяется как Я^(/)).
Рассмотрим каждый шаг представленного алгоритма подробнее.
Процедура инициализации предназначена для задания начальных значений функций ш и Р. Функция ш вычисляется как функция й между первым пикселем левого изображения в текущей строке и каждым из пикселей правого изображения в текущей строке, функция Р - как индексы пикселей правого изображения.
Следующий этап алгоритма - индуктивный переход. На этом этапе вычисляются последующие значения функций у и Р. Функция у накапливает суммарные значения сравниваемых областей, что повышает точность поиска сопряженных точек.
Завершающий этап алгоритма динамического программирования - обратный ход. На этом этапе заполняется массив сопряженных пикселей J. В качестве сопряженных для пикселей левого изображения выбираются те пиксели правого изображения, различия между которыми минимальны.
Рис. 3. Блок-схема работы алгоритма динамического программирования
Алгоритм динамического программирования производит обработку изображения построчно, что позволяет распараллелить вычисления. Это значительно ускорит процедуру стереореконструкции, однако следствием построчной обработки может стать эффект «гребенки», с которым данный алгоритм, к сожалению, не борется.
Аппроксимация промежуточных ракурсов. Введем
хм хь ^
параметр а = —------—, который характеризует относи-
хм - хЯ
тельную степень близости восстанавливаемого ракурса к левому изображению. Далее для всех значений . = 1, ., N,} = 1, ., N вычислим
к = [а/ + (1 - аЩ)],
М(/, к) = а—(/, /) + (1 - а)Я(/, J(j)).
Из этих соотношений следует, что некоторые точки промежуточного ракурса могут оказаться незаполненными. Это происходит из-за того, что соответствующие фрагменты объекта трехмерной сцены видимы одной камерой и невидимы другой.
Пусть в реконструируемом изображении в какой-либо .-й строке оказались незаполненными идущие подряд пиксели с номерами .0, ., .0 + т. Здесь возможны два случая:
1) если J(j - 1) = J(j + т + 1), то эти пиксели видимы только левой камерой, поэтому они заполняются соответствующими значениями из левого изображения:
М(/, /) = Ь(/, /),
] = . •••, .0+т;
2) если J(j - 1) < J(j + т + 1), то эти пиксели видимы только правой камерой, поэтому они заполняются соответствующими значениями из правого изображения:
М(/, /) = Ь(/, J(j)),
. = j0, •••, .0 + т.
Увеличение скорости работы алгоритма. Хотя скорость работы алгоритма динамического программирования довольно высока, она все же может быть недостаточной для решения некоторых задач. Следовательно, необходимо найти способ увеличения скорости работы этого алгоритма.
Как правило, во всех алгоритмах стереозрения большую часть процессорного времени занимает вычисление функции расстояния для пикселей строки. Для того чтобы минимизировать затрачиваемое на это время, необходимо либо упростить саму функции, либо уменьшить количество пикселей, для которых она вычисляется. Возможен вариант уменьшения размера окна вокруг выбранных пикселей, но он не всегда дает хорошие результаты и применяется не для всех изображений.
Если упрощение функции расстояния не представляется возможным, то необходимо уменьшить количество вычислений этой функции. Усовершенствование рассмотренного выше алгоритма связано с введением дополнительной величины - максимального диспаритета Б , т. е. максимальной разницы между смещением точки трехмерного пространства на левом и правом изображениях. Эта величина задается пользователем для каждой стерео-
пары. Ее значение можно вычислить, если известно расположение камер и расстояние от плоскости стереосъемки до максимально отдаленного объекта сцены.
Перепишем выражения, используемые на этапах инициализации, индуктивного перехода и обратного хода, с учетом параметра максимального диспаритета в следующем виде:
- инициализация:
y(i,1) = d(i, 1), i = І,...,N,
P(i,1) = i, i = 1,..., N;
- индуктивный переход:
У (i, j) = min У(k, j -1) + d(i, j),
Dmax £k<i
i = 2,..., N, j = 1,..., N,
P(i, j) = argminy(k, j -1),
Dmax £k <i
i = 2,..., N, j = 1,..., N;
- обратный ход:
J (N) = argmin y(i, N), J (j) = P(J (j +1), j +1),
Dmax <i£ N
j = N -1,...,1.
Б результате введенных изменений скорость работы алгоритма значительно возрастает, поскольку теперь нет необходимости вычислять значение функции расстояний для каждой пары пикселей в строке.
Рассматриваемые в данной статье алгоритмы (А. А. Лу-кьяницы и модифицированный) были реализованы на языке C++. Б ходе проведенных экспериментов измерялось время поиска соответствующих точек одной строки для различных изображений и оценивались различия в результатах работы алгоритмов. Сравнение проводилось на тестовой стереопаре шириной 10 пикселей (рис. 4).
Анализ полученных данных (см. таблицу) показал, что модифицированный алгоритм имеет более высокую ско -рость работы. Однако при этом показатель количества правильно определенных соответствующих точек ухудшается на 2.. .6 % по сравнению с базовым алгоритмом А. А. Лукьяницы.
Таким образом, в данной статье был рассмотрен алгоритм стереореконструкции А. А. Лукьяницы и оцене-
на скорость его работы. Предложена модификация этого алгоритма, увеличивающая скорость его работы. Модифицированный алгоритм был реализован на языке программирования высокого уровня С++. По результатам проведенных экспериментов было отмечено возрастание скорости работы усовершенствованного алгоритма при незначительном ухудшении качества стереореконструкции.
б
Рис. 4. Тестовая стереопара: а - левое изображение; б -правое изображение
Библиографическая ссылка
1. Лукьяница А. А. Эффективный алгоритм восстановления промежуточных ракурсов по стереопаре // ОгарЫсоп-2006 : материалы Междунар. конф. Новосибирск, 2006. С. 15-18.
Результаты экспериментов
а
Ширина изображений стереопары Размер окна сравниваемых областей Максимальный диспаритет Выбранный алгоритм Бремя работы алгоритма, с
472 5х5 - Лукьяницы 0,343
10 Модифицированный 0,047
20 0,047
716 - Лукьяницы 1,311
20 Модифицированный 0,156
40 0,265
3295 - Лукьяницы 93,102
40 Модифицированный 5,304
100 11,949
I. V Toupitsyn
FAST ALGORITHM FOR RECONSTRUCTION OF INTERMEDIATE VIEWS FROM STEREOPAIR
An effective algorithm for stereoreconstruction of A. A. Lukianitsa is considered in this article. An algorithm modification, allowing to increase the speed of the algorithm is suggested. The results of carried out experiments are presented as well.
Keywords: stereo image, epipolar geometry, corresponding points, disparity.
© Tym^m H. B., 2010
УДК 330.43
С. В. Вохмянин
ИСПЫТАНИЕ АЛГОРИТМА МЕТОДА «ГУСЕНИЦА-SSA» ДЛЯ ВОССТАНОВЛЕНИЯ ВРЕМЕННОГО РЯДА
Рассмотрен базовый алгоритм метода «Гусеница-ББА» и проведены его испытания.
Ключевые слова: выделение тренда, нахождение периодик, устранение шума, разложение временного ряда на компоненты.
Одной из важнейших задач в анализе временных рядов является отделение тренда и периода от шума. Данная статья посвящена исследованию мощного и быстро-развивающегося метода анализа временных рядов «Гу-сеница-88А> [1].
Рассмотрим временной ряд Е:
/0, /1, ..., /ы-1, С1)
где N - его длина. В дальнейшем будем предполагать, что ряд Е - ненулевой.
Алгоритм метода «Гусеница-88А» состоит из четырех последовательно выполняемых шагов: вложения, сингулярного разложения, группировки и диагонального усреднения.
На первом шаге процедура вложения переводит исходный временной ряд Е в последовательность многомерных векторов, которая называется траекторной матрицей.
Для анализа временного ряда выбирается целочисленный параметр Ь, именуемый длиной окна, такой что 1 < Ь < N. При этом образуется К = N - Ь - 1 векторов вложения:
X, = (/■-„/, ..., /,Ь-2)Г, 1 £ , £ К.
Эти векторы образуют траекторную матрицу ряда Е, столбцами которой являются скользящие отрезки ряда длины Ь: с первой точки по Ь-ю, со второй по (Ь + 1)-ю и т. д.:
/0 / ... /К-1
X = [X,: X 2 :...: Xk ] =
fL-1 fL
fK
fN
(2)
Существует взаимно однозначное соответствие между матрицами размерности ЬхК вида (2) и рядами (1) длины N = Ь + К - 1 [1].
Результатом второго шага является сингулярное разложение траекторной матрицы (2) в сумму элементарных матриц.
Пусть Б = X • Xт. Обозначим через 1 1 ..., 1 собственные числа матрицы Б, взятые в неубывающем порядке, а через П1, П2, ., Ц. ортонормированную систему собственных векторов матрицы Б, соответствующих упорядоченным собственным числам. Тогда сингулярное разложение траекторной матрицы X может быть записано следующим образом:
(3)
где = и, • иТ • X , I = 1, ... , Ь. Учитывая, что каждая из матриц V. имеет ранг 1, назовем их элементарными матрицами [1].
Предположим, что исходный временной ряд является суммой нескольких рядов, что позволяет при некоторых условиях определить по виду собственных чисел и собственных векторов, какие это слагаемые и какой набор элементарных матриц соответствует каждому из них.
На третьем шаге на основе разложения (3) множество индексов {1, 2, ., Ь } делится на т непересекающих-ся подмножеств I I ..., I Тем самым разложение (3) может быть записано в виде
X = 1 Г.
(4)
где
y.=ZVk -
результирующие матрицы для каждого
подмножества I., I = 1, ., т.
Фактически именно на этом шаге происходит разделение исходного ряда (1) на шумы, тренд и периодики. Основным критерием группировки является значимость
i=1
keI