Научная статья на тему 'Оптический трекинг для систем виртуальной реальности'

Оптический трекинг для систем виртуальной реальности Текст научной статьи по специальности «Математика»

CC BY
493
165
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Оптический трекинг для систем виртуальной реальности»

контексте мы получаем интервальнозначные инвестиционные возможности.

Список литературы

1. Гришина Е.Н. Модели и методы инвестиционных решений в условиях нечетких случайных данных. Дис... канд. физ.-мат. наук. - Тверь.: ТвГУ, 2006.

2. Додж М., Стинсон К. Эффективная работа: Microsoft Office Excel 2003. - СПб.: Питер, 2005.

3. Grishina E.N., Yazenin A.V. About one approach to portfolio optimization //Proceedings of 11th Zittau Fuzzy Colloquium, Germany, 2004. P.219-226.

4. Grishina E.N., Yazenin A.V. Bivariate Portfolio with Fuzzy Random Data //Proceedings of 12th Zittau Fuzzy Colloquium, Germany, 2005. P.265-270.

5. Yazenin A.V., Wagenknecht M. Possibilistic optimization. A measure-based approach //BUTC-UW, Germany, 1996.

6. www.quote.ru

ОПТИЧЕСКИЙ ТРЕКИНГ ДЛЯ СИСТЕМ ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ

(Работа выполняется при поддержке РФФИ, грант № 06-07-89041-а)

М.В. Михайлюк, И.А. Хураськин

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

Полноценная система виртуальной реальности состоит из нескольких подсистем.

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

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

• Трекинговая подсистема занимается отслеживанием положения наблюдателя в реальном пространстве, которому сопоставляется положение в виртуальном пространстве. Это положение используется для правильного синтеза видеоизображения и звуковой информации в стереорежиме.

• Манипуляторы взаимодействия с виртуальным пространством - набор средств для взаимодействия с виртуальными объектами и для перемещения человека в виртуальной среде. К ним относятся компьютерные перчатки, экзоскелеты, трекболы и т.п. Они позволяют дотрагиваться до

виртуальных объектов, двигать их, выполнять с ними определенные действия.

• Подсистема обратного силового и тактильного воздействия позволяет ощутить прикосновение к виртуальным объектам и получить силовое сопротивление при их перемещении.

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

Существует достаточно много разных типов трекинговых систем, таких как механические, инерционные, акустические, системы на базе магнитного поля, электромагнитные и оптические. В механических системах отслеживаемый объект жестко связан с измерительными приборами, например с гониометрами. Инерционные системы основаны на инерционных силах и с их помощью отслеживается положение и ориентация объекта в трехмерном пространстве. Акустические системы базируются на измерении времени передачи акустического сигнала, исходящего от системы и отраженного объектом, после чего вычисляется расстояние до этого объекта. Электромагнитные системы отслеживают изменение силы электромагнитного поля, которое искажается за счет датчиков, испускающих электромагнитные волны и находящихся на объекте. Оптические системы используют для отслеживания объектов оптические приборы, например видеокамеры. На объекте устанавливаются реперные точки, в полученном видеоизображении они выделяются, и по их расположению в двухмерном изображении однозначно восстанавливается их положение в трехмерном пространстве. Каждый из перечисленных видов отличается диапазоном действия, точностью и условиями работы. Например, инерционные системы отличаются большим диапазоном действия, но имеют накапливающуюся ошибку, точность акустических систем сильно зависит от среды использования, электромагнитные системы имеют ограниченную зону действия, и результаты могут

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

Мы рассмотрим оптическую систему для отслеживания положения головы наблюдателя, сидящего перед экраном компьютера. Перемещения головы в этом случае происходят в небольшом ограниченном пространстве, определяемом областью перед монитором. Это означает, что голова не будет поворачиваться затылком к монитору и перемещаться далеко за его границы. В этом случае можно установить камеру над монитором и сориентировать ее в направлении головы наблюдателя. На голове наблюдателя жестко закреплены реперные точки. Задача состоит в определении минимального числа N реперных точек и их расположения для однозначного вычисления в любой момент времени положения головы наблюдателя в трехмерном пространстве по двухмерному изображению, получаемому камерой.

