В.И. ДУЛЬКЕЙТ Научный руководитель – Р.Т. ФАЙЗУЛЛИН, д.ф.-м..н., профессор Омский государственный университет им. Ф.М. Достоевского ВОССТАНОВЛЕНИЕ МОДЕЛИ ОБЪЕКТА ПО ЕГО СНИМКАМ Во многих прикладных задачах связанных с распознаванием образов, медициной, безопасностью и т.д. возникает необходимость в построении модели объёмного тела (образца) по нескольким его снимкам, сделанным с разных точек пространства. С одной стороны известно [1], что точное решение невозможно, но, во-первых, имеется не просто набор проекций, а снимки сделанные при определённой, известной модели освещения, вовторых, на практике зачастую требуется, в известной мере, приближённое решение. Первая естественная идея - получить модель, которая при съёмке будет иметь те же очертания, что и оригинал. Несмотря на свою простоту, очень действенный метод особенно при большом количестве снимков и относительно простой форме образца. Рассмотрим искомую модель как набор вокселей [2] (элементов объёма), которые полностью и равномерно заполняют некоторую начальную форму (например, куб способный вместить в себя образец). Пусть каждый воксель обладает определённым набором атрибутов. В простейшем случае имеется один единственный атрибут булевого типа exists, который истинен, в случае если данный воксель входит в модель. Воксельную модель можно представлять как куб, составленный из маленьких кубов или сфер. При этом количество вокселей на единицу объёма (по аналогии с растрами) будем называть разрешением модели. Теперь формально условие задачи может быть поставлено следующим образом. Имеется набор растровых изображений (снимков). О каждом снимке имеется дополнительная информация, например: координаты и параметры камеры, сделавшей снимок, сведения об источниках света и возможно сведения о материале образца. Имеется также воксельная модель достаточного размера и разрешения. Требуется расставить значения атрибута exists у вокселей модели так, чтобы он принимал значение «ложь» только для вокселей, пересечение которых с образцом пусто. Будем попиксельно сканировать каждый снимок. Если очередной пиксель не принадлежит изображению образца (является пикселем фона), то, используя дополнительную информацию о снимке, строим луч от пикселя до камеры, и «выключаем» все воксели, пронизываемые этим лучом, т.е. выставляем атрибут exists в значение «ложь» (по умолчанию он равен «истина»). Для построения луча достаточно иметь следующую информацию о снимках: координаты точки O, в которой расположена камера; координаты точки C, соответствующей центру снимка; вектор up , указывающий на поворот камеры относительно оси OC; вертикальный угол обзора камеры α; число asp - отношение горизонтального угла обзора камеры к α; размеры растра снимка w – ширина, h – высота. Пусть A точка лежащая в плоскости снимка и соответствующая его левому верхнему углу (см. Рис.1). ВекA x тор x указывает, насколько смещается y точка в плоскости снимка при переходе к соседнему по горизонтали пикселю. С Аналогичный смысл имеет вектор y . up 2 Тогда луч, соответствующий пикселю с O координатами u, v исходит из точки O Рис.1. Построение луча для пикселя снимка и проходит через точку B, радиус вектор которой имеет следующий вид: (1) rB rA u x v y Таким образом, задача сводится лишь к нахождению координат точки A и векторов x , y . Не вдаваясь в подробности, приведём один из вариантов решения этой задачи: пусть a up OC , b OC a (знак « » - векторное произведение), тогда радиус-вектор точки A имеет вид: OC tg 2 rA rc a OC tg b asp 2 (2) а вектора выражаются следующим образом: OC tg OC tg 2 2 , y 2 b x 2 a h asp w (3) Следующий этап заключается в дополнительной обработке модели основанной уже на свойствах материала и знании модели освещения. Рассмотрим наиболее простой случай, когда образец сделан из однородного материала. Добавляем в воксели ещё один атрибут векторного типа – «нормаль». Если он установлен (отличен от нуля), то подразумевается, что данный воксель является пограничным, т.е. имеет соседей со сброшенным атрибутом exists. А сам вектор указывает наиболее вероятное направление нормали к поверхности модели в данной точке. Сканируя снимки, будем рассматривать только пиксели, принадлежащие образцу. Для каждого такого пикселя, описанным выше способом, можно построить луч и найти пограничные воксели, пронизываемые этим лучом. Зная координаты центров вокселей, координаты и характеристики источников света и камеры, оптические свойства материала и цвет пикселя на снимке, можно построить список возможных нормалей. Теперь остаётся только «сшить» нормали соседних вокселей между собой, т.е. для каждого вокселя требуется выбрать одну нормаль с тем, чтобы она составляла с соседними нормалями углы не больше некоторого заданного значения (это лишь одно из возможных условий сшивки). Рис.2. Слева на право: снимок объекта, фрагмент работы алгоритма контурного отсечения, фрагмент работы алгоритма учитывающего модель освещения Обратим внимание на то, что в процессе сшивки возможна ситуация, когда для очередного вокселя не удаётся подобрать нормаль, удовлетворяющую всем условиям. Это означает, что часть вокселей в данной окрестности не принадлежат образцу и их необходимо «удалить». Стратегия удаления вокселей определяется алгоритмом «сшивки». Это может быть просто рекурсивный поиск с возвратом и удалением вокселей вплоть до некоторой конечной глубины, или более сложные алгоритмы, учитывающие глобальные свойства образца, такие как, например, алгоритмы нейронных сетей и др. На рисунке 2 приведены фрагменты работы алгоритмов на простом тестовом примере восстановления сферы по одному снимку. Список литературы 1. Степанов В.Н. Определение выпуклых тел по проекционным функциям // Математические структуры и моделирование. 2003, N.12. С.58-69 2. Порев В. Компьютерная графика. СПб.: BHV, 2004.