Задача автоматической калибровки проектора и сенсора глубины

ВЕСТНИК ТОМСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА

2016 Управление, вычислительная техника и информатика № 2

ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ

УДК 004.922

DOI: 10.17223/19988605/35/8

П.В. Сенченко, Д.А. Ознабихин, В.Ф. Тарасенко ЗАДАЧА АВТОМАТИЧЕСКОЙ КАЛИБРОВКИ ПРОЕКТОРА И СЕНСОРА ГЛУБИНЫ

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

В настоящее время все большую популярность получают устройства, способные перевести интерактивное взаимодействие человека и вычислительной техники на качественно более высокий уровень. Такие устройства, как Microsoft Kinect - сенсорный игровой контроллер, разработанный компанией Microsoft для консоли Xbox 360 [1], Asus X-tion - игровой контроллер и платформа фирмы ASUS, применяемая для разработки приложений на основе распознавания движений [2], PrimeSense - сенсорный контроллер отслеживания движения, правами на который обладает Apple [3], находят применение в различных сферах деятельности: в оборонной промышленности, робототехнике, медицине, образовании, игровой индустрии.

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

Существуют различные методики калибровки [4-6], каждая из которых обладает определенными преимуществами и недостатками. Так, применение одного из современных методов калибровки при помощи шахматной доски не всегда возможно в автоматическом режиме по причине необходимости периодического перемещения доски для более точной калибровки.

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

1. Постановка задачи калибровки сенсора глубины и проектора

Одним из вариантов использования технологии дополненной реальности является «Виртуальная песочница», представляющая собой комбинацию обычной песочницы, трехмерного датчика Microsoft

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

В процессе разработки сложных программных систем моделирования и визуализации, в основе которых лежит обработка графической информации [8], возникает необходимость сопоставления координаты облака точек, принимаемых с сенсора глубины, и координат пространства, проецируемых проектором. Такие действия позволят дополнять реальное изображение данными виртуального пространства. Для сопоставления координат необходимо выполнить преобразование

ProjectorSpace = VPTramsform

где ProjectorSpace - проекционные координаты относительно проектора, SensorSpace - проекционные координаты относительно сенсора, VPTramsform - функция трансформации.

Для получения преобразования VPTramsform предлагается следующий пошаговый алгоритм, выполняемый на этапе запуска системы:

1. Проецирование, поиск и определение глубины.

2. Преобразование локальных координат датчика в глобальные координаты.

3. Определение координат расположения проектора.

4. Определение направления проецирования.

5. Получение трансформации из глобального пространства в локальное пространство проектора.

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

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

2. Проецирование, поиск и определение глубины

Для поиска образов по изображению существует достаточное количество алгоритмов, от выбора которых и будет зависеть проецируемый образ. Использование в качестве образов изображений, имеющих информацию об изменении размера проекции, позволяет определить расстояния до исходной точки. Такой подход способствует уменьшению погрешности вычисления. К примеру, при проецировании круга значение радиуса проекции и значение радиуса проецируемого образа позволит вычислить длину луча. Сенсор Kinect считывает цветовые и глубинные данные одновременно на частоте до 30 кадров в секунду. Разрешение инфракрасного сенсора составляет 1,280 х 1,024 пикселей, при этом максимальный размер выходного изображения не превышает 640 х 480 пикселей. Это связано с привязкой к возможностям внутреннего процессора Kinect и пропускным возможностям шины USB [9].

Представленные характеристики, которыми обладает Microsoft Kinect, позволяют использовать его в качестве датчика для определения глубины изображения. Датчик глубины представляет собой инфракрасный проектор, объединенный со светочувствительной матрицей. Это дает возможность сенсору Microsoft Kinect получать трехмерное изображение движущегося объекта при естественном и искусственном освещении помещения. Специальная программа и сенсор диапазона глубины позволяют калибровать датчики с учетом условий окружающей среды [10]. Несмотря на то что существуют другие аналоги и алгоритмы получения стереоизображения на основе двух камер, в данной задаче важна точность получаемых данных и поэтому наилучшим вариантом является использование сенсора Microsoft Kinect.

3. Преобразование локальных координат датчика в глобальные координаты

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

SensorSpase = GlobalSpace * ViewTransform * ProjectionTransform,

где GlobalSpace - глобальные координаты, ViewTransform - матрица видового преобразования сенсора, ProjectionTransform - матрица проекционного преобразования сенсора.

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

GlobalSpace = SensorSpase * inverse

где inverse (ViewTransform * ProjectionTransform) - обратная матрица от ViewTransform*ProjectionTransform.

