Научная статья на тему 'СОВМЕЩЕНИЕ ТРЕХМЕРНЫХ ОБЛАКОВ ТОЧЕК. ИТЕРАТИВНЫЙ АЛГОРИТМ БЛИЖАЙШИХ ТОЧЕК'

СОВМЕЩЕНИЕ ТРЕХМЕРНЫХ ОБЛАКОВ ТОЧЕК. ИТЕРАТИВНЫЙ АЛГОРИТМ БЛИЖАЙШИХ ТОЧЕК Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
3D-модель / трехмерные облака точек / алгоритм жесткой регистрации / алгоритм итеративной ближайшей точки / 3D model / three-dimensional point clouds / rigid registration algorithm / iterative nearest point algorithm

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Крючкова Татьяна Николаевна, Ефимов Алексей Игоревич

В данной статье рассмотрен процесс регистрации облаков точек, в частности алгоритм жесткой регистрации трехмерных облаков. Описана программная реализация итеративного алгоритма совмещения трехмерных облаков точек.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Крючкова Татьяна Николаевна, Ефимов Алексей Игоревич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

POINT-CLOUD SUPERIMPOSITION. ITERATIVE CLOSEST POINT ALGORITHM

This article discusses the process of registering point clouds, in particular, the algorithm of rigid registration of three-dimensional clouds. A software implementation of an iterative algorithm for combining three-dimensional point clouds is described.

Текст научной работы на тему «СОВМЕЩЕНИЕ ТРЕХМЕРНЫХ ОБЛАКОВ ТОЧЕК. ИТЕРАТИВНЫЙ АЛГОРИТМ БЛИЖАЙШИХ ТОЧЕК»

7. Комбинированная математическая модель внутренней и промежуточной баллистики авиационного артиллерийского оружия / А.Б. Бабаджанов, И.А. Подкопаев, А.В. Подкопаев, В.И. Должиков // Известия Тульского государственного университета. Технические науки. 2022. Вып. 4. С. 177 - 185.

8. 30 мм патрон с беспламенным порохом с осколочно-фугасно-зажигательным снарядом и взрывателем АГ-30Д к пушке ГШ-6-30. Техническое описание и инструкция по эксплуатации. 1984. 24 с.

9. Одноствольная авиационная пушка 30 мм ГШ-301. Руководство по технической эксплуатации. Ч. 1. Общие сведения о пушке, боеприпасах и звеньях патронной ленты, принцип действия, конструкция и принципиальная электрическая схема пушки. Режимы стрельбы. 9-А-4071К.00.000-01РЭ, 1986, 17 с.

10. Алферов В.В. Конструкция и расчет автоматического оружия. М.: Машиностроение, 1977. 248 с.

Подкопаев Илья Александрович, адъюнкт, [email protected], Россия, Воронеж, Военно-воздушная академия имени профессора Н.Е. Жуковского и Ю.А. Гагарина (г. Воронеж),

Подкопаев Александр Владимирович, канд. техн. наук, доцент, профессор, [email protected], Россия, Воронеж, Военно-воздушная академия имени профессора Н.Е. Жуковского и Ю.А. Гагарина (г. Воронеж),

Должиков Василий Иванович, канд. техн. наук, доцент, начальник кафедры, [email protected], Россия, Воронеж, Военно-воздушная академия имени профессора Н.Е. Жуковского и Ю.А. Гагарина (г. Воронеж)

DECOMPOSITION MATHEMATICAL MODEL OF A SMALL-CALIBER ARTILLERY SHOT I.A. Podkopaev, A.V. Podkopaev, V.I. Dolzhikov

A formalization of the physical processes associated with the acceleration of a projectile in a small-caliber artillery barrel is presented, which separates in detail the forms of the initial data, the type of decision rules for the main problem of internal ballistics and their sequence based on the specification of the gas-dynamic parameters of powder gases. Particular blocks of the proposed decompositional mathematical model of internal ballistics are grouped into a compact form, allowing their matching with sequential abstraction of the adiabatic expansion of gases in the barrel. Considerable attention is paid to assessing the accuracy of the model, taking into account the priority of the normalized information contained in the operational documentation for the object of study.

