三维网格精简算法java版_三维网格去噪算法(bilateral filter)

受图像双边滤波算法的启发,[Fleishman et al. 2003]和[Jones et al. 2003]分别提出了利用双边滤波算法对噪声网格进行光顺去噪的算法,两篇文章都被收录于当年的SIGGRAPH,至今引用超500余次。虽然从今天看两篇文章的去噪效果还不算非常好,但是其中的思想是值得学习的。图像双边滤波算法可以参考http://blog.csdn.net/abcjennifer/article/details/7616663,图像双边滤波器由空间域核与值域核组成,在图像的特征区域,自身像素值与周围像素值差别较大,这时起主导的值域核决定周围像素值的权重系数大幅降低,因此双边滤波能够在去噪的同时保持细节特征。

[Fleishman et al. 2003]提出的网格去噪算法为一种迭代方法:首先定义每个顶点u的计算域,空间域定义为顶点u到计算域内其他顶点p的距离,值域定义为计算域内其他顶点p到顶点u切平面的带符号距离,然后利用双边滤波方法计算顶点u在法向上的移动距离,更新完网格所有顶点位置后即完成一次迭代。具体公式如下:

其中空间域核Wc(x) = e-x2/2σc2,值域核Ws(x) = e-x2/2σs2,N(u)为满足||u - pi|| < ρ = 2σc的顶点集{pi},I(p)为顶点p到顶点u切平面的带符号距离,最后计算得到的I(u)即为顶点u需要在其法向上移动的距离。

效果:

[Jones et al. 2003] 提出的网格去噪算法不需要迭代,具体公式如下:

其中f和g分别为空间域核以及值域核,核函数都为高斯函数,aq为三角片的q的面积,cq为三角片的q的中心,S为满足||cq - p|| < 2σf的三角片集,最后直接计算得到新顶点的位置p’。

那么如何得到∏q(p),∏q(p)为顶点p在三角片q切平面上的投影点,但该投影点并不是在原始网格上计算。文章提出忽略双边滤波公式中的值域核函数g,并令∏q(p) = cq,即利用高斯滤波得到一个虚拟网格,而∏q(p)即为顶点p到虚拟网格中三角片q切平面上的投影点。

效果:

参考文献:

[1] Shachar Fleishman, Iddo Drori, and Daniel Cohen-Or. 2003. Bilateral mesh denoising. In ACM SIGGRAPH 2003 Papers (SIGGRAPH '03). ACM, New York, NY, USA, 950-953.

[2] Thouis R. Jones, Frédo Durand, and Mathieu Desbrun. 2003. Non-iterative, feature-preserving mesh smoothing. In ACM SIGGRAPH 2003 Papers (SIGGRAPH '03). ACM, New York, NY, USA, 943-949.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ROS中,双边滤波器(bilateral filter)是一个常用的图像处理算法,可以用于图像去噪和边缘保留等任务。它是一种非线性滤波器,它能够在保留图像边缘信息的同时去除噪声。 在ROS中,可以使用OpenCV库中的双边滤波函数来实现双边滤波器的功能。具体来说,可以使用cv::bilateralFilter()函数来实现双边滤波器。该函数的原型如下: ```cpp void cv::bilateralFilter( cv::InputArray src, // 输入图像 cv::OutputArray dst, // 输出图像 int d, // 邻域直径 double sigmaColor, // 色彩空间标准差 double sigmaSpace, // 空间域标准差 int borderType = cv::BORDER_DEFAULT // 边界类型 ); ``` 其中,参数说明如下: - `src`:输入图像,可以是Mat类型或者图像消息类型; - `dst`:输出图像,与输入图像类型一致; - `d`:邻域直径,表示滤波器在每个像素周围的邻域中考虑的像素数; - `sigmaColor`:色彩空间标准差,表示在颜色空间中考虑的像素值差异; - `sigmaSpace`:空间域标准差,表示在空间域中考虑的像素位置差异; - `borderType`:边界类型,表示边界处理方式,可以设置为cv::BORDER_DEFAULT、cv::BORDER_CONSTANT、cv::BORDER_REPLICATE、cv::BORDER_REFLECT等。 使用双边滤波器需要根据具体的应用场景来确定邻域直径和标准差等参数的取值。通常情况下,较大的邻域直径和较小的标准差可以得到更好的去噪效果,但是会导致边缘信息模糊,因此需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值