Матрица преобразования ProjectionTransform зависит он характеристик сенсора, таких как угол обзора, соотношение сторон обзора, коэффициенты искажения линзы. Коэффициентом искажения линзы в данной задаче можно пренебречь (как показала практика использования Microsoft Kinect, в данной задаче коэффициент искажения слабо влияет на результат). Остальные преобразования можно свести к стандартным преобразованиям, выполняемым в матрице проекции.

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

Используя в качестве сенсора устройство Microsoft Kinect и коэффициенты fx, fy, cx, cy, предоставленные для данного сенсора [11], матрицу inverse (ProjectionTransform) можно заменить на формулу (4):

GlobalSpace = vec3 ((SensorSpace.x - cx) * depth * fX, (SensorSpace.y - cy) * depth * fy, depth), (4) где fx = 1,0 / 594,2143; fy = 1,0 / 591,0405; cx = 339,3078; cy = 242,7391.

4. Определение координат расположения проектора

По аналогии для преобразования глобальных координат в локальные координаты проектора используется преобразование

ProjectorSpace = GlobalSpace * PViewTransform * PProjectionTransform,

где PViewTransform - матрица видового преобразования проектора, PProjectionTransform - матрица проекционного преобразования проектора.

Матрица PProjectionTransform также получается из характеристик проектора: угол обзора по одной из осей, соотношение сторон, коэффициенты искажения линзы.

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

При этом точками S, C, P0, Pi, P2 могут являться произвольные точки в пространстве. Следует отметить, что данные точки могут не лежать на одной плоскости.

Для решения задачи необходимо получить локальное направление лучей для d0, соответствующей CP0; d1, соответствующей CP1; d2, соответствующей CP2, или углов между лучами, для которых выполняется следующие равенство:

_ ,,. . ,/,ч ,, ч MaxYawAngle. , . MaxPitchAngleчч

Р1 = arccos

width height

где x0, x1 - координаты проецирования по горизонтали; y0, y1 - координаты проецирования по вертикали; MaxYawAngle - угол обзора по горизонтали; MaxPitchAngle - угол обзора по вертикали. Представим задачу на рис. 2.

Спроецируем точки на виртуальную плоскость в пространстве и нормализуем вектор направления луча. Таким образом, возможно применить преобразование координат, используя следующее равенство:

* V,

d%Q dy0 dz0 1- Px0 РУо Pz0 1

dxx dyí dzt 1 Pxx Pyi Pzi 1

dx2 dy2 dz2 1 Px2 Ру2 Pz2 1

dx3 dy3 dzz 1. Px2 РУз Pz 3 1

где V - матрица преобразования координат; ёх, ёу, ёх - координаты на плоскости проекции проектора; Рх, Ру, Рх - мировые координаты.

Pi

Рис. 1. Точки в пространстве, сенсор и проектор: - точка координат сенсора, определенная как центр координат; С - искомая точка координаты проектора; Р0, Р1, Р2 - проецируемые точки в глобальных координатах

C

Pn

/ Bo Bi \

Pi

Pi

Рис. 2. Графическое представление задачи

Координату точки C получаем из матрицы V по следующему равенству (8) [12]:

C = row(V\ 3),

где row - функция, определяющая строку матрицы под определённым номером.

5. Определение направления проецирования

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

ViewDirection = normalize (P - C), где P - координаты центральной точки.

Если требуется вычисление стандартной видовой матрицы, то в качестве точки плоскости наблюдения используется центральная точка.

6. Получение трансформации из глобального пространства в локальное пространство проектора

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

Для получения матрицы проекции PProjectionTransform будем использовать следующую матрицу с возможностью выбора центра [12]:

PProjectio nTransform =

7 —7 ZJ p^p ZJ p^p 0 ХрГр У * 7 ~л Л p^^ Zi p^p

0 7 — 7 zj p^p ZJ p^p 1 prp Y * 7 l prp ^ ¿J prp

0 0 Sz T 'z

0 0 -1 7 pvp -

здесь (Хрг-р, Ург-р, Zprp) - одна из точек направляющего вектора, где Хргр - некоторое выбранное случайным образом положение плоскости наблюдения на оси Z; и Тх - коэффициенты масштабирования и трансляции для нормировки спроектированных значений координат Z. Заданные значения и Тх зависят от выбранного диапазона нормировки.

Таким образом комбинация матриц PViewTransform * PProjectionTransform является общей трансформацией глобальных координат в локальные координаты проектора.

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

С учётом всех полученных преобразований развернём формулу (1) и получим следующее выражение:

ProjectorSpase = SensorSpa.se * inverse(ViewTraqnsform * ProjectionTransform) * * PViewTransform * PProjectionTransform, где ViewTransform будет единичной матрицей, если сенсор глубины определен как центр координат; Рт-jectionTransform получается после приведения формулы (2) в матричный вид (при этом в конечном итоге не обязательно использовать матрицу); PViewTransform вычисляется при помощи четырех проецируемых точек; значение PProjectionTransform получается в зависимости от характеристик проектора.

