УДК 519.677 Дата подачи статьи: 07.02.17
Б01: 10.15827/0236-235Х.030.2.286-290 2017. Т. 30. № 2. С. 286-290
ТЕКСТУРИРОВАНИЕ ТРЕХМЕРНОЙ МОДЕЛИ, ПОСТРОЕННОЙ ПО ОБЪЕДИНЕННОМУ НАБОРУ ВИДОВ С ЗАШИВКОЙ ДЫР
А.П. Кудряшов, к.т.н., м.н.с., [email protected] (Институт автоматики и процессов управления ДВО РАН, ул. Радио, 5, г. Владивосток, 690041, Россия); И.В. Соловьев, аспирант, [email protected] (Институт прикладной математики ДВО РАН, ул. Радио, 7, г. Владивосток, 690041, Россия)
В работе предложен автоматический метод генерации и нанесения текстуры на компьютерную трехмерную модель, построенную с помощью воксельного метода объединения триангуляционных сеток, полученных по дальност-ным данным с разных видов. Этот метод объединения основан на воксельном или объемном подходе, который также использует диффузное размытие значений неявной весовой функции в воксельном пространстве для зашивки дыр на финальной модели. Обычная проекция текстур образует заметные швы на границах сканов, а все рассмотренные аналоги текущего метода обладают высокой вычислительной сложностью. Представленный метод текстурирования предлагает решение этих проблем. Он основан на слиянии всех доступных текстур с учетом веса каждого отдельного пикселя в каждом треугольнике, перекрытия и наблюдаемости этих треугольников. Вес каждого пикселя учитывает следующие параметры: угол, под которым он наблюдается, тень/пересвет, дистанция от края скана, поскольку именно на краю скана часто образуется видимый шов текстур. Для уменьшения времени работы предложены алгоритм индексации треугольников в виде текстурной карты, который позволяет избежать полного перебора треугольников, алгоритм для быстрого расчета весов треугольника относительно дистанции этого треугольника от края скана, а также многоядерные вычисления. Вычислительные эксперименты были проведены на реальных сценах, реконструированных с помощью трехмерного сканера. Они показали, что текущий алгоритм способен генерировать реалистичные текстуры за короткое время для высокодетализированных моделей.
Ключевые слова: текстурирование, воксельное пространство, трехмерная реконструкция, триангуляционная оболочка, объемный метод.
Большая часть методов построения трехмерных моделей реальных объектов использует дальност-ные данные, получаемые с помощью стереокамер, лазерных дальномеров или алгоритмов компьютерного зрения по серии изображений этого объекта, снятого с разных точек. В научной литературе на такие данные ссылаются как на дальностные изображения (range images) или карты глубин (depth maps) [1]. С каждым пикселем range image/depth map связывается расстояние до видимой точки объекта в пространстве сцены. Пространственные данные могут быть представлены в виде облака точек в трехмерном пространстве или в виде триангуляционной поверхности. Наряду с задачей объединения этих триангуляционных сеток, подразумевающей построение единой связной оболочки без дублирования участков поверхности, стоит задача зашивки дыр и построения текстуры. Зашивка дыр происходит на этапе заполнения неявной функции в воксельном пространстве, хотя методы зашивки могут использоваться на этапе обработки триангуляционной модели, как, например, в [2, 3].
Представленный в настоящей статье метод построения единой целостной трехмерной модели основывается на подходе, предложенном в [4, 5], а также на более ранних работах [6, 7] и направлен на преодоление указанных недостатков. Работа выполнялась в контексте решения более общей задачи по созданию трехмерных сцен на последовательностях изображений. Вклад авторов состоит в разработке оригинального алгоритма, в котором осуществляется построение гибридной весовой
функции для слияния текстур с учетом таких факторов, как угол наблюдения, тень/пересвет и близость к краю скана, обеспечивается оптимизация вычислений за счет эффективной структурной организации данных, а также достигается высокая скорость обработки данных за счет параллельных вычислений на многоядерных процессорах.
Обзор существующих методов
Существует довольно много подходов к тексту-рированию реконструированных объектов, однако для каждого метода реконструкции с его ограничениями необходимо подбирать свой метод текстури-рования. В предложенном методе подразумевается, что сканер стоит неподвижно, а модель вращается на специальной площадке, поэтому для каждого участка поверхности меняется освещение, а, например, в [8] модель стоит неподвижно, а сканер перемещается вокруг, поэтому модель освещена одинаково для разных видов, но необходимо убрать погрешности сканирования. В [9] авторы пользуются низкополигональными объектами и, помимо прочего, решают задачу частичного перекрытия треугольников, а в рассматриваемом случае это модель с треугольниками, текстура которых имеет площадь, близкую к площади одного-двух пикселей, и решать задачу частичного перекрытия нет смысла. Но в целом эти методы близки к предложенному в данной статье.
В [8] используется блендинг с равновесным участием всех видов. Это хорошо работает, если
освещение модели меняется незначительно и не появляются дополнительные тени. Предложенный в настоящей статье метод дает лучший результат, чем равновесный блендинг. В [9] используется блендинг с учетом веса по наклону нормали от вектора наблюдения и веса по глубине, но не учитывается вес по дистанции от края скана, а именно на краю скана обычно образуются треугольники с максимальными искажениями, которые могут дать некорректные результаты. Также не учитывается вклад теней и пересветов.
Стоит отметить и скорость работы. Для [8] это 10-30 минут для 10-20 тысяч треугольников, для [9] - 1-4 минуты для 10-15 тысяч треугольников. Предложенным в данной работе методом обрабатывается за 0.5-1.5 минуты 2-5 миллионов треугольников, то есть обработка осуществляется на несколько порядков быстрее. Однако из-за метода съемки в нашем случае нет необходимости устранять неточности при сканировании.
Также стоит отметить работу [10], в которой для обеспечения нужной точности моделирования и текстурирования используется, помимо фотокамеры, еще и лазерный сканер.
Построение модели с зашивкой дыр
Подробное описание метода построения объединений модели приведено в [3], зашивки дыр -в [4], текстурирования - в [11]. Исходными данными являются набор триангуляционных сеток, полученных стереометодом с разных точек наблюдения, и фотоизображения с известной внешней и внутренней калибровкой камер. В результате необходимо получить объединенную текстурирован-ную модель (рис. 1). Сканирование выполнено трехмерным сканером фирмы Яа^еУ18Юп.
Объединение происходит с помощью воксель-ного метода, использующего октодерево, для оптимизации применения компьютерной памяти. Основа метода - построение гибридной весовой
функции в каждом прилегающем к поверхности модели вокселе. Данная функция строится на самом нижнем, детальном уровне октодерева, а затем пересчитывается на четыре уровня вверх, где происходит диффузное размытие. Диффузное размытие необходимо для заполнения пустых вокселей значениями с соседних (непустых) вокселей, по этим значениям будет строиться новая поверхность. Построение итоговой поверхности производится методом марширующих кубиков.
Наиболее ресурсоемкой частью представленного выше метода является определение расстояний от вокселов до ближайшей поверхности при построении весовой функции. Вычислительная трудоемкость возникает из-за необходимости перебора всех треугольников с вычислением соответствующих расстояний. Чтобы избежать избыточных вычислений, предлагается механизм с предварительной индексацией всех треугольников сетки каждого вида. Для этого используется двухмерный массив с размерностью, равной размерности изображения этого вида.
Тогда можно спроецировать каждый треугольник исходной сетки г-го вида на i-е изображение. В результате каждое значение массива приобретает либо индекс, указывающий на принадлежность к определенному треугольнику, либо 0, то есть отсутствие проекции. Такая процедура возможна, поскольку исходная сетка для каждого вида является заведомо видимой, то есть не содержит невидимых на этом виде граней. Использование индексов при последующей работе алгоритма позволяет избежать полного перебора по всем треугольникам каждого вида и существенно уменьшает время работы алгоритма.
Текстурирование
Предварительная фильтрация. Первая проверка - проверка на наблюдаемость. Каждый треугольник построенной трехмерной модели проецируется на каждый из первоначальных видов. Для каждого из них рассчитывается угол наклона от нормали треугольника к линии, проходящей через центр камеры. Если угол превышает 90°, треугольник невидим с этого вида и его можно отбросить. Для треугольников, у которых этот угол близок к 90°, велика вероятность ошибки, но на случай, если нет другого, более подходящего вида, эта проекция будет учтена и отбросится только в случае наличия
Рис. 1. Построение единой текстурированной трехмерной модели по набору изображений, полученных с разных видов
Fig. 1. Unified textured 3D modeling using images from different views
а) б) в)
Рис. 2. Разные типы нанесения текстур: а) по лучшим критериям, б) равномерный блендинг, в) блендинг с гибридным весом
Fig. 2. Different types of texturing: а) according to the best criteria, 6) uniform blending, e) hybrid weight blending
лучшей альтернативы. Вторая проверка - проверка на видимость, то есть на то, что наблюдаемый треугольник не перекрыт другими треугольниками этой модели. В общем случае потребовался бы перебор всех треугольников модели, что заняло бы значительное время. Для оптимизации можно воспользоваться уже построенной для первоначальной модели индексной картой. Для всех углов треугольника объединенной модели получим значения индексов треугольников исходных сканов до объединения. Если расстояние между этими объектами меньше порогового значения, значит, не существует объектов, которые загораживали бы рассматриваемый треугольник. Особняком стоят треугольники, полученные в результате зашивки дыр: у них нет индексов на первоначальной индексной карте, поэтому либо придется проверять их на видимость путем полного перебора, либо, если необходимо сэкономить время, игнорировать этот критерий, а использовать только критерий наблюдаемости. Логично, что для текстуры каждого треугольника нужно выбрать видимый участок, снятый под минимальным углом. Однако на стыках текстур, полученных с разных видов, появляются заметные границы (рис. 2а). Рассмотрим подробнее решение этой задачи.
Попиксельное смешивание. Основной проблемой при текстурировании трехмерной модели с помощью исходных фотоизображений является различное освещение на разных видах. На рисунке 3 продемонстрировано, как один и тот же участок поверхности модели выглядит по-разному на разных видах.
Решить эту задачу можно путем смешивания значений цвета для каждой точки текстуры с разных видов. Однако равномерное смешивание текстур приводит к не самым идеальным результатам
(рис. 2б). Дело в том, что виды неравнозначны, поскольку на некоторых из них присутствуют сильные тени и пересветы, а на некоторых нужный треугольник снят под очень большим углом или находится на границе скана, где обычно могут быть ошибки сканирования. Поэтому для учета всех предложенных критериев выбора текстуры был использован гибридный вес, рассчитываемый по формуле
Ш = ^осв(^уг+^гр), (1)
где ^осв - вес по освещенности (функция имеет трапецеидальную форму, принимает значение 0 для теней, затем линейно возрастает до 1 и также линейно падает до 0 для пересветов); WуT - вес по углу наблюдения (линейно возрастает от 0 до 1 в зависимости от угла наблюдения); ^гр - вес по расстоянию треугольника от границы скана.
Если первые два параметра не вызывают трудностей с расчетом, то расчет расстояния от каждого треугольника до границы скана в прямом виде является крайне ресурсоемким, поэтому была предложена следующая оптимизация. Уже существует построенная структура индексов для всех треугольников, которая в двухмерном виде содержит
Рис. 3. Влияние освещения на текстуру Fig. 3. Lighting effect on a texture
а) б) в)
Рис. 4. Фотоизображение модели «Змея» (а), карта весов по дистанции от края скана (б), гибридная карта весов с учетом всех весов (в)
Fig. 4. "Snake " model photo image (а), weight map on a distance from the edge of a scan (б), hybrid weight map adjusted for all weights (в)
индексы треугольников и нули там, где треугольников нет. Необходимо для каждого ненулевого значения вычислить расстояние до ближайшего нуля. Поскольку найденные значения используются только в качестве веса, нет необходимости в вычислении абсолютных значений в 3D, достаточно вычислить дистанцию на плоскости. Однако прямой перебор всех ненулевых значений и поиск ближайшего нулевого в заданном радиусе занимают продолжительное время, около 1.2 сек. на каждый вид. Поэтому была предложена следующая оптимизация. Каждому ненулевому значению индекса присваиваем максимальный вес, затем проверяем, есть ли рядом нулевое значение; если есть, добавляем в список и присваиваем значение 1. Затем осуществляем поиск значений, равных максимальному весу, только в соседних ячейках элементов из этого списка. Такую итерацию производим необходимое число раз. Данная оптимизация позволяет сократить время вычисления веса в 6-8 раз.
На рисунке 4 для одного вида модели «Змея» (а) показаны построенная карта весов по дистанции от края скана (б), а также гибридная карта весов с учетов всех весов: по освещению, углу и расстоянию до края скана (в), рассчитанная по формуле (1).
Рассчитав вес для каждого пикселя, построим финальную текстуру. Для каждого пикселя каждого треугольника вычисляем цвет по формуле
n
C = Е Wc, (2)
i = 0
где n - число видов; ci - исходный цвет с i-го вида; Wi - вес, который должен быть нормирован так, чтобы сумма всех весов для всех видов была равна 1. Результат текстурирования представлен на рисунке 2в.
Результаты
Для оценки эффективности предложенного метода проведены вычислительные эксперименты на реальных сценах, полученных с помощью сканера RangeVision 3D (см. http://www.swsys.ru/uploaded/ image/2017_2/2017-2-dop/9.jpg). Использование
многоядерности позволило увеличить скорость работы в среднем в 2,5 раза по сравнению с однопроцессорным вариантом. Результаты экспериментов отражены в таблице.
Сводная таблица результатов
Summary of results
Параметр Модель
Дед Змея
Количество треугольников 1,8 2,7
в исходной модели, млн
Количество видов 8 10
Время работы алгоритма 18 37
реконструкции, сек.
Время работы алгоритма 6 12
текстурирования, сек.
Количество треугольников в финальной модели, млн 0.3 0.6
Заключение
В работе представлен метод текстурирования триангуляционной трехмерной модели, построенной воксельным методом с зашивкой дыр. Тестирование на реальных данных показало, что предложенные алгоритмические решения и структура данных с использованием октодерева, индексации треугольников, вычисления гибридной весовой функции для каждой точки текстуры существенно повысили качество визуализации и производительность метода по сравнению с аналогами.
Работа выполнена при частичной финансовой поддержке РФФИ (гранты №№ 15-07-00341, 16-07-00350), Программы «Дальний Восток» (проект 15-1-4-011 о) и Программы Президиума РАН № 1.33П « Фундаментальные проблемы математического моделирования».
Литература
1. Ramamoorthi R., Arvo J. Creating generative models from range images. Proc. SIGGRAPH'99, 1999, pp. 195-204.
2. He X.J., Chen Y.H. A Haptics-guided hole-filling system based on triangular mesh. Computer Aided Design and Application. 2006, vol. 6, no. 3, pp. 711-718.
3. Jun Y. A piecewise hole filling algorithm in reverse engi-
neering. Computer-Aided Design. 2005, vol. 2, no. 37, pp. 263-270.
4. Curless B., Levoy M. A volumetric method for building complex models from range images. Proc. SIGGRAPH'96. 1996, pp. 303-312.
5. Davis J., Marschner S.R., Garr M., Levoy M. Filling holes in complex surfaces using volumetric diffusion. Proc. 1st Intern. Sympos. on 3D Data Processing, Visualization, and Transmission. Padua, Italy, 2005, pp. 428-438.
6. Бобков В.А., Кудряшов А.П. Воксельный метод построения триангуляционной поверхности по множеству видов // Информатика и системы управления. 2012. № 2. С. 31-38.
7. Кудряшов А.П., Черкашин А.С. Построение единой триангуляционной поверхности по набору видов с зашивкой дыр // Информатика и системы управления. 2015. N° 1. С. 36-40.
8. Gal R., Wexler Y., Ofek E., Hoppe H., Cohen-Or D. Seamless montage for texturing models. Computer Graphics Forum. 2009, vol. 2, no. 29, pp. 479-486.
9. Baumberg A. Blending images for texturing 3D models. Proc. British Machine Vision Conference (BMVC), 2002, pp. 112-126.
10. Alshawabkeh Y., Haala N. Automatic multi-image photo-texturing of complex 3D scenes. Proc. XVIII CIPA Int. Sympos., Torino, Italy, 2005, pp. 68-73.
11. Кудряшов А.П., Соловьев И.В. Создание единой текстурированной трехмерной модели по набору видов // Программные продукты, системы и алгоритмы. 2017. № 1. URL: http://swsys-web.ru/creating-a-textured-three-dimensional-model-on-a-set-of-species.html (дата обращения: 06.02.2017).
Software & Systems Received 07.02.17
DOI: 10.15827/0236-235X.030.2.286-290 2017, vol. 30, no. 2, pp. 286-290
TEXTURING OF 3D MODELS WITH FILLED HOLES
A.P. Kudryashov1, Ph.D. (Engineering), Junior Researcher, [email protected] I.V. Solovev 2, Postgraduate Student, [email protected]
1 Institute of Automation and Control Processes Far Eastern Branch of RAS, Radio St. 5, Vladivostok, 690041, Russian Federation
2 Institute of Applied Mathematics Far Eastern Branch of RAS, Radio St. 7, Vladivostok, 690041, Russian Federation
Abstract. The paper presents an automatic method for texturing three-dimensional computer models. The proposed method is based on the well-known voxel approach, according to which the resulting surface of the scene is obtained by combining a variety of views in the voxel space. Diffuse blurring of weighting function values in the voxel space is used to fill holes. Simple image projection results in visible seams on scan edges. To overcome this problem one normally needs to resort to highly computationally demanding methods. The proposed method of texturing offers a solution for these problems. The texturing algorithm is based on the blending of all available textures, taking into account the weight of each pixel in each triangle, as well the overlap and observability of these triangles. The algorithmic implementation of the method is optimized to improve computational performance of the method and the quality of a generated textured triangulation model. The algorithm of indexing of triangles makes use of a texture map for each view which allows reducing the amount of computation time and therefore to speed up reconstruction and texturing. The multi-core processing provided an additional increase in computational performance. Computational experiments were performed on real three-dimensional scene data obtained by a 3D scanner RangeVision. The experiments showed that the current algorithm is able to generate realistic textures in a short time for highly detailed models.
Keywords: texturing, voxel space, 3D reconstruction, triangulation mesh, volumetric method.
Acknowledgements. The work has been partially financially supported by RFBR (grant no. 15-07-00341, 16-07-00350), a program "Far East" (project 15-I-4-011 o) and the Program of the RAS Presidium no. I.33n "Fundamental problems of mathematical modeling ".
References
1. Ramamoorthi R., Arvo J. Creating generative models from range images. Proc. SIGGRAPH'99. 1999, pp. 195-204.
2. He X.J., Chen, Y.H. A Haptics-guided hole-filling system based on triangular mesh. Computer Aided Design and Application. 2006, vol. 6, no. 3, pp. 711-718.
3. Jun Y. A Piecewise hole filling algorithm in reverse engineering. Computer-Aided Design. 2005, vol. 2, no. 37, pp. 263-270.
4. Curless B., Levoy M. A Volumetric Method for Building Complex Models from Range Images. Proc. SIGGRAPH'96. 1996, pp. 303-312.
5. Davis J., Marschner S.R., Garr M., Levoy M. Filling holes in complex surfaces using volumetric diffusion. Proc. 1st Int. Symp. on 3D Data Processing, Visualization, and Transmission. Padua, Italy, 2005, pp. 428-438.
6. Bobkov V.A., Kudryashov A.P. A volumetric method for building triangulated surface from range images. Informatika i sistemy upravleniya [Information Science and Control Systems]. 2012, no. 2, pp. 31-38 (in Russ.).
7. Kudryashov A.P., Cherkashin A.S. Building a unified triangulated surface by type sets with filled holes. Informatika i sistemy upravleniya [Information Science and Control Systems]. 2015, no. 1 (43), pp. 36-40 (in Russ.).
8. Gal R., Wexler Y., Ofek E., Hoppe H., Cohen-Or D. Seamless montage for texturing models. Computer Graphics Forum. 2009, no. 29 (2), pp. 479-486.
9. Baumberg A. Blending images for texturing 3D models. British Machine Vision Conference - BMVC. 2002, pp. 112-126.
10. Alshawabkeh Y., Haala N. Automatic multi-image photo-texturing of complex 3D scenes. Proc. 18th CIPA Int. Symp. Torino, Italy, 2005, pp. 68-73.
11. Kudryashov A.P., Solovyev I.V. Creating a unified textured 3D type set model. Programmnye produkty, sistemy i algoritmy [Software Products, Systems and Algorithms]. 2017, no. 1. Available at: http://swsys-web.ru/creating-a-textured-three-dimensional-model-on-a-set-of-species.html (accessed February 6, 2017).