从移动激光雷达点云中提取电源线(Matlab代码实现)

    目录

💥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.

部分理论引用网络文献,若有侵权联系博主删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值