CloudCompare命令行批量执行数据下采样去噪

如果你不想用 C / python,而是使用CloudCompare进行大量点云数据处理时,会面临一个问题:直接将高达40个G的点云同时载入CloudCompare会导致卡死 ,即使你的内存充足也无法同时处理全部数据。而手动处理逐个子点云文件费时费力,这时就需要使用CloudCompare的命令行模式进行预处理工作了。

官方文档:https://www.cloudcompare.org/doc/wiki/index.php

我需要对原始点云进行下采样和去噪,一般经过这两步的处理后,总体数据大小可以减少到可接受的范围,方便后续处理。

以下powershell脚本实现了该功能:

$pattern = "G:\LiDAR\OriginLAS\*.las"	# 原始数据路径
$absolutePaths = (Get-ChildItem -Path $pattern | Resolve-Path).ProviderPath	# 提取每个las文件的路径
$absolutePaths | ForEach-Object {
	# 结果输出到 "G:\LiDAR\pointcloud04\*.ply"
    $savePath = $_ -replace "OriginLAS", "pointcloud04"
    $savePath = $savePath -replace "\.las$", ".ply"
    # 忽略已处理的文件
    if (-not (Test-Path -Path $savePath)) {
        echo "----------------------------------------------------------------------------"
        echo $_ "-->" $savePath
        echo "----------------------------------------------------------------------------"
        # 运行CloudCompare,执行文件读入、下采样0.4、SOR滤波6,1、保存
        CloudCompare.exe -SILENT -C_EXPORT_FMT ply -AUTO_SAVE OFF -O -GLOBAL_SHIFT AUTO $_ -SS SPATIAL 0.4 -SOR 6 1 -SAVE_CLOUDS FILE $savePath
        # 由于上一步是非阻塞的,手动睡眠等待执行完成再开始下一个,不然会全部一起运行导致卡死
        Start-Sleep -Seconds 10
    }
}

注意:路径中不能有中文或空格,否则会报错:

# 路径中有空格报错
Invalid parameter: specified 3 file names, but there are 1 clouds
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值