zoukankan      html  css  js  c++  java
  • matlab练习程序(点云下采样)

    点云处理有时因为数据量太大,我们需要对其进行下采样。

    这里的方法是先将点云填入固定大小的三维网格中,然后每个网格中选一个点生成新的点云。

    新点云即为下采样后的点云。

    这里使用斯坦福兔子作为测试点云。

    小兔子pcd下载地址

    原始点云:

    采样后点云:

    matlab代码如下:

    clear all;
    close all;
    clc;
    
    pc = pcread('rabbit.pcd');
    pcshow(pc);
    
    pc_point = pc.Location;
    xlimit = pc.XLimits;
    ylimit = pc.YLimits;
    zlimit = pc.ZLimits;
    
    cellsize = 0.005;   %定义网格大小
    %设置网格数量
    W = floor((xlimit(2) - xlimit(1))/cellsize)+1;
    H = floor((ylimit(2) - ylimit(1))/cellsize)+1;
    D = floor((zlimit(2) - zlimit(1))/cellsize)+1;
    
    %向网格里填数
    voxel = cell(W,H,D);
    for i =1:length(pc_point)
        I = floor((pc_point(i,1)-xlimit(1))/cellsize)+1;
        J = floor((pc_point(i,2)-ylimit(1))/cellsize)+1;
        K = floor((pc_point(i,3)-zlimit(1))/cellsize)+1;
        voxel{I,J,K} = [voxel{I,J,K};pc_point(i,:)];
    end
    
    %以网格中第一个点对原点云进行下采样
    pointre =[];
    for i=1:W
        for j=1:H
            for k=1:D
                if isempty(voxel{i,j,k})==0
                    pointre=[pointre;voxel{i,j,k}(1,:)];
                end
            end
        end
    end
    pcre = pointCloud(pointre);
    
    figure;
    pcshow(pcre);
  • 相关阅读:
    地图的可视化--Folium
    GIS性能策略
    计算多边形中心线
    生成凹壳
    路径分析之NetworkX实例
    网络分析之networkx(转载)
    网络分析之Pgrouting(转载)
    颜色空间变换(RGB-HSV)
    计算坡度与坡向
    计算山体阴影
  • 原文地址:https://www.cnblogs.com/tiandsp/p/10574530.html
Copyright © 2011-2022 走看看