Построение трёхмерной модели по двумерному изображению с

advertisement
Построение трёхмерной модели по двумерному изображению с лазерным «зайчиком».
Для 3D сканера небольших предметов изготавливается прямой объёмный угол («полящика») из
трёх соединённых по границам квадратов белого картона (пенопласта) разумного размера (500
мм на 500 мм например). Плоскости квадратов ориентированы в трёх взаимно перпендикулярных
плоскостях.
Внутрь этого угла будем ставить сканируемый предмет на вертящемся на заданные углы подносе.
Вводится система координат, связанная с объёмным углом. Удобно начало координат О
поместить в вершину угла, а оси OX, OY, OZ направить по прямым, являющимся пересечением
плоскостей.
Ниже на рисунке представлена эта система координат в трёхгранном прямом угле. Для
наглядности на каждом квадрате проведены дополнительные отрезки, параллельные
координатным осям.
Z
B
C
O
X
Y
A
Плоскость XOY квадрата OXAY горизонтальна, а две другие XOZ и YOZ квадратов ZOXB и ZOYC
вертикальны.
Перед трёхгранным углом закрепляется неподвижно веб-камера. Желательно сделать так, чтобы
изображение угла занимало весь кадр.
Изображение трёхгранного угла получается на плоской матрице камеры. Ниже представлен
пример разбиения изображения трёхгранного угла на пиксели.
Z
B
C
O
X
Y
A
Изображение горизонтального квадрата XOYA имеет вид параллелограмма (или
четырёхугольника, если быть точнее).
Каждый пиксель изображения имеет координаты. Пикселям, отвечающим изображениям точек O,
X, Y, Z, A, B, C соответствуют координаты в реальном пространстве, обозначение которых в
дальнейшем изложении перечисленные в таблице ниже.
№ п/п
Имя
точки
Координаты на изображении
Горизонт.
Вертик.
пиксель
пиксель
1
O
O1
O2
2
X
X1
X2
3
Y
Y1
Y2
4
A
A1
A2
5
Z
Z1
Z2
6
B
B1
B2
7
C
C1
C2
Xmax, ymax zmax – 500 мм предположительно
Координаты в реальном пространстве
X, мм
Y, мм
Z, мм
Ox=0
Xx =xmax
Yx =0
Ax=xmax
Zx =0
Bx=xmax
Cx=0
Oy=0
Xy = 0
Yy = ymax
Ay=ymax
Zy =0
By=0
Cy=ymax
Oz=0
Xz = 0
Yz =0
Az =0
Zz=zmax
Bz=zmax
Cz=zmax
Процесс назначения пикселям, содержащим изображения точек, их координаты в трёхмерном
пространстве, видимо, следует назвать привязкой камеры. Если сдвинуть камеру относительно
нашего трёхгранного угла, придётся процедуру привязки повторять.
После привязки каждому пикселю, лежащему на изображении одного из трёх четырёхугольников
OXAY, OXBZ, OYCZ, можно поставить в соответствие четырёхугольник на одной из трёх плоскостей.
А центру пикселя – точку на одной из плоскостей.
Оператор использует лазер с развёрнутым в плоскость лучом. Оператор лазера водит лазером по
объекту так, чтобы лазерный зайчик всегда представлял собой два отрезка DE и HK двух прямых
на двух взаимно перпендикулярных плоскостях, а между ними – след FG лазера на сканируемом
предмете. Форма его зависит от формы сканируемого объекта. Если предмета нет, отрезки
сходятся в одной точке V на оси OZ. Оператор должен водить лазером так, чтобы следы типа FG с
течением времени покрыли более или менее равномерно всю поверхность сканируемого
предмета, обращённую к камере. После этого предмет поворачивают и делают сканирование
другого бока.
Z
B
C
V
E
H
G
F
K
D
O
X
Y
A
Алгоритм обработки каждого кадра изображения (скана) выглядит следующим образом.
1. Программа выделяет (по цвету, по миганию с определённой частотой, отфильтровывает по
цветовым фильтром) на кадре точки, являющиеся пересечением лазерной плоскости с
плоскостями картона и с объектом. Делает из них цепочку (или две или три отдельные
цепочки) пикселей толщиной в один пиксель желательно.
2. Программа выделяет самые правый и левый прямолинейные участки DE и HK. В
дальнейшем она трактует их как следы пересечения лазерной плоскости с координатными
плоскостями XOZ и YOZ. Программа выделяет также участок FG , содержащий точки на
поверхности объекта. Если такого участка нет, и прямолинейные участки пересекаются в
точке на оси OZ (точка V), этот кадр отбраковывается как не содержащий информацию об
объекте сканирования.
3. Программа по изображениям отрезков DE и HK восстанавливает положение лазерной
плоскости, а с помощью этой информации по изображению участка FG восстанавливает
координаты его точек в трёхмерном реальном пространстве.
Пункт 3. Восстановление трёхмерных координат по изображению
Допустим, мы хотим восстановить трёхмерные координаты точки P, лежащей на плоскости XOZ.
B
C
P
O
X
Y
A
Ясно, что Py=0, а две другие координаты надо определить. Если мы найдём пару чисел (α,β) таких,
что для векторов на изображении выполняется равенство
(1)
то кажется очевидным соотношение
(2)
Приближённое соотношение (2) работает в случае, когда расстояния от камеры до всех точек
системы (трёхгранного угла и предмета в нём) несильно отличаются друг от друга. Например, если
камера находится на расстоянии 5000 мм от системы размером 500 на 500 на 500 мм. Из-за
явления перспективы масштабный множитель в принципе меняется, изображения далёкого
предмета меньше, чем того же предмета, расположенного ближе. Явлением перспективы мы
пользовались, когда создавали дальномер. Для преобразования координат изображения точки в
координаты её самой можно написать более точное выражение, но не сейчас.
Векторное уравнение на плоскости (1) относительно двух неизвестных (α,β) эквивалентно системе
из двух уравнений:
(3)
Её решение единственно и выражается формулой (из линейной алгебры)
(4)
(5)
Определитель (детерминант) – это известная стандартная функция квадратной матрицы. Для
матрицы 2 на 2 детерминант есть произведение чисел на главной диагонали (лево верх * право
низ) минус произведение чисел на побочной диагонали (право верх *лево низ). При перестановке
двух столбцов местами определитель меняет знак. То же при перестановке строк. Поэтому
внимательно.
Написал формулу через определитель, потому что её так проще запоминать. В знаменателе всегда
определитель матрицы коэффициентов при неизвестных. Вверху то же самое, но один из
столбцов коэффициентов заменяется столбцом из правых частей уравнений. Если заменяемый
столбец соответствует коэффициентам при первой неизвестной (при α), то получается значение
этой неизвестной α.
Если при вычислении окажется, что
, значит, изображение точки P находится вне
четырёхугольника OXBZ. Это признак, что точка P принадлежит другому четырёхугольнику. Ведь
четырёхугольник изображает положительный квадрант плоскости (XOZ).
Итак, по выражениям (4-5) находим пару чисел (α,β), а по выражениям (2) – координаты точки P в
реальном трёхмерном пространстве.
Аналогично получается для точки Q на четырёхугольнике OZCY.
Z
B
C
Q
O
X
Y
A
Ясно, что Qx=0, а две другие координаты надо определить. Если мы найдём пару чисел (α,β) таких,
что для векторов на изображении выполняется равенство
(6)
то кажется очевидным соотношение
(7)
Векторное уравнение (6) на плоскости относительно двух неизвестных (α,β) эквивалентно системе
из двух уравнений:
(8)
Её решение единственно и выражается формулой (из линейной алгебры)
(9)
(10)
Если при вычислении окажется, что
, значит, изображение точки Q находится
вне четырёхугольника OZCY. Это признак, что точка Q принадлежит другому четырёхугольнику.
Итак, по выражениям (9-10) находим пару чисел (α,β), а по выражениям (7) – координаты точки Q
в реальном трёхмерном пространстве.
Аналогично надо действовать при поиске координат очки на горизонтальной плоскости (XOY).
Выше описанным способом можно найти координаты 4 точек D, E, H, K прямолинейных участков.
Z
B
C
V
E
H
G
F
K
D
O
X
Y
A
Далее в каждой из плоскостей (XOZ) и (YOZ) можно отрезки прямых продолжить до пересечения с
осью (OZ) и найти координату точки V (0,0,Vz) в реальном пространстве и пиксель (V1, V2) на
изображении, куда она должна попасть.
Фактически продолжения прямолинейных участков могут пересечься с осью Z в слегка разных
местах. Это эффект неточного проведения прямых через пиксели. Более точный результат будет
достигнут, если точку V определять по самому длинному отрезку из двух.
Далее с использованием координат точек D, V, K можно построить уравнение плоскости,
проходящей через эти три точки.
Удобно уравнение плоскости представить в векторной форме. Радиус-вектор произвольной точки
R лазерной плоскости в трёхмерном пространстве может быть представлен в виде разложения по
двум векторам, содержащимся в плоскости лазера:
(11)
Или
(11a)
Z
B
C
V
E
H
R G
F
D
K
O
X
Y
A
Это разложение (11) каждой точке плоскости ставит в соответствие пару чисел (, ). Для точек,
находящихся на кривой FG, нам эти пары надо просто найти. Найти пару чисел (, ) можно по
изображениям. Ведь для изображений векторов плоскости справедливо такое же разложение
(11a). Очевидно (для первокурсника технического вуза), что
(12)
(13)
А координаты точки R в трёхмерном пространстве находим из (11) с использованием координат
входящих в него точек в реальном трёхмерном пространстве и чисел (, ) , найденных по (12 –
13).
Download