Key words: gas state parameters, gunpowder combustion law, assumption, grouping of parameters, Runge-Kutta

method.

Podkopaev Ilya Aleksandrovich, adjunct, [email protected], Russia, Voronezh, Air Force academy named after professor N.E. Zhukovsky and Y.A. Gagarin (Voronezh),

Podkopaev Aleksandr Vladimirovich, candidate of technical sciences, docent, professor, [email protected], Russia, Voronezh, Air Force academy named after professor N.E. Zhukovsky and Y.A. Gagarin (Voronezh),

Dolzhikov Vasily Ivanovich, candidate of technical sciences, docent, head of chair, [email protected], Russia, Voronezh, Air Force academy named after professor N.E. Zhukovsky and Y.A. Gagarin (Voronezh)

УДК 004.932

DOI: 10.24412/2071-6168-2023-11-203-204

СОВМЕЩЕНИЕ ТРЕХМЕРНЫХ ОБЛАКОВ ТОЧЕК. ИТЕРАТИВНЫЙ АЛГОРИТМ

БЛИЖАЙШИХ ТОЧЕК

Т.Н. Крючкова, А.И. Ефимов

В данной статье рассмотрен процесс регистрации облаков точек, в частности алгоритм жесткой регистрации трехмерных облаков. Описана программная реализация итеративного алгоритма совмещения трехмерных облаков точек.

Ключевые слова: 3D-модель, трехмерные облака точек, алгоритм жесткой регистрации, алгоритм итеративной ближайшей точки.

В настоящее время проблема совмещения трехмерных облаков точек является довольно распространенной, так как данные методы широко используются в создании 3D-моделей, что, в свою очередь, применяется в различных сферах человеческой жизни: в кинематографе, медицине, архитектуре, метрологии, компьютерном моделировании и так далее.

Совмещение трехмерных облаков точек обусловлено так называемой регистрацией облаков точек. Схема процесса регистрации представлена на рисунке 1.

Существует большое количество алгоритмов для данной регистрации. Среди них особо выделяются следующие:

1. Алгоритм жесткой регистрации;

2. Алгоритм нежесткой регистрации.

Процесс регистрации

Рис. 1. Процесс регистрации облаков точек

Алгоритм жесткой регистрации построен на использовании жесткого преобразования, отображающего одни точки в другие. Данное преобразование относится к преобразованиям евклидового пространства. Оно сохраняет евклидово расстояние между каждой парой точек, и, таким образом, в ходе правильного преобразования объект должен сохранить свою форму. К жестким преобразованиям относятся сдвиги, повороты, отражения или любая их последовательность. Отражения иногда исключают из определения жесткого преобразования, так как требуется, чтобы преобразование также сохраняло одну сторону объекта в евклидовом пространстве (например, чтобы левая рука внезапно не стала правой рукой и т.д.).

Все жесткие преобразования являются примерами аффинных преобразований. Множество всех жестких преобразований представляет собой математическую группу, так называемую евклидовую группу, обозначаемую Е(п) для п-мерных евклидовых пространств. Множество собственных жестких преобразований называется специальной евклидовой группой, с обозначением БЕ(п).

Жесткое преобразование формально определяется, как преобразование, которое при воздействии на любой вектор V создает преобразованный вектор Т(у) (1):

Т (и) = Яи +1, (1)

где ЯТ=Я'1 (т.е. Я - ортогональное преобразование), а 1 - вектор, дающий перевод начала координат.

Правильное жесткое преобразование имеет, кроме того,

det(Я) = 1,

что означает, что Я не создает отражения и, следовательно, представляет собой вращение (ортогональное преобразование с сохранением ориентации).