Определение положения Сточек в пространстве по их образу на изображении. Система координат, в которой будут определяться точки, связана с камерой, начало координат находится в точке расположения камеры, ось X направлена влево от направления съемки, У -вверх, а Z - в сторону направления. Пусть есть точка Р1(х1,у1^1) в заданном пространстве, ее изображением будет точка Р'1(х'1,у'1,/'1) - это перспективная проекция из начала координат на некоторую плоскость, параллельную плоскости ХУ (рис. 1). Координаты проекции точки Р'1 в силу перспективного проецирования будут выражены следующим образом:

Íz'1 - еиЭаетда Уётетде УЭтоеЭта юу, Х1 = Х1 * / У'1 = У1* Л/

Очевидно, что по расположению точки Р'1 невозможно однозначно восстановить положение точки Р1, так как любая точка на прямой Р1Р'1 будет иметь ту же проекцию Р'1. Таким образом, N должно быть больше 1. При N=2 проекциями точек Р1 и Р2. будут точки соответственно Р'1 и Р'2. Однако эти же проекции будут иметь точки Р''1 и Р2, образующие равнобедренный треугольник Р1Р2Р''1. Таким образом, исходные точки по их проекциям восстановить так же невозможно.

Если же выбрать N=3 и расположить три точки Р1, Р2 и Р3 на отрезке так, что длины Ь=!!Р1Р31!

и 1=!!Р1Р2!! различны, то оказывается, что такое однозначное восстановление возможно. Действительно, в этом случае имеем следующие уравнения:

Х1 = Zl * Х 1 / z 1

Х1 = ^ * У'1 / Л

Х2 = ^ * Х'2 / ^2 У2 = ^ * У''2 / Z''2

• Х3 = zз * Х'з / z'з (1)

У2 = ^ * У'з /z'з

Ь = (Х3-Х1)2 + (У3-У1)2 + ^3^1)2

12 = (Х22 - Х1)2 + (У2 - У1)2 + (гг - Zl)2

(Ь -1)2 = (Х3 -Х2)2 + (Уз - У2)2 + (Zз - Z2)2

Решение данной системы уравнений имеет единственное решение (х,у^), если известны значения всех остальных переменных, за исключением случая положения отрезка вдоль прямой проецирования. Тогда все три точки проецируются в одну и восстановить по проекции их расположение невозможно. Однако в нашей задаче, например, если реперные точки жестко закреплены на лбу наблюдателя, это означает, что человек отвернулся от монитора в сторону, и мы будем считать это недопустимым. Таким образом, необходимо вычислить координаты точек Р'1, Р'2 и Р'3.

Алгоритм поиска реперных точек на изображении

Изображение, получаемое видеокамерой, представляет двухмерный массив пикселов. Без ограничения общности можно считать, что начало системы координат, связанной с изображением, расположено в левом нижнем углу, ось Х направлена вправо, а ось У - вверх. Картинную плоскость можно расположить на таком расстоянии от камеры, что размер пиксела будет равен единице измерения в системе координат камеры. Это расстояние z' легко вычислить, зная размер изображения (W на Н пикселов) и горизонтальный угол а раствора камеры, а именно: z/ = W*ctg(a/2)/2 и эта величина будет z координатой всех репер-ных точек изображения в системе координат камеры. Нам остается вычислить только координаты х и у этих точек. Обозначим пиксел, расположенный в 1-й строке и ]-м столбце через Пу. Реперные точки должны выделяться среди пикселов изображения цветом и контрастностью. Такой эффект можно получить, если использовать в роли репер-ных точек либо яркие светодиоды, либо инфракрасные отражатели с излучателем. Для определенности будем считать, что они красного цвета, при этом опытным путем определяется некоторая граница Г, такая что в любой момент красная составляющая реперной точки больше значения Г, а любой другой точки изображения меньше значения Г. Кроме того, будем считать, что для репер-ной точки остальные цветовые составляющие имеют значения, меньшие, чем красная состав-

У, Р1 » ру 1 2 /

X Рис. 1

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

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

1. Двигаясь влево по строке 1 и используя критерий К, находим самый левый пиксел П1,1, принадлежащий области реперной точки. Аналогично, двигаясь вправо, находим самый правый пиксел П1;Г. Тем самым определены начальные значения 1 левой и г правой границ. Начальные значения нижней и верхней границ устанавливаем равными 1.

2. Перейдем на одну строку вниз (если это возможно). Если в этой строке пиксел П1.1,1.1 удовлетворяет критерию К, то уменьшаем левую границу (1 = 1 — 1) и проверяем следующий пиксел П1.1>1.1; повторяем эту процедуру, пока не найдем пиксел, не удовлетворяющий критерию К. Аналогично проверяем возможность увеличения правой границы. Проверяем наличие хотя бы одного пиксела между 1 и г в этой строке, удовлетворяющего критерию К. Если таковой имеется, уменьшаем на единицу нижнюю границу и повторяем пункт 2.

