"); //-->
1 原理
将点投影到一个参数化模型上,这个参数化模型可以是平面、圆球、圆柱、锥形等进行投影滤波。
2 投影模型3 核心代码
//本例使用axtby+ez+d=O的平面模型创建一个系数为a=b=d=0,c=1的平面,也就是X-Y平面。z轴相关的点全部投影在X-Y面上2.8 高斯滤波
pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());
coefficients->values.resize(4) ;
coefficients->values[0] = coefficients->values[1] = O;
coefficients->values[2] =1.0;
coefficients->values[3] =0;
1 原理
用于平滑图像并减少图像中的噪声。基于高斯函数的数学原理,通过在图像上应用高斯核来实现平滑效果。
2 步骤
1)确定高斯核的大小和标准差:高斯核的大小是指核的尺寸,通常是一个奇数,例如3x3、5x5、7x7等。标准差决定了高斯函数的形状,控制了滤波的平滑程度。标准差越大,平滑效果越明显。
2)生成高斯核:根据确定的高斯核大小和标准差,生成一个二维的高斯权值矩阵。高斯权值矩阵中的每个元素表示了相应位置上的权重值,这些权重值是根据高斯函数计算得出的。
3)对图像进行卷积:将生成的高斯核应用于原始图像。对于图像中的每个像素,将高斯核与其周围的像素进行卷积操作。卷积操作即将高斯核的每个元素与对应位置的像素值相乘,并将结果进行求和。
4)更新像素值:将卷积操作得到的结果作为滤波后的像素值,用于更新原始图像中对应位置的像素值。这样就完成了一次高斯滤波操作。
5)对整个图像重复滤波操作:重复步骤3和步骤4,对整个图像进行滤波操作,直到所有像素都被更新为滤波后的值。
3 卷积原理
卷积操作中,高斯核与图像中的每个像素以及其周围的邻域像素进行加权求和。卷积的结果是通过将每个像素的值乘以对应位置的高斯核权重,并将所有结果相加得到的。假定中心点的坐标是(0,0),那么取距离它最近的8个点坐标,为了计算,需要设定σ的值。假定σ=1.5,则模糊半径为1的高斯模板如下:这个时候我们我们还要确保这九个点加起来为1(高斯模板的特性),这9个点的权重总和等于0.4787147,因此上面9个值还要分别除以0.4787147,得到最终的高斯模板。
假设现有9个像素点,灰度值(0-255)的高斯滤波计算如下:
通常创建KD树,可以用于加速搜索滤波器的卷积操作。
4 KD-Tree
依次搜寻每个点云数据周围的k个邻域点,并计算出采样点到其k个邻域点的平均欧式距离。原始点云数据经过KD-Tree 搜索后的数据集为
,定义di为已经得到的点pi到其k个邻域点的平均距离,σ为di的标准差。
5 核心代码
//—————基于高斯核函数的卷积滤波实现-—---------3 深度学习的去噪算法
pcl::filters::CaussianKernel<pcl::PointXYZ, pcl::PointXYZ> kernel;//滤波器类 输入+输出
kernel.setSigma(4);//高斯函数的标准方差,决定函数的宽度
kernel.setThresho1dRelativeToSigma(4)://设置相对Sigma参数的距离阈值
kernel.setThreshold(0.05);//设置距离阈值,若点间距高大于阈值则不予考虑
court <<"Kernel made”<< end1;
//——————-创建k维树——————
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search:KdTree<pcl::PointXYZ>);
tree->setInputCloud (cloud);
court <<KdTree made<<end1:
//-———-—-设置三维卷积相关参数-——————————————
pc1:.filters::Convolution3D<pcl::PointXYZ, pcl::PointXYZ, pcl:filters::GaussianKernel<pcl::PointXYZ, pcl:PointXYZ>> convolution;
convolution.setKernel (kernel);//设置卷积核
convolution.setInputCloud (cloud);
convolution.setNumberOfThreads(8);//卷积操作的线程数量为8
convolution.setSearchMethod(tree);//搜索方法为tree
convolution.setRadiusSearch(0.01);//积操作的半径搜索参数为0.01
cout << "Convolution Start" << end1;
1)自编码器(Autoencoder):自编码器是一种无监督学习的神经网络模型,可以用于图像和信号的去噪。它通过将输入信号压缩到低维编码空间,然后再将其解码回原始信号空间,从而学习到信号的有用特征,并去除噪声。
2)基于卷积神经网络(CNN)的去噪算法:CNN在图像处理领域广泛应用,可以用于图像去噪。通过在网络中使用卷积层、池化层和反卷积层等结构,CNN可以学习到图像的局部特征,并对噪声进行去除。
3)基于生成对抗网络(GAN)的去噪算法:GAN是一种由生成器和判别器组成的对抗性模型。在图像去噪中,生成器负责将噪声图像转换为清晰图像,而判别器则用于判断生成器输出的图像是否真实。通过不断迭代训练,生成器可以生成更加清晰的图像,从而实现去噪效果。
4)基于变分自编码器(VAE)的去噪算法:VAE是一种生成模型,可以学习到输入数据的潜在表示。在去噪中,VAE可以学习到噪声数据的潜在分布,并生成去噪后的图像或信号。
5)基于深度残差网络(DnCNN)的去噪算法:DnCNN是一种专门设计用于图像去噪的深度残差网络。它通过堆叠多个卷积层和残差连接来学习到图像中的噪声特征,并去除噪声。
4 参考https://blog.csdn.net/qq_36686437/article/details/114160640
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。