PCL向点云添加均匀随机噪声:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/random.h>int main()
{// 加载点云文件pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //待滤波点云pcl::io::loadPLYFile("horse.ply", *cloud);// 设置随机数生成器pcl::common::UniformGenerator<float> randGen(0.0f, 1.0f);// 添加随机噪声float noiseMagnitude = 0.01f; // 噪声幅度for (pcl::PointXYZ& point : *cloud) {point.x += noiseMagnitude * (randGen.run() - 0.5f);point.y += noiseMagnitude * (randGen.run() - 0.5f);point.z += noiseMagnitude * (randGen.run() - 0.5f);}// 保存带有噪声的点云文件pcl::io::savePLYFile("cloud.ply", *cloud); //保存文件return 0;
}