目录
💥1 概述
📚2 运行结果
🎉3 参考文献
👨💻4 Matlab代码
💥1 概述
随着我国公路建设的迅速发展,对公路养护和旧路改扩建的需求迅速扩大。路面是公路养护及改扩建工作的核心内容,快速、有效掌握路面几何参数和公路路面技术状况及其变化趋势是路面养护决策、路面大中修养护及改扩建方案设计的前提和依据。路面几何参数及技术状况评价指标的获取长期依赖于种类繁多的特定传感器和现场测量,其检测结果易受多种因素的影响,且缺乏统一的数据基准。移动激光扫描(Mobile Laser Scanning,MLS)技术集成激光扫描仪、全球卫星导航系统、姿态测量系统、相机等多种传感器,能迅速采集高精度、高密度的公路三维实景点云数据,为路面几何及技术状况自动化检测提供了一种新的技术手段。
同样,移动激光扫描(MLS)系统可以快速采集城市道路沿线的电力线和电力线走廊的点云数据。从点云中准确高效地提取电力线是电力线检查和维护的基础。本代码提出了一种完整的MLS点云电力线提取和建模算法。该算法首先基于对线性特征的分析,从非地面点中提取候选电力线点。接触网模型用于对电力线进行建模和致密化。国际摄影测量和遥感学会工作组(ISPRS WG)III/5提供的样本数据被用来测试该方法的性能。
📚2 运行结果
主函数部分代码:
%% step1 Mobile LiDAR filtering clc; clear; close all; tic nonGroundPoints = []; for i=8:10 filename = ['L037_Sens1_600x250_cloud_' num2str(i)]; load([filename '.mat']) [counts,centers] = hist(ptCloudA.data(:,3),50); [~,I] = max(counts); nonGroundIndex = ptCloudA.data(:,3)>centers(I+3); nonGroundPoints = [nonGroundPoints; ptCloudA.data(nonGroundIndex,1:3)]; end toc figure pcshow(nonGroundPoints) title('Non ground points') view(60,25) print(gcf,'-dpng','-r300', 'f1_nonGroundPoints.png') %% step1 Extract powerline point points radius = 0.5; angleThr = 10; LThr = 0.98; tic isPLIndex = extractPLs(nonGroundPoints,radius,angleThr,LThr); toc isPLIndex = logical(isPLIndex); figure pcshow(nonGroundPoints(isPLIndex,:)) title('Candidate power line points') view(60,25) print(gcf,'-dpng','-r300', 'f2_candidate powerline points.png') %% step2 Euclidean clustering ptCloud = pointCloud(nonGroundPoints(isPLIndex,:)); minDistance = 2.0; [labels,numClusters] = pcsegdist(ptCloud,minDistance); figure pcshow(ptCloud.Location,labels) title('Candidate power line clusters') view(60,25) print(gcf,'-dpng','-r300', 'f3_candidate powerline points clusters.png') index = ones(size(labels,1),1); power_lines = []; for i=1:numClusters cluster = index*i == labels; if(sum(cluster)<15) continue; end xyzs = ptCloud.Location(cluster,:); power_lines = [power_lines; xyzs]; end PLs = pointCloud(power_lines); figure pcshow(PLs); title('Power line clusters') view(60,25) print(gcf,'-dpng','-r300', 'f4_powerline points clusters.png') %% step3 Power line modeling ptCloud = PLs; minDistance = 0.3; [labels,numClusters] = pcsegdist(ptCloud,minDistance); figure show_segs(ptCloud.Location,labels,1); title('Different clusters are given different colors') view(60,25) print(gcf,'-dpng','-r300', 'f5_colorization clusters.png') counts = []; index = ones(size(labels,1),1); % Constructing structure based on Clustering for i=1:numClusters cluster_index = index*i == labels; cluster_raw = ptCloud.Location(cluster_index,:); xyzs_new = cluster_raw; powerLines(i).Location = xyzs_new; powerLines(i).Label = 0; powerLines(i).Count = size(xyzs_new,1); powerLines(i).Ids = []; counts = [counts; powerLines(i).Count]; end
🎉3 参考文献
[1]彭梦,邬书跃,李珍辉,王海涛.基于不确定性的2D激光雷达和摄像机标定方法[J].湖南科技大学学报(自然科学版),2022,37(04):75-83.
部分理论引用网络文献,若有侵权联系博主删除。