3. Таким образом, нижняя граница Ь области найдена. Аналогично находим верхнюю границу !;.

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

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

минимальные размеры. Зная параметры камеры (разрешающую способность и угол раствора) и максимально возможное удаление от нее реперной точки, можно вычислить минимальный размер изображения этой точки в пикселах. Например, при максимальной удаленности от камеры в 2 метра, угле раствора по горизонтали 45, разрешении видеонаблюдения 640x480 и диаметре маркера 5 мм изображение реперной точки будет занимать в диаметре 3,8 пиксела. Поэтому если при поиске мы будем двигаться через строчку, то все равно попадем на пиксел, принадлежащий изображению реперной точки. Обозначим через А шаг, с которым можно двигаться по строкам и столбцам при поиске пиксела реперной точки. Если найден нужный пиксел, расширим его до охватывающего прямоугольника с помощью вышеописанной процедуры О, получая тем самым изображение реперной точки. Найденные таким образом прямоугольники будем хранить в некотором массиве М. Если при дальнейшем поиске мы найдем новый подходящий пиксел, то необходимо проверить, не принадлежит ли он уже найденным прямоугольникам (эту простую процедуру проверки обозначим через Т). Если нет (то есть выполняется условие 1т(П)), значит он принадлежит новой реперной точке. Таким образом, мы получаем следующий алгоритм первоначального поиска реперных точек на изображении:

1. п = 0; // число найденных точек

2. Цикл по 1 от 0 до Н с шагом А Цикл по j от 0 до W с шагом А

// обозначим текущий пиксел через Пу Если К(П) && 1 Т(Пу), то // значит это новая точка

Находим с помощью процедуры О охватывающий прямоугольник и записываем в массив М. п = п + 1;

Если п = 3, то выход из циклов. Конец цикла.

Конец цикла.

Если изображения реперных точек уже были найдены в предыдущем кадре, то в текущем кадре их поиск будет осуществляться другим способом. Как и раньше, у нас будет массив М найденных охватывающих прямоугольников (в начале работы алгоритма он также пуст). Для каждой найденной в предыдущем кадре точки берем ее центральный пиксел П1. Начиная с него и двигаясь по спирали,

25

26

20

13

27

21

15

Т0"

28

22

16

11

29

23

17

12

30

24

18

Рис. 2

10 11 12 13 14

25 2 3 4 15

24 9 1 5 16

23 8 7 6 17

22 21 20 19 18

Рис. 3

2

1

3

4

5

6

7

8