Пример использования алгоритма жесткой регистрации представлен на рисунке 2.

Рис. 2. Пример использования алгоритма жесткой регистрации

В алгоритм жесткой регистрации входит такой метод, как «итеративная ближайшая точка» (ICP - Iterative Closest Point) [1, 2].

Итеративная ближайшая точка - алгоритм, используемый для регистрации облаков точек. ICP часто используется для реконструкции 2D или 3D поверхностей из полученных разрозненных отсканированных изображений, для локализации роботов и достижения оптимального планирования движения (например, когда привод колес ненадежен из-за скользкой местности) и т.д. Его цель состоит в том, чтобы найти такое преобразование, которое минимизирует среднеквадратичное евклидово расстояние между соответствующими точками.

В алгоритме итеративной ближайшей точки (итеративной соответствующей точке) одно облако точек -эталон (цель) - остается фиксированным, в другое - исходное - преобразуется для наилучшего соответствия эталону. Алгоритм итеративно пересматривает преобразование (комбинацию переноса и поворота), необходимое для минимизации метрики ошибки, обычно расстояния от источника до облака опорных точек. ICP - один из широко используемых алгоритмов для совмещения трехмерных моделей с учетом исходного предположения о требуемом жестком преобразовании.

Алгоритм итеративной ближайшей точки отличается от таких алгоритмов, как алгоритм Кабша [3] и других решений ортогональной задачи Прокруста (задачи матричной аппроксимации в линейной алгебре) тем, что алгоритм Кабша требует соответствия между наборами точек в качестве входных данных, а итеративный алгоритм ближайшей точки рассматривает соответствие как переменную, которую необходимо подвергнуть оценке.

Входные данные: эталонное и исходное облака точек (сцена / модель), начальная оценка преобразования для выравнивания источника с эталоном (необязательное условие), критерии остановки итераций (достаточная точность).

Выход: уточненное преобразование.

Шаги алгоритма итеративной ближайшей точки:

1. Для каждой точки (из всего набора вершин, обычно называемого плотным, или выборки пар вершин из каждой модели) в исходном облаке точек сопоставить ближайшую точку в облаке опорных точек (или выбранном наборе);

2. Оценить комбинацию поворота и переноса, используя среднеквадратичный метод минимизации метрики расстояния от точки до точки, который лучше всего выровняет каждую исходную точку с ее сопоставлением, найденным на предыдущем этапе. Данный шаг также может включать взвешивание точек и отбрасывание лишнего до выравнивания;

3. Преобразовать исходные точки, используя полученное преобразование;

4. Повторить шаги (повторно связать точки и т.д.).

Структура метода 1СР представлена на рисунке 3.

Из рисунка 3 можно выделить, что один из наборов данных - модель, другой - сцена. 1СР начинает работу с заданного начального преобразования, а затем продолжает итерацию в два последовательных шага. Сначала точки сцены обрабатываются с использованием текущего преобразования. После этого пары соответствий вычисляются с использованием точек сцены и модели. В конце каждой итерации и с использованием информации о паре соответствий вычисляется преобразование, которое наилучшим образом показывает соответствия.

Описание алгоритма 1СР. Реализация алгоритма 1СР состоит в математическом и дальнейшем программном анализе входных данных и полученной совмещенной трехмерной модели [5].

Для алгоритма регистрации используются следующие представления геометрических данных:

1. наборы точек;

2. наборы линейных сегментов (полилинии);

3. неявные кривые: ^ (х, у, ¿) = 0;

4. параметрические кривые: (х(и), у(и), г(и));

5. наборы треугольников (граненые поверхности);

6. неявные поверхности: g(x,y,z) = 0;

7. параметрические поверхности: (х(и,у), у(и,у), г(и,у)).