Заключение

Предложенный в работе алгоритм наряду с другими существующими методиками [4-6] может быть использован для различных вариантов калибровки. Так, после единовременной автоматической калибровки системы имеются необходимые преобразования, которые позволяют разработчику в режиме реального времени производить сопоставление данных, получаемых сенсором или датчиком глубины, с виртуальными данными системы, проецируемыми с помощью проектора.

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

ЛИТЕРАТУРА

1. Microsoft Kinect. URL: http://www.xbox.com/en-us/kinect (дата обращения: 30.11.2015).

2. Asus X-tion. URL: http://www.asus.com/ru/Multimedia/Xtion_PRO (дата обращения: 3П.11.2П15).

3. Beyond Television: How Apple Could Incorporate PrimeSense Technology Into Its Products. URL: http://www.macrumors.com/

2n13/11/25/beyond-television-how-apple-could-incorporate-primesense-technology-into-its-products (дата обращения: П3.12.2П15).

4. Zhang Z. A flexible new technique for camera calibration // IEEE Transactions on Pattern Analysis and Machine Intelligence. 2000.

V. 22, No. 11. P. 1330-1334.

5. Tsai R.Y. A Versatile Camera Calibration Techniaue for High-Accuracy 3D Machine Vision Metrology Using Off-the-shelf TV

Cameras and Lenses Proceedings // IEEE Conference on Computer Vision and Pattern Recognition. Miami Beach, FL, 1986. P. 364-374.

6. Hrdlicka J. Kinect-projector calibration, human-mapping. URL: http://blog.3dsense.org/ programming/kinect-projector-calibration-

human-mapping-2 (дата обращения: 03.12.2015).

7. Песочница дополненной реальности. URL: http://arpoint.ru/news/arconf_13_11_14.php (дата обращения: 03.12.2015).

8. Сенченко П.В., Жуковский О.И., Гриценко Ю.Б., Лазарев И.В., Милихин М.М. Интерфейс взаимодействия геоинформаци-

онной технологии ведения электронного генерального плана со сторонними программными системами // Доклады Томского государственного университета систем управления и радиоэлектроники. 2013. № 1 (27). С. 129-134.

9. Дусеев В.Р., Мальчуков А.Н., Мыцко Е.А. Фильтрация данных глубины с сенсора Kinect // Современные проблемы науки и

образования. 2015. № 1. С. 153-160.

10. Как работает Kinect. URL: http://www.kakprosto.ru/kak-883127-kak-rabotaet-kinect (дата обращения: 03.12.2015).

11. Shiffman D. Getting Started with Kinect and Processing. URL: http://shiffman.net/p5/kinect/, свободный (дата обращения: 25.10.2015).

12. Херн Д., Бейкер П. Компьютерная графика и стандарт OpenGL : пер. с англ. М. : Вильямс, 2005. 1168 с.

Сенченко Павел Васильевич, канд. техн. наук, доцент. E-mail: pvs@tusur.ru Ознабихин Дмитрий Анатольевич. E-mail: kvid06@mail.ru Томский государственный университет систем управления и радиоэлектроники Тарасенко Владимир Феликсович, д-р техн. наук. E-mail: vtara54@mail.ru

Томский государственный университет Поступила в редакцию 1 марта 2016 г.

Senchenko Pavel V., Oznabihin Dmitry A. (Tomsk State University of Control System and Radioelectronics, Russian Federation),

Tarasenko Vladimir F. (Tomsk State University, Russian Federation).

The task of automatic calibration of the projector and the sensor depth.

Keywords: sensor depth; automatic calibration; augmented reality; Kinect; computer graphics.

DOI: 10.17223/19988605/35/8

Augmented reality system, built with use of projectors and sensors depth using infrared light, are widely used in various fields - from the defense to the gaming industry. In such systems, the actual problem is the calibration of the projector display information and sensor depth, reading the data in the space. One of options using technology of augmented reality is the "Virtual sandbox" representing a combination of a normal sandbox, the three-dimensional sensor Microsoft Kinect, the software of simulation and visualization and also from the normal projector (sometimes several projectors) providing visualization of submission of the image. The landscapes created from sand are selected in real time with the flowers corresponding to elevation height, topographical planimetric lines and the virtual water.

In systems of augmented reality, where a role of interactive devices is played by the sensor controller and a projector for visual modification of a scene, there is a need of the solution of the task of determination of geometry of a surface of real space and comparison of this surface to the projected image. Process of calibration of both devices is usually carried out in a manual mode independently by the user of system that doesn't allow to receive rather precisely necessary conversion and as a result doesn't allow to achieve the desirable level of display of the virtual view.

