Регистрация облака точек с низкими (и неразличимыми) функциями - PullRequest
1 голос
/ 30 января 2020
  1. Объектив

Сканируемый объект состоит из двух основных частей: конической структуры, без основы; и, в середине первой части, цилиндрическая структура. Мы назовем первую часть как «тело», а вторую - как «трубу». Диаметр от трубы известен (или очень точно оценен). Расстояние между крайностью тела и центром трубы неизвестно. Современный лазерный сканер со структурированным светом установлен на круговой траектории вокруг целевого объекта. Поза сканера и угол перемещения между «взятиями» практически неизвестны.

На основании круговой траектории мы имеем N захватов с цели. Отсюда можно сделать вывод, что угол движения между каждым дублем равен 360 / N. После захвата нам нужно взять эти N облаков точек и объединить их в уникальное (и полное) облако точек, которое представляет собой законченный объект. Что-то , как этот урок .

Иллюстрация сканера, цели и траектории.

То, что уже испробовано

В наших снимках у нас очень однородный объект. Эта характеристика c столкнулась с нами как проблема, потому что соответствующие точки, обнаруженные в облаке точек, очень похожи на множество других точек в разных позициях в облаке. Но только одно это правильное соответствие. Из-за этого у нас много ложных соответствий, что делает вычисление преобразования неудачным.

Мы выполнили много экспериментов, используя алгоритмы, реализованные в PointCloud Library (PCL). Изменение параметров на детекторах ключевых точек (ISS, Random Sampling, Harris и др. c.), Дескрипторов (основанных на цветах, таких как SHOTRGB, нормалях и / или геометрии, как FPFH), методах линейного решения (SVD, MLS и др.) 1039 *.). Мы не можем достичь соответствующего результата.

Кто-нибудь сталкивался с проблемой, подобной этой?

Как улучшить режим описания?

Могу ли я использовать другой подход, разработанный для высокоднородных наборов данных?

Любой вклад приветствуется.

1 Ответ

0 голосов
/ 08 февраля 2020

Если N достаточно велико (это что-то под вашим контролем?), Optical Flow должен быть хорошим кандидатом для поиска соответствий .

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

OpticalFlow - это карта между двумя изображениями, в которой перемещается каждая точка. дает вам альтернативный способ найти точку соответствия. Этот подход предполагает, что два изображения достаточно похожи (= что ваш N достаточно большой) использует это сходство.

Это может быть лучше понято при сравнении: основанный на особенностях подход рассматривает каждое изображение отдельно и пытается сопоставить точки индивидуально (в пространстве признаков). OpticalFlow рассматривает оба изображения, чтобы найти «плавное» преобразование / отображение между ними. Подход, основанный на функциях, является «стандартным» из-за его гораздо более высокой надежности и инвариантности.

В вашем конкретном случае можно использовать подход OpticalFlow.

OpenCV имеет реализация OpticalFlow и предлагает учебник . Если мы посмотрим на пример:

calcOpticalFlowPyrLK(old_gray, frame_gray, p0, p1, ...);

Даны два изображения (old_gray и frame_gray) и набор точек (p0) на первом изображении (old_gray) ), он вычисляет, где эти точки (p1) находятся на втором изображении (frame_gray). Другими словами, наборы точек p0 и p1 являются соответствием между двумя изображениями. Вы можете попробовать любой метод определения ключевой точки, чтобы выбрать набор точек p0.

В качестве альтернативы, вы можете использовать calcOpticalFlowFarneback для получения плотного соответствия.

Дополнительные материалы: Wiki , Короткий видеоурок от Coursera .

...