В описании алгоритма фигура «данных» Р перемещается (регистрируется, позиционируется) так, чтобы наилучшим образом соответствовать фигуре «модели» X. Данные и форма модели могут быть представлены в любой из допустимых форм. В данном случае форма данных должна быть разложена на набор точек. Если форма данных не находится в форме набора точек, то действовать надо следующим образом: точки, которые будут использоваться для наборов треугольников и линий, будут являться вершинами и конечными точками соответственно; если форма данных имеет форму поверхности или кривую, то используются вершины и конечные точки приближения «треугольник / линия». Количество точек в форме данных будет обозначено, как Ар.

Пусть А - количество точек, отрезков или треугольников, входящих в форму модели. Будет обозначена метрика расстояния d между отдельной точкой данных р и формой модели X (2).

d(p, X) = minix — pll (2)

xeXn (2)

Ближайшая точка в X, которая дает минимальное расстояние y , обозначается d(p, y) = d(p, X), где

y £ X. Вычисление ближайшей точки - это O(Nx), наихудший случай с ожидаемыми затратами log(Nx) . Когда вычисление ближайшей точки (от p до X) выполняется для каждой точки в P, этот процесс является наихудшим случаем O(NpNx). Пусть Y обозначает результирующий набор ближайших точек, и пусть C - оператор ближайшей точки (3).

Y = C(P, X) (3)

Учитывая результирующий соответствующий набор точек Y, регистрация методом наименьших квадратов вычисляется по формуле (4).

(q, d) = Q(P,Y) (4)

Далее положения набора точек формы данных обновляются с помощью P = q(P) .

Формулирование алгоритма ICP. Задан набор точек P с Np точками {pl} из формы данных и формы модели X (с поддерживающими геометрическими примитивами: точками, линиями или треугольниками).

Итерация инициализируется установкой Po = P, qo = [1,0,0,0,0,0,0]'1 и k=0. Векторы регистрации определяются относительно исходного набора данных P0 таким образом, чтобы окончательная регистрация представляла собой полное преобразование. Шаги 1, 2, 3 и 4 применяются до сходимости в пределах допуска т. Вычислительная стоимость каждой операции указана в скобках [7].

