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

你可能感兴趣的:(点云,点云,CloudCompare,powershell,脚本,命令行)