ищем такой пиксел, который удовлетворял бы критерию К и не принадлежал ни одному из уже найденных охватывающих прямоугольников. Это можно сделать с помощью простой процедуры, которую обозначим через С(П^. Она будет возвращать указатель на найденный пиксел или NULL, если такового не найдется. На рисунке 3 номерами показан порядок обхода пикселов при поиске. Если цикл обхода упирается в границу изображения, то он продолжается в свободной области, а если все пикселы проверены, то поиск заканчивается. Если в результате обработки трех точек процедура С найдет меньше чем три прямоугольника (например, точки могут склеиться или выйти за границу изображения), то восстанавливаются предыдущие три точки. Таким образом, ничего не будет происходить до тех пор, пока при новом повороте головы не будут найдены ровно три реперные точки.

Таким образом, мы получаем следующий алгоритм текущего поиска реперных точек на изображении

1. n=0; // число найденных точек

2. Цикл по известным точкам от i=1 до i=3

Получаем центральный пиксел П

П1 = С(Щ;

Если П1 / NULL, то

Находим с помощью процедуры С(П1) охватывающий прямоугольник и записываем в массив. n=n+1;

Конец цикла.

3. Если n<3, то восстанавливаем предыдущие реперные точки.

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Таким образом найдем координаты x'', y'' ре-перных точек в системе координат изображения. Учитывая, что начало координат этой системы находится в левом нижнем углу, а размеры изображения равны WxH, можно вычислить координаты x', y' реперных точек в системе координат камеры, именно x' = W/2 - x"; y' = H/2 - y" .

Как отмечалось выше, z'= W*ctg(a/2)/2 одинаково для всех трех точек. Из системы уравне-

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

Синтез изображения на экране в монорежиме с учетом положения головы наблюдателя

При синтезе виртуальной сцены на экране компьютера экран можно рассматривать как окно, через которое наблюдатель рассматривает находящуюся за окном виртуальную сцену. Для повышения реалистичности виртуальный объект произвольного размера Б, находящийся от наблюдателя на расстоянии Ь, должен визуализироваться на экране монитора так, чтобы он казался наблюдателю таким же по размерам, как и реальный объект размера Б на расстоянии Ь от наблюдателя, который рассматривает его через окно. Это можно обеспечить выбором единицы измерения в виртуальной сцене, совпадающей с единицей измерения реального мира (то есть выбором одинаковых систем координат), и заданием размеров и относительных положений виртуальных объектов, совпадающих с размерами и положениями реальных объектов. Кроме того, надо правильно задать параметры виртуальной камеры. Она должна быть установлена в точке О1 реального наблюдателя и направлена перпендикулярно окну. Плоскость экрана можно рассматривать как ближнюю отсекающую плоскость. Тогда углы экрана в системе координат виртуальной камеры будут задавать положения левой, правой, верхней и нижней плоскостей отсечения (рис. 5 и 6). В этом случае глаз наблюдателя будет видеть изображение ЕЕ виртуального объекта 81 на экране таким же, как видел бы реальный объект 81 в окне АВ. Перемещение головы (ближе к экрану или дальше, а также в стороны) должно изменять изображение на экране так же, как если бы человек перемещался относительно реального окна с находящейся за ним реальной сценой. То есть при приближении к экрану зона видимости увеличивается (из точки О2 наблюдатель увидит также объекты 82 и 83). Поэтому виртуальная камера должна перемещать-

ся синхронно с головой, ее направление остается перпендикулярным экрану, верх совпадает с верхом экрана (независимо от наклона головы изображение на экране не должно измениться), а пирамида видимости по-прежнему определяется координатами углов экрана в новой системе координат виртуальной камеры с центром в точке О2. Они уже будут другими, то есть пирамида видимости расширится. При перемещении головы в сторону (в точку О3) правило задания виртуальной камеры не меняется: положение в точке О3, направление - перпендикулярно экрану, направление верха не меняется, отсекающие плоскости определяются координатами углов экрана в новой видовой системе координат. Из точки О3 наблюдатель будет видеть объект S3 и часть объекта S1 и совсем не будет видеть S2. Задавать камеру таким способом позволяет функция glFrustum графической библиотеки OpenGL. Эта функция задает объем видимости виртуальной камеры (усеченную пирамиду) на основе таких параметров, как левая и правая, верхняя и нижняя границы ближней плоскости отсечения и положение ближней и дальней плоскостей отсечения (в данном случае дальнюю плоскость можно выбрать любой, лишь бы в пирамиду видимости попадала вся сцена). Следует обратить внимание на то, что виртуальную камеру в нашей задаче всегда следует направлять перпендикулярно экрану, хотя наблюдатель может смотреть на экран под углом. Если направить виртуальную камеру по направлению взгляда наблюдателя, то изображение сцены на экране будет неверным, так как вместе с камерой повернется и картинная плоскость (она перестанет совпадать с плоскостью экрана).

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

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

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

Синтез изображения на экране

в стереорежиме с учетом положения головы наблюдателя

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

Разработанные технологии направлены в первую очередь на создание стереоизображения с использованием экранных средств визуализации для систем виртуальной реальности. Технологии позволяют человеку правильно воспринимать положение виртуальных объектов в пространстве независимо от его положения, что является важным аспектом в технологии взаимодействия человека с виртуальной средой. Сами технологии просты и доступны в реализации и позволяют создать подсистему визуализации на базе обыкновенного компьютера и видеокамеры. Дальнейшее развитие разработанных технологий будет направленно на применение их в устройствах индивидуальной визуализации, в таких как виртуальные шлемы.

Список литературы

1. Михайлюк М.В., Решетников В.Н., Хураськин И.А. Технология взаимодействия человека с виртуальной средой. // Программные продукты и системы. - 2004. - № 2. - С. 1б-19.

2. Ulrich Neumann, Suya You. Tracking for Augmented Reality.

3. Background and Creating Image for CrystalEyes and SimulEyes. Developers' handbook. http://www.stereographics.com.

Проекция объекта в Объект

области окна

Рис. 7

i Надоели баннеры? Вы всегда можете отключить рекламу.