1. Вычисление ближайшей точки: Yk = C(Pk,X) (вычислительная стоимость: O(NpNx) в худшем случае, O(Np logNx) (среднее значение).

2. Вычисление регистрации: (qk,dk) = Q(Pq,Yq) (стоимость: O(Np)).

3. Применение регистрации: Pk+1 = qk(Pq) (стоимость: O(Np)).

4. Завершение итерации, когда изменение среднеквадратичной ошибки будет меньше порога т > 0, задающего желаемую точность регистрации: dk — dk+1 < Т.

Если требуется безразмерный порог, то можно заменить т на т^tr(^ x) , где квадратный корень из следа

ковариации формы модели указывает приблизительный размер формы модели.

Реализация алгоритма итеративной ближайшей точки. Программная реализация по данному алгоритму выполнена на языке Python [8].

Реализация состоит из двух частей: программы «icp», в которой прописаны основные функции, а также входные и выходные переменные, и программы «main», где созданные функции запускаются. Рассмотрим программу «icp». Основная функция IterativeClosestPoint, принимающая входные данные: исходную точку, конечную точку и т.

def IterativeClosestPoint(source_pts, target_pts, tau=10e-6):

Перед циклом итераций вводим изначальный номер итерации, равным нулю; текущую току, которой присваиваем значение исходной точки; значение среднеквадратичной ошибки, равной нулю; вектор перевода и матрицу вращения.

k = 0 #номер итерации

current_pts = source_pts.copy() #текущая точка lastrmse = 0 #среднеквадратичная ошибка t = np.zeros((3, 1)) #вектор перевода R = np.eye(3, 3) #матрица вращения

Затем начинается цикл итераций, состоящий из четырех шагов, описанных выше: вычисление ближайшей соседней точки, вычисление и применение регистрации, вычисление нового значения среднеквадратичной ошибки. while True:

neigh_pts = FindNeighborPoints(current_pts, target_pts) #вычисление ближайшей соседней точки (R, t) = RegisterPoints(source_pts, neigh_pts) #вычисление регистрации current_pts = ApplyTransformation(source_pts, R, t) #применение регистрации rmse = ComputeRMSE(current_pts, neigh_pts) #вычисление новой среднеквадратичной ошибки Далее ставим условие на окончание итерации: если изменение среднеквадратичной ошибки будет меньше порога т > 0. После обновляем значения номера итерации и значение среднеквадратичной ошибки. if np.abs(rmse - last rmse) < tau: #условие завершения итерации break

last rmse = rmse #присвоение нового значения ошибки k = k + 1 #счетчик итераций return (R, t, k)

После описания алгоритма ICP идет описание функций, участвующих в работе данного алгоритма. Разберем их:

1. Поиск и вычисление ближайшей соседней точки (на основе KD дерева (KD дерево - структура данных с разделением пространства для организации точек в k-мерном пространстве)):

# функция для поиска исходных точек соседей в цели

# на основе дерева KD

def FindNeighborPoints(source, target): n = source.shape[1]

kdt = KDTree(target.T, leaf_size=30, metric = 'euclidean')

index = kdt.query(source.T, k=1, return_distance=False).reshape((n,))

return target[:, index]

2. Регистрация облака точек между точками pi и p2:

# регистрация облака точек между точками pi и p2

# с функцией соответствия 1-1 def RegisterPoints(pi, p2):

ui = np.mean(pi, axis=1).reshape((3, 1))

u2 = np.mean(p2, axis=1).reshape((3, 1))

ppi = pi - ui

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

pp2 = p2 - u2

W = np.dot(ppi, pp2.T)

U, _, Vh = np.linalg.svd(W)

R = np.dot(U, Vh).T

if np.linalg.det® < 0: Vh[2, :] *= -1 R = np.dot(U, Vh).T t = u2 - np.dot(R, ui) return (R, t)

3. Применение регистрации (преобразования) и обратного преобразования:

# применение преобразования R, t кpts def ApplyTransformation(pts, R, t):

return np.dot(R, pts) + t

# применение обратного преобразования R, t к pts def ApplyInvTransformation(pts, R, t):

return np.dot(R.T, pts -1)

4. Вычисление среднеквадратичной ошибки между двумя наборами данных pi и p2:

# Вычисление среднеквадратичной ошибки между двумя наборами данных

# Берется не среднее значение, а сумма def ComputeRMSE(pi, p2):

return np.sum(np.sqrt(np.sum((pi-p2)**2, axis=0)))

5. Вычисление ошибки:

# вычисление ошибки

def CalcTransErrors(R1, ti, R2, t2): Re = np.sum(np.abs(R1-R2)) te = np.sum(np.abs(ti-t2)) return (Re, te) Теперь рассмотрим программу «main».

В начале программы указываем библиотеки и то, что все функции, которые будут участвовать в работе, берем из файла «icp»: from icp import *.

Указываем количество точек и откуда мы их будем брать.

# количество случайных точек N = 100

X = np.random.rand(3,N) * 100.0

# использование случайных точек X = np.loadtxt("data/bunny.txt")

#X = PlyData.read("data/android.ply") X = X[::50,0:3].T N = X.shape[1]

Набор точек bunny.txt представлен на рисунке 4.

bunny.Oft - блокнот _! X ОаАл П р J s >:э фермат tiСправа

39.229298 -60.605698 6.455803 -0.655746 -0.503202 В.56283?

-38,729296 -60.550697 6.963398 -0.562560 -0.514721 0,646985

-40,479301 -60,074902 4,804699 -0,654795 -0,192529 0,431932

-39.979301 -59.965500 5.819703 -0.870210 -0,228121 0.436687

-39.47930S -59.856098 6.83470! -0.724348 -0.314246 0.613653

■38.979301 -S9.801399 7.342202 -0.611402 -0.275091 0.741966

-ЗВ.479301 -59.760300 7.722798 -0.596561 -0.153064 0.792344

-37.979301 -59.719299 8.103401 -0.622186 -0.1259В8 0.772673

-37.479301 -59.678299 8.483997 .0.618894 -0.180150 0.764537

-36.979301 -59.623600 8.991497 -0.714849 -0.165975 0.679296

-36.479301 -59.563793 9.498997 -0.6413E3 -0.266962 0.719277

-35.979301 -59.527882 9.379601 -0.479788 -0.308991 В.82Ш5

-35.479301 -59,500500 10.133301 -0.474032 -0.266617 0.33917

-34.979301 -59.459400 10,514000 -0.500004 -0.174545 0,84825

-34.479301 -59.432098 10,767696 -0.391542 -0.253436 0,88457

-33.979301 -59.418400 10.894600 -0.091970 -0.3S119S 0.93177

.чз *7сз 1 .со лтялаа аалс.аа .a azxiae. .а " - 7 7 7 л р Chilli ■ | >

_Стр 1, смб 1_1pm Wind™» icat-Fj utf-э_

Рис. 4. Набор точек bunny.txt

Указываем произвольный поворот и перевод по осям х, у, z: # произвольные поворот и перевод

t = np.random.rand(3,1) * 25.0 theta = np.random.rand() * 20 phi = np.random.rand() * 20 psi = np.random.rand() * 20

R = Rot.from_euler('zyx', [theta, phi, psi], degrees = True) R = R.as_matrix()

Выбираем подмножества процентов точек для вычислений:

# выбор подмножества процентов точек subset_percent = 40

Ns = int(N * (subset_percent/100.0))

index = random.sample(list(np.arange(N)), Ns)

P = X[:, index]

Вызываем функцию для применения обратное преобразование:

P = ApplyInvTransformation(P, R, t)

Вызываем функцию для работы ICP алгоритма:

# ICP алгоритм start = time.time()

Rr, tr, numjter = IterativeClosestPoint(source_pts = P, target_pts = X, tau = 10e-6) end = time.time()

Выводим информацию о затраченном времени на работу алгоритма и количество итераций в консоль: print("Time taken for ICP : {}".format(end - start)) print("num_iterations: {} "format(num_iter))

Вызываем функцию для вычисления ошибки и вывод ее значения в консоль:

# вычисление ошибки:

Re, te = CalcTransErrors(R, t, Rr, tr) print("RotationalError : {}".format(Re)) print("TranslationalError : {}".format(te))

Вызываем функцию для применения преобразования новых полученных точек:

# преобразование новых точек Np = ApplyTransformation(P, Rr, tr) Делаем визуальный вывод:

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

ax.scatter(X[0,:], X[1,:], X[2,:], marker='o', alpha = 0.2, label="input target points")

ax.scatter(P[0,:], P[1,:], P[2,:], marker='A', label="input source points")

ax.scatter(Np[0,:], Np[1,:], Np[2,:], marker='x', label="transformed source points")

ax.set_xlabel('X Label')

ax.set_ylabel('Y Label')

ax.set_zlabel('Z Label')

ax.legend()

plt.show()

H V 1,.

irtM №tt(«4t

r:

#

-■mm

0 ■ 1

input target

-IS-50-M Q JS » П

« + Q.S В

iQs a

Рис. 6. Вывод облаков точек: входное облако точек (источника); входное целевое облако точек; трансформированное облако точек (источника)

п +QS е

Рис. 7. Полученное изображение совмещенных облаков точек

Информация о работе ICP-алгоритма выводится в консоль после запуска работы алгоритма и содержит в себе данные о: времени работы алгоритма ICP (Time taken for ICP); количестве итераций (num_iterations); ошибке вращения (Rotational Error); ошибке перемещения (Translational Error).

Вывод облаков точек представлен на рис.6. Полученное изображение совмещенных облаков точек представлено на рисунке 7.

Заключение. Рассмотренный в статье способ совмещения облаков точек на основе алгоритма ICP является достаточно надежным и дающим устойчивые результаты вне зависимости от качества совмещаемых облаков. Основная проблема данного метода - совмещение облаков, обладающих лишь частичным перекрытием. В качестве способа устранения данного недостатка в последующих работах предполагается использование алгоритма установления однозначного соответствия между отдельными точками, грубое совмещение облаков по ним, а затем - досов-мещение с применением модифицированной версии ICP.

Список литературы

1. Point-set registration [Электронный ресурс]. URL: https://en.wikipedia.org/wiki/Point-set registration. (дата обращения: 08.12.2022).

2. Iterative closest point [Электронный ресурс]. URL: https://en.wikipedia.org/wiki/Iterative closest point. (дата обращения: 01.12.2022).

3. Kabsch W. A solution for the best rotation to relate two sets of vectors, Acta Crystallographic a Section A, vol. 32, no. 5, 1976. P. 922-923.

4. Vicente Morell-Gimenez, Marcelo Saval-Calvo, Jorge Azorin-Lopez, Jose Garcia-Rodriguez, Miguel Cazorla, Sergio Orts-Escolano and Andres Fuster-GuilloA Comparative Study of Registration Methods for RGB-D Video of Static Scenes// Sensors. 2014, 14, 8547-8576. DOI: 10.3390/s140508547.

5. L. Maier-Hein, T. R. dos Santos, A. M. Franz, H.-P. Meinzer. Iterative Closest Point Algorithm in the Presence of Anisotropic Noise// German Cancer Research Center, Div. of Medical and Biological Informatics. [Электронный ресурс]. URL: https://ceur-ws.org/Vol-574/bvm2010 47.pdf. (дата обращения: 12.12.2022).

6. Vladislav Golyanik, Bertram Taetz and Didier Stricker. Joint pre-alignment and robust rigid point set registra-tion// University of Kaiserslautern, Germany. German Research Center for Artificial Intelligence (DFKI), Germany. 2016. DOI: 10.1109/ICIP.2016.7533212.

7. Paul J. Besl, Neil D. McKay. A Method for Registration of 3-D Shapes// EEE Transactions on Pattern Analysis and Machine Intelligence, vol. 14, no. 2, IEEE Computer Society, 1992.

8. Iterative Closest Point (ICP) Algorithm in Python. [Электронный ресурс]. URL: https://github.com/iitaakash/icp python (дата обращения: 21.04.2023).

Крючкова Татьяна Николаевна, магистрант, [email protected], Россия, Рязань, Рязанский государственный радиотехнический университет имени В.Ф. Уткина,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Ефимов Алексей Игоревич, канд. техн. наук, доцент, [email protected], Россия, Рязань, Рязанский государственный радиотехнический университет имени В.Ф. Уткина

POINT-CLOUD SUPERMPOSITION. ITERATIVE CLOSEST POINT ALGORITHM T.N. Kriuchkova, A.I. Efimov

This article discusses the process of registering point clouds, in particular, the algorithm of rigid registration of three-dimensional clouds. A software implementation of an iterative algorithm for combining three-dimensional point clouds is described.

Key words: 3D model, three-dimensional point clouds, rigid registration algorithm, iterative nearest point algorithm.

Kriuchkova Tatiana Nikolaevna, master, [email protected], Russia, Ryazan, Ryazan State Radio Engineering University named after V.F. Utkin,

Efimov Aleksey Igorevich, candidate of technical sciences, docent, [email protected], Russia, Ryazan, Ryazan State Radio Engineering University named after V.F. Utkin

i Надоели баннеры? Вы всегда можете отключить рекламу.