В.И. ДУЛЬКЕЙТ Научный руководитель – Р.Т. ФАЙЗУЛЛИН, д.ф.-м..н., профессор ВОССТАНОВЛЕНИЕ МОДЕЛИ ОБЪЕКТА

advertisement
В.И. ДУЛЬКЕЙТ
Научный руководитель – Р.Т. ФАЙЗУЛЛИН, д.ф.-м..н., профессор
Омский государственный университет им. Ф.М. Достоевского
ВОССТАНОВЛЕНИЕ МОДЕЛИ ОБЪЕКТА
ПО ЕГО СНИМКАМ
Во многих прикладных задачах связанных с распознаванием образов,
медициной, безопасностью и т.д. возникает необходимость в построении
модели объёмного тела (образца) по нескольким его снимкам, сделанным
с разных точек пространства. С одной стороны известно [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.
Download