В этом примере показано, как совпадать с соответствующими функциями между облаками точек с помощью pcmatchfeatures
функционируйте и визуализируйте их использующий pcshowMatchedFeatures
функция.
Создайте velodyneFileReader
объект.
veloReader = velodyneFileReader('lidarData_ConstructionRoad.pcap','HDL32E');
Считайте два облака точек из velodyneFileReader
объект в рабочую область.
frameNumber = 1; skipFrame = 5; fixed = readFrame(veloReader,frameNumber); moving = readFrame(veloReader,frameNumber + skipFrame);
Сегмент и удаляет наземную плоскость из облака фиксированной точки и движущегося облака точек.
groundPtsIdxFixed = segmentGroundSMRF(fixed); groundPtsIdxMoving = segmentGroundSMRF(moving); fixedSeg = select(fixed,~groundPtsIdxFixed,'OutputSize','full'); movingSeg = select(moving,~groundPtsIdxMoving,'OutputSize','full'); figure pcshowpair(movingSeg,fixedSeg) ylim([-50 60]) title('Input Point Clouds')
Наложенные облака точки ввода являются закодированным цветом:
Пурпурный — Движущееся облако точек
Зеленый — облако Фиксированной точки
Downsample облака точек, чтобы уменьшать время вычисления. Субдискретизация уменьшает число точек до процесса.
fixedDownsampled = pcdownsample(fixedSeg,'gridAverage',0.2); movingDownsampled = pcdownsample(movingSeg,'gridAverage',0.2);
Извлеките функции из облаков точек с помощью extractFPFHFeatures
функция. Функции возвращают допустимые индексы в обоих облака точек. Выберите актуальные вопросы и создайте новые облака контрольной точки.
[fixedFeature,fixedValidInds] = extractFPFHFeatures(fixedDownsampled); [movingFeature,movingValidInds] = extractFPFHFeatures(movingDownsampled); fixedValidPts = select(fixedDownsampled,fixedValidInds); movingValidPts = select(movingDownsampled,movingValidInds);
Совпадайте с функциями между облаками точек, использующими извлеченные функции и облака контрольной точки.
indexPairs = pcmatchfeatures(movingFeature,fixedFeature,movingValidPts, ...
fixedValidPts);
Если у вас нет соответствующих данных об облаке точек, можно использовать эти два набора функций собой. pcmatchfeatures
функционируйте данные об облаке точек использования, чтобы оценить пространственное отношение между точками, сопоставленными с потенциальными соответствиями функции и соответствиями отклонения на основе пространственного порога отношения.
Облака точки формирования данных только точек в каждом облаке точек с соответствием с функциями в другом облаке точек.
matchedFixedPts = select(fixedValidPts,indexPairs(:,2)); matchedMovingPts = select(movingValidPts,indexPairs(:,1));
Визуализируйте соответствия.
figure pcshowMatchedFeatures(movingSeg,fixedSeg,matchedMovingPts,matchedFixedPts, ... 'Method','montage') xlim([-40 210]) ylim([-50 50]) title('Matched Points')
Совпадающими функциями и облаками точек является цвет, закодированный, чтобы улучшить визуализацию:
Пурпурный — Движущееся облако точек
Зеленый — облако Фиксированной точки
Красный круг — Совпадающие точки в движущемся облаке точек
Синяя звездочка — Совпадающие точки в облаке фиксированной точки
Желтый — Линия, соединяющая совпадающие функции