《思路存档》基于Matlab的点云数据处理方法实现1

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@TOC《思路存档》基于Matlab的点云数据处理方法实现


前言

就是一些思路的存档,一些工作上能用上的或者实现的数据处理方法,包括借鉴同事的思路,改写成matlab的实现之类的


一、判断点是不是在矩形(多边形)中

之前遇到的,判断点云是不是在一个平行四边形中,提取平行四边形中的点云,也是参考了同事的代码还有一些网上的思路,后面就放个函数代码以及思路。

function [ xyzi ] = IsLimes_XZ( XYZI,x_1 )
%UNTITLED5 判断点云是否在多边形中 若生成的射线
xyzi=[];
%输入角点,并将角点加一行
x_1=[x_1;x_1(1,:)];
maxX=max(x_1(:,1));
maxZ=max(x_1(:,2));
minX=min(x_1(:,1));
minZ=min(x_1(:,2));
%输入参与判断的点云坐标
%求个最小包围盒
ind=find(XYZI(:,1)<maxX & XYZI(:,3)<maxZ & XYZI(:,3)>minZ & XYZI(:,1)>minX);
XYZI=XYZI(ind,:);
for j=1:size(XYZI,1)
    %参与判断的点为
    x=XYZI(j,1);
    y=XYZI(j,3);
    c=0;
 
    %输入角点坐标
    for i=1:size(x_1,1)-1
        x1=x_1(i,1);
        y1=x_1(i,2);
        x2=x_1(i+1,1);
        y2=x_1(i+1,2);
        if (y>min(y1,y2) && y<max(y1,y2))
            
            tempx=(x1-x2)*(y-y2)/(y1-y2)+x2;
            
            if(x < tempx)
                c=c+1;
            elseif (abs(x-tempx)<0.002)
                c=1;
                break;
            end
        end
    end
    if(mod(c,2)~=0)
        xyzi=[xyzi;XYZI(j,:)];
    end
end

end

二、依据多段线进行点云裁切

之前遇到的,按照轴线进行裁切,轴线为多段线

function Node=FindNode(X_Mileage,Axis)
Distance=abs(Axis(:,1)-X_Mileage);%求已知里程与中轴线上各点里程差;
%对里程排序,找到与已知里程最近的两个中轴点。
[~,Index]=sort(Distance);
P1=Axis(Index(1),:);
P2=Axis(Index(2),:);

%按里程对上述两点进行排序
Temp=sortrows([P1;P2],1);
P1=Temp(1,:);
P2=Temp(2,:);


Dx=P2(1)-P1(1);
ky=(P2(2)-P1(2))/Dx;
kz=(P2(3)-P1(3))/Dx;

Y=ky*(X_Mileage-P1(1))+P1(2);
Z=kz*(X_Mileage-P1(1))+P1(3);
Node=[X_Mileage,Y,Z];

end

%使用方法
		for j=minX:1:maxX
		 NodeLeft=FindNode(j,LeftAxis);
        IndLeft=find(sqrt((TXYZI(:,2)-NodeLeft(2)).^2+(TXYZI(:,3)-NodeLeft(3)).^2)<Distance);
        LeftXYZI=TXYZI(IndLeft,:);
        if(isempty(LeftXYZI))
            continue;
        end
        LASWrite([XYZILeftOutPath,'Left.las'], LeftXYZI);

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值