In certain cases process of calibration becomes technically difficult or generally impossible. The task of calibration can be solved by formalization of algorithm of automatic calibration of system which program implementation allows to receive necessary transformation of coordinates by system in an automatic mode.

In development process of difficult program systems of simulation and visualization, which cornerstone graphic job processing is, there is a need of comparison of coordinate of a cloud of the points accepted from a sensor of depth and coordinate of space, projected by a projector. Such actions will allow to add the real image data of the virtual space.

This article discusses options for using interactive devices. We have proposed a stepwise algorithm for determining the mutual position of the sensor space and depth of the projector image:

1. Projection, search and determination of depth;

2. Conversion of local coordinates of the sensor to global coordinates;

3. Determination of coordinates of layout of a projector;

4. Projection direction finding;

5. Receiving transformation from global space in local space of a projector;

6. Receiving the general conversion of local coordinates of the sensor to local coordinates of a projector.

The necessary steps pretreatment process are defined that allow to carry out the calibration of the projector automatically. The mechanism of projection, search and determination of the depth are presented. The principle of conversion of the local coordinates of the sensor in global coordinates is described. A method for determining the coordinates of the location of the projector and the determination of the direction of projection is proposed. The process of transformation of the global space in the local space of the projector is described. A version of obtaining a general transformation of the local coordinates of the sensor in the local coordinates of the projector is presented.

The mathematical component optimally integrable in computer graphics processing systems through the use of common principles, requires minimal changes in the system processing and analysis of complex structured images. The proposed algorithm can be used in augmented reality systems with both single and multiple projectors. In the latter case calibration is carried out in pairs, with adding of a stage of receiving a relative positioning of coordinate axes of different couples. Also considered algorithm can be taken as a basis for use in systems of augmented reality when manual calibration of devices is represented difficult or impossible.

REFERENCES

1. MicrosoftKinect. (n.d.) [Online] Available from: http://www.xbox.com/en-us/kinect/. (Accessed: 30th November 2015).

2. AsusX-tion. (n.d.) [Online] Available from: http://www.asus.com/ru/ Multimedia / Xtion_PRO /. (Accessed: 30th November 2015).

3. Clover, J. (2013) Beyond Television: How Apple Could Incorporate PrimeSense Technology Into Its Products. [Online] Available

from: http://www.macrumors.com/2013/11/25/beyond-television-how-apple-could-incorporate-primesense-technology-into-its-products. (Accessed: 3rd December 2015).

4. Zhang, Z. (2000) A flexible new technique for camera calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence.

22(11). pp. 1330-1334. DOI: 10.1109/34.888718

5. Tsai, R.Y. (1986) A Versatile Camera Calibration Technique for High-Accuracy 3D Machine Vision Metrology Using Off-the-shelf

TV Cameras and Lenses. Proc. of IEEE Conference on Computer Vision and Pattern Recognition. Miami Beach, FL. pp. 364-374. DOI: 10.1109/JRA.1987.1087109

6. Hrdlicka, J. (2013) Kinect-projector calibration, human-mapping. [Online] Available from: http://blog.3dsense.org/rogramming/kinect-projector-calibration-human-mapping-2/. (Accessed: 3rd December 2015).

7. Anon. (n.d.) Pesochnitsa dopolnennoy real'nosti [Augmented Reality Sandbox]. [Online] Available from: http://arpoint.ru/news/arconf_13_11_14.php. (Accessed: 3rd December 2015).

8. Senchenko, P., Gritsenko, Yu., Zhukovsky, O., Lazarev, I. & Milihin, M. (2013) Interface between GIS technology of electronic mas-

ter plan with other software systems. Doklady Tomskogo gosudarstvennogo universiteta sistem upravleniya i radioelektroniki - Proceedings of Tomsk State University of Control Systems and Radioelectronics. 1(27). pp. 129-134. (In Russian).

9. Duseev, V., Malchukov, A. & Mytsko, E. (2015) Depth Data Filtering with Sensor Kinect. Sovremennye problemy nauki i obra-

zovaniya - Modern Problems of Science and Education. 1. pp. 153-160. (In Russian).

10. KakProsto. (n.d.) How does the Kinect work. [Online] Available from: http://www.kakprosto.ru/kak-883127-kak-rabotaet-kinect-. (Accessed: 3rd December 2015).

11. Shiffman, D. (n.d.) Getting Started with Kinect and Processing. [Online] Available from: http://shiffman.net/ p5/kinect/. (Accessed: 25th October 2015).

12. Hearn, D. & Baker, P. (2005) Komp'yuternaya grafika i standart OpenGL [Computer graphics and standard OpenGL]. Translated from English. Moscow: Williams. (In Russian).