Библиотека
|
ваш профиль |
Кибернетика и программирование
Правильная ссылка на статью:
Уржумов Д.В., Кревецкий А.В.
Архитектура генератора трехмерных сцен с группами точечных и малоразмерных объектов
// Кибернетика и программирование.
2016. № 6.
С. 20-29.
DOI: 10.7256/2306-4196.2016.6.21007 URL: https://nbpublish.com/library_read_article.php?id=21007
Архитектура генератора трехмерных сцен с группами точечных и малоразмерных объектов
DOI: 10.7256/2306-4196.2016.6.21007Дата направления статьи в редакцию: 02-11-2016Дата публикации: 09-11-2016Аннотация: Предметом исследования является архитектура генератора трехмерных сцен, содержащих группы точечных и малоразмерных объектов c координатными и импульсными шумами. Авторы исследуют способы построения иерархий классов программного комплекса исходя из поставленного требования интеграции алгоритмов построения и зашумления сцены. Анализируется построение универсального интерфейса для алгоритмов построения сцены, не обладающего свойством избыточности относительно классов-контейнеров для параметров и повторной реализацией идентичных алгоритмов для различных типов данных при сохранении возможности для варьирования входных параметров метода генерации. Универсальность интерфейса процедур генерации эталонов и интеграция с процедурами зашумления и проверки целостности данных разрешается за счет организации слабо связной иерархии на обобщенных функторах с применением списка типов. Выделены основные классы абстракций, необходимых для моделирования основных типов объектов со спецификациями параметров условий наблюдения для возможности анализа правильности последующего распознавания. Генератор отличается поддержкой точечных примитивов и их групп, стохастических моделей групповых объектов и искажений, расширяемостью типов моделей объектов и шумов, возможностью встраивания в программы пользователя для исследования эффективности методов распознавания. Ключевые слова: Моделирование 3D сцен, распознавание образов, распознавание изображений, групповые точечные объекты, группы малоразмерных объектов, анализ сцен, архитектура программного комплекса, иерархии классов, визуализация моделей, анализ эффективности распознаванияAbstract: The subject of the research is the architecture of the 3D scene generator containing point and small-sized object groups with coordinate and impulse noises. The authors examine methods of constructing software class hierarchies based on the set requirements for construction algorithm integration and noise contamination. The authors analyze the process of constructing a universal interface for scene algorithm construction which does not have the feature of being excessive in relation to container classes for parameters and repeated implementation of identical algorithms for different types of data while reserving a possibility to vary input parameters of the generation method. The universal nature of the interface for sample generation procedures and integration with noise contamination procedures and data integrity check are ensured through organizing weakly connected hierarchy based on generalized functors using a type list. The authors define the main classes of abstractions necessary for modeling the main types of objects that have parameter specifications of observing conditions for an opportunity to analyze the accuracy of further recognition. The generator has a particular feature to support point primitives and their groups, stochastic models of group objects and distortions, extensibility of object model types and noises and possibility of being integrated with user's programs in order to analyze efficiency of recognition methods. Keywords: 3D scene modeling, pattern recognition, image recognition, group point objects, small-sized object groups, scene analysis, software package architecture, class hierarchies, model visualization, recognition efficiency analysisВведение и постановка задачи Методы распознавания изображений объектов часто сводятся к выделению в наблюдаемом изображении множества характерных точек с последующим анализом параметров их групповых признаков [1]. Распознавание групповых точечных объектов (ГТО) имеет и самостоятельное значение, например в локации, когда размеры отдельных объектов соизмеримы с элементом разрешения системы [2, 3, 4]. С развитием техники регистрации и реконструкции 3D изображений вопросы разработки эффективных методов распознавания групповых точечных объектов становятся все более востребованными [1, 3]. Для синтеза и анализа алгоритмов распознавания ГТО, обоснования выбора того или иного подхода к распознаванию необходимо накопление статического материала в различных условиях наблюдения. В силу высокой стоимости проведения крупных серий натурных экспериментов целесообразно проводить сбор статистической информации на моделях трехмерных сцен. Необходимый элемент такой системы моделирования – это генератор сцен. Генератор сцен должен формировать реализации математических моделей изображений ГТО, отличающихся параметрами геометрических преобразований, случайными координатными шумами, фоном из ложных отметок импульсными и яркостными шумами, условиями наблюдения. Он должен иметь встроенный редактор эталонных описаний классов распознаваемых ГТО. В работе [3] обосновывается набор базовых математических моделей типовых классов групповых точечных объектов в пространствах различной размерности. Существует множество известных программ 3D моделирования, подобных 3ds MAX, Solidworks, Wings3D, Daz Studio, Open SCAD, AutoDesk 123D и др., однако они не поддерживают указанные модели объектов и шумовых искажений, не могут встраиваться в другие программы для автоматизации статистических испытаний. Цель работы Цель работы – реализовать структуру генератора трехмерных сцен, ориентированную на изображения из точечных (ТО) и малоразмерных (МРО) (соизмеримых с элементом разрешения) объектов и их групп с возможностью расширения типов моделей и встраивания в метапрограммы. Проектирование метаструктуры Существование различных типовых математических моделей групп точечных объектов приводит к необходимости использования различных алгоритмов их генерации. Для обеспечения простоты расширения генератора новыми моделями групп, целесообразно реализовать единый интерфейс алгоритма генерации и требовать реализации новых алгоритмов в точном соответствии с указанной в нем сигнатурой. Подобное решение серьезно затрудняет интеграцию алгоритмов зашумления в процедуры генерации, поскольку единый интерфейс накладывает ограничение на вариативность параметров. Особое значение этот недостаток приобретает при работе с 3D сценами, поскольку процесс их отрисовки проходит в несколько этапов, при этом генерация объектов и зашумления реализуются на одном этапе. Разрешить данное противоречие можно, инкапсулируя все множество параметров в единственном классе, экземпляры которого будут передаваться между порождающей процедурой и набором классов, отвечающим за взаимодействие с пользователем. Однако полученный класс примет вид избыточной структуры данных, содержащей пустые контейнеры для неиспользованных типов, а также значительное дублирование функционала методов для различных типов данных. Для трехмерной сцены масштаб подобной структуры данных вырастет соответственно вдвое, в силу реализации каждого метода и для двумерной и для трехмерной структуры. Решение подобного рода проблем основано на использовании шаблонных методов и структур данных, порождающих семейство типов для каждого шаблонного класса или метода. Во время вызова требуемой функции происходит специализация шаблонов требуемым значением. Таким образом, можно унификации класса, осуществляющего хранение параметров, что дает возможность хранить лишь необходимые данные, решая проблему пустых контейнеров. Шаблонные методы при использовании частичной специализации также позволят представить пользователю информацию о процедурах, применяемых при генерации сцены, в структурированном в соответствии с алгоритмом генерации виде. Это особенно удобно поскольку все многообразие типов параметров предстает перед пользователем в виде менее чем десяти различных видов элементов управления. Предложенное решение подвержено риску потери гибкости с увеличением числа передаваемых параметров. Для нейтрализации подобного риска целесообразно осуществлять генерацию иерархий, основанную на списках типов [5]. Проектирование архитектуры представления модели Поскольку типичная трехмерная сцена должна корректно моделировать множество условий наблюдения, таких как зависимость соотношение размеров изображения ближней и дальней стороны объекта при перспективном проецировании в зависимости от его удаленности и пространственной ориентации, зависимость интенсивности отраженного от объекта света от расположения источников освещения и многое другое, реализация подобных свойств с нуля нецелесообразна. Для реализации базовых свойств модели предполагается использовать библиотеку трехмерной графики OpenGL, реализующую механизм шейдерных функций для расчета освещенности, затенения, оптических свойств материала и многого другого Существенными недостатками библиотеки OpenGL являются:
Для компенсации указанных недостатков библиотеки OpenGL предполагается реализовать иерархию классов, в основе которой лежит абстракция, представляющая объект сцены. Этот класс должен содержать набор методов отображения всех точек и полигонов объекта относительно собственной системы координат. Центром такой системы может быть, например центр масс объекта [3]. Для размещения и отображения объекта в требуемом месте сцены, его класс должен содержать радиус-вектор от глобального начала координат сцены до локального начала координат объекта. Введение собственной системы отсчета позволит избежать расчета и ввода множества параметров точек для каждого объекта, осуществляя для одинаковых объектов единственный расчет в их локальных координатах. Проектирование системы сохранения данных Для сохранения сцены в виде изображения целесообразно использовать встроенный механизм библиотеки OpenGL. Он позволяет переопределить функцию отрисовки сцены в виде двоичного изображения, перенаправив вывод в файл. Сохранение объекта в виде аналитического представления происходит аналогично такому представлению для двухмерных объектов локационных изображений [3,7,8] в виде вектора радиус-векторов от локального начала координат до вершин поверхности объекта, но уже не на комплексной плоскости, а в трехмерном евклидовом или мнимой части кватернионного пространства. Яркостные характеристики объекта ассоциируются с вершинами средствами библиотеки OpenGL. Отдельно объект хранит шейдерную функцию, осуществляющую интерполяцию значений яркостных характеристик для точек плоскости, ограниченной вершинами. Для сохранения смоделированного множества сигналов сенсора, можно доопределить шейдерную функцию, таким образом, чтобы при наличии управляющего параметра она осуществляла конвертацию обрабатываемых значений в формат, используемый сенсором, и передавала результат в поток, формирующий буфер данных для записи в результирующий файл. Для повышения производительности шейдерной функции целесообразно использовать различные ее реализации в зависимости от параметра, тем самым переложив проверку параметра на менее требовательный к производительности поток управления. Описание результатов Рисунок 1 демонстрирует обобщенную диаграмму классов генератора. Код генератора написан на языке С++ c использованием контейнеров Qt. Пользовательский интерфейс генератора не является темой данной статьи, в то время как реализация генератора для 3D сцены будет подробно рассмотрена далее. Таким образом, подробности иерархии классов указанных подсистем на диаграмме замененны символом пакета классов. Рис. 1. Диаграмма классов генератора сцен с ГТО и МРО Классы QString и QList – стандартные контейнеры библиотеки Qt, представляющие собой структуры для описания строки и списка строк соответственно, в иерархии они используются для идентификации типов параметров. Метакласс «T» обозначает шаблонный класс, замещаемый при специализации кода параметрами соответствующего типа. Класс Scene иллюстрирует итоговое аналитическое представление сгенерированной сцены, для заданного числа измерений. Детальная реализация данного класса приведена на диаграмме описания редактора. Шаблонный класс ProcessType инкапсулирует процедуры, выполняемые с классами параметров при запросе на их обработку в алгоритме построения сцены. Класс TList представляет список типов. Он используется для унификации шаблонов с различным числом параметров с целью сохранения гибкости иерархии. Класс ProcedureData инкапсулирует значение параметров процедуры после их инициализации пользователем. Класс ProcedureInterface – интерфейс элемента управление, предоставленного пользователю для ввода значений параметров. Он содержит методы для установки допустимого диапазона параметров. Класс AbstractGenerator – интерфейс порождающей сцену процедуры. Он содержит объявление методов построения сцены, вывода списка процедур, установки параметров и запуска порождающей процедуры, которые будут реализованы множеством его классов-наследников. Класс GenerateController представляет собой контроллер, осуществляющий связь интерфейсов пользователя и генератора. Он реагирует на команды интерфейса пользователя и вызывает методы класса AbstractGenerator, результаты выполнения которых, передает для отображения пользователю. Пакет Generator<ProcessType, TList> обозначает множество спецификаций класса AbstractGenerator для различных наборов данных в TList. Они осуществляют специализированную обработку данных, переданных в параметрах списка типов TList и реализуют методы, объявленные в AbstractGenerator. Пакет UserInterface обозначает множество классов, представляющих элементы пользовательского интерфейса. Данные классы не имеют прямого взаимодействия с иерархией, реализующей решение поставленной задачи. Сигналы о запросах и изменении состояний элементов пользовательского интерфейса обрабатываются классом GenerateController. Диаграмма классов на рис. 2 иллюстрирует архитектуру редактора эталонных групп точечных и малоразмерных объектов. Рис. 2. Диаграмма классов, описывающая структуру редактора эталонов Использование шаблона позволяет применять различные типы данных при описании матриц и векторов и осуществлять быстрое преобразование типов на стадии компиляции. Класс MDSquareMatrix описывает квадратную матрицу задаваемой размерности и типа данных ее элементов. Класс представляет возможности получения элементов по индексам, а также умножения матрицы на число, другую матрицу либо вектор соответствующей размерности. Класс MDVector описывает вектор задаваемой размерности и типа данных его элементов. Класс предоставляет возможности получения элементов по индексам, построение нормалей в заданной плоскости по и против часовой стрелки, проверки параллельности и ортогональности с другим вектором. Задаваемая размерность классов матрицы и вектора реализована для удобства перехода от трехмерных пространственных координат к двумерным координатам шейдерных функций на плоскости. Класс Object реализует объект, расположенный на сцене. Он принимает в качестве параметров своего конструктора радиус-вектор от глобального начала координат к его локальному началу координат, а также функцию отрисовки. Класс предоставляет функционал отрисовки на заданной сцене, а также построения своего аналитического представления на основе полученных из функции отрисовки вершин. Подобная реализация класса позволяет получить аналитическое представление в случае, если форма объекта задана загружаемой трехмерной моделью, созданной в стороннем редакторе. Класс Scene реализует трехмерную сцену, позволяющую добавлять и отображать объекты, сохранять снимок сцены в виде двумерного изображения, либо аналитическом формате, загружать аналитическое представление сцены. Переменная размерность классов Object и Scene реализована для совместимости с аналогичными двумерными объектами комплекса Observer 1.0 [9, 10], генератора локационных сцен с группами малоразмерных объектов [7, 8], что в дальнейшем позволит упростить процедуру верификации сцены методами обработки и анализа локационных изображений. Класс OGLWidget является классом внутреннего представления OpenGL сцены, он содержит реализации методов позиционирования объектов, освещения сцены, расположения теней и итоговой отрисовки, переопределенные для реализации требований по сохранению данных, предъявленных к приложению. Класс Scene представляет реализацию поведения трехмерной сцены методами, описанными в классе OGLWidget. Класс наследует классы Scene и OGLWidget, реализует и специализирует их методы. На рис. 3 приведены примеры визуализации разных ракурсов 3D ГТО в виде астрономических объектов небесной сферы и точек поверхности манекена, полученные с помощью описанного редактора эталонных объектов. Рис. 3. Примеры визуализации ГТО Заключение Спроектирована архитектура генератора наблюдаемых трехмерных сцен с групповыми точечными и малоразмерными объектами типовых моделей с возможностью расширения типов. Генератор позволяет формировать эталонные изображения указанных типов объектов, размещать их произвольным образом в сцене с соответствующими геометрическими преобразованиями, вносить случайные искажения, выполнять визуализацию сцены в различных ракурсах и представляющих интерес проекциях. Описанные в работе архитектурные решения позволяют преодолеть проблемные ситуации, возникающие при проектировании генератора сцен с настраиваемыми параметрами зашумления. Применение связной иерархия классов позволяет избежать жестко структурированных наборов данных, обеспечив удобство расширения кода генератора новыми моделями групповых объектов, а также сократить расходы памяти на хранение пустых контейнеров. Использование иерархии, основанной на списках типов, позволяет предоставить проектировщику моделей наблюдаемых локационных изображений и разработчику процедур генерации сцен широкий набор готовых конструктивных элементов для снижения трудоемкости проектирования и предотвращения ошибок на этапе компиляции. Встроенный редактор позволяет: автоматизировать элементарные операции добавления удаления, а также варьирования параметров объектов и сцены; оперировать с объектами, а не атрибутами и таким образом скрыть элементарные операции, производимые при изменении параметров объектов, за интуитивно понятными операциями над объектом; сохранять данные об объектах в аналитическом и графическом виде. За счет использования в качестве прототипа созданного авторами ранее двумерного генератора локационных изображений с групповыми объектами достигнута компактность программного кода генератора трехмерных сцен и встраиваемость в программный комплекс статистических испытаний алгоритмов распознавания групповых точечных и малоразмерных объектов. Использование инструментария Qt при разработке генератора добавляет ему еще одно полезное качество – кроссплатформенность. Работа выполнена при финансовой поддержке РФФИ, проект № 16-01-00451 Библиография
1. Цифровая обработка видеоизображений / А.А. Лукъяница, А.Г.Шишкин. – М.: «Ай-Эс-Эс Пресс», 2009. – 518 с.
2. Введение в контурный анализ; приложения к обработке изображений и сигналов / Я.А. Фурман, А.В. Кревецкий, А.К. Передреев, и др.; Под ред. Я.А.Фурмана. – 2-е изд. – М.: ФИЗМАТЛИТ, 2003. – 592 с. 3. Точечные поля и групповые объекты / Я. А Фурман, А. А Роженцов, Р. Г. Хафизов, Д. Г. Хафизов, А. В. Кревецкий, Р. В. Ерусланов; под общ. ред. проф. Я. А. Фурмана. – М: ФИЗМАТЛИТ, 2014. – 440 с. 4. Кревецкий А.В. Инвариантные к форме обнаружение и пространственная локализация групп точечных объектов в трехмерном пространстве // Вестник МарГТУ. Радиотехнические и инфокоммуникационные системы. – Йошкар-Ола: МарГТУ, 2011. №1. – С. 47-53. 5. Александреску. А. Современное проектирование на C++. – М.: «Вильямс», 2002. – 336 с. 6. Программирование с использованием OpenGL / URL: http://www.opengl.org.ru/. 7. Уржумов Д.В., Кревецкий А.В. Специализированный графический редактор локационных изображений ландшафтных сцен с группами малоразмерных и точечных объектов // Вестник ПГТУ. Радиотехнические и инфокоммуникационные системы. – Йошкар-Ола: ПГТУ, 2012. №2 (16). – С. 24-29. 8. Уржумов Д.В., Кревецкий А.В. Свидетельство о государственной регистрации программы для ЭВМ № 2014661142 «Генератор локационных сцен, содержащих малоразмерные объекты, с настраиваемыми параметрами зашумления», заявка № 2014613518 от 21.04.2014 г, зарегистрировано в Реестре программ для ЭВМ 24.10.2014. 9. Кревецкий А.В.. Уржумов Д.В. Свидетельство о государственной регистрации программы для ЭВМ № 2014662372 «Комплекс тестирования алгоритмов различения групп малоразмерных объектов локационных изображений», заявка №2014660392 от 14.10.2014, зарегистрировано в Реестре программ для ЭВМ 28.11.2014. 10. Кревецкий А.В.. Уржумов Д.В. Свидетельство о государственной регистрации программы для ЭВМ № 2013619227 «Программный комплекс обработки изображений и распознавания объектов дистанционного зондирования земли «Observer 1.1», 2013, дата поступления заявки 06.08.2013 г, зарегистрировано в Реестре программ для ЭВМ 27.09.2013 г. References
1. Tsifrovaya obrabotka videoizobrazhenii / A.A. Luk''yanitsa, A.G.Shishkin. – M.: «Ai-Es-Es Press», 2009. – 518 s.
2. Vvedenie v konturnyi analiz; prilozheniya k obrabotke izobrazhenii i signalov / Ya.A. Furman, A.V. Krevetskii, A.K. Peredreev, i dr.; Pod red. Ya.A.Furmana. – 2-e izd. – M.: FIZMATLIT, 2003. – 592 s. 3. Tochechnye polya i gruppovye ob''ekty / Ya. A Furman, A. A Rozhentsov, R. G. Khafizov, D. G. Khafizov, A. V. Krevetskii, R. V. Eruslanov; pod obshch. red. prof. Ya. A. Furmana. – M: FIZMATLIT, 2014. – 440 s. 4. Krevetskii A.V. Invariantnye k forme obnaruzhenie i prostranstvennaya lokalizatsiya grupp tochechnykh ob''ektov v trekhmernom prostranstve // Vestnik MarGTU. Radiotekhnicheskie i infokommunikatsionnye sistemy. – Ioshkar-Ola: MarGTU, 2011. №1. – S. 47-53. 5. Aleksandresku. A. Sovremennoe proektirovanie na C++. – M.: «Vil'yams», 2002. – 336 s. 6. Programmirovanie s ispol'zovaniem OpenGL / URL: http://www.opengl.org.ru/. 7. Urzhumov D.V., Krevetskii A.V. Spetsializirovannyi graficheskii redaktor lokatsionnykh izobrazhenii landshaftnykh stsen s gruppami malorazmernykh i tochechnykh ob''ektov // Vestnik PGTU. Radiotekhnicheskie i infokommunikatsionnye sistemy. – Ioshkar-Ola: PGTU, 2012. №2 (16). – S. 24-29. 8. Urzhumov D.V., Krevetskii A.V. Svidetel'stvo o gosudarstvennoi registratsii programmy dlya EVM № 2014661142 «Generator lokatsionnykh stsen, soderzhashchikh malorazmernye ob''ekty, s nastraivaemymi parametrami zashumleniya», zayavka № 2014613518 ot 21.04.2014 g, zaregistrirovano v Reestre programm dlya EVM 24.10.2014. 9. Krevetskii A.V.. Urzhumov D.V. Svidetel'stvo o gosudarstvennoi registratsii programmy dlya EVM № 2014662372 «Kompleks testirovaniya algoritmov razlicheniya grupp malorazmernykh ob''ektov lokatsionnykh izobrazhenii», zayavka №2014660392 ot 14.10.2014, zaregistrirovano v Reestre programm dlya EVM 28.11.2014. 10. Krevetskii A.V.. Urzhumov D.V. Svidetel'stvo o gosudarstvennoi registratsii programmy dlya EVM № 2013619227 «Programmnyi kompleks obrabotki izobrazhenii i raspoznavaniya ob''ektov distantsionnogo zondirovaniya zemli «Observer 1.1», 2013, data postupleniya zayavki 06.08.2013 g, zaregistrirovano v Reestre programm dlya EVM 27.09.2013 g. |