java 滤波算法_双边滤波算法

java 滤波算法_双边滤波算法1、原理高斯滤波是以距离为权重,设计滤波模板作为滤波系数,只考虑了像素间的空间位置上的关系,因此滤波的结果会丢失边缘的信息。高斯滤波的缺陷如下图所示:平坦区域正常滤波,图像细节没有变化,而在突变的边缘上,因为只使用了距离来确定滤波权重,导致边缘被模糊。在高斯基础上,进一步优化,叠加了像素值的考虑,因此也就引出了双边滤波,一种非线性滤波,滤波效果对保留边缘更有效。为了理解双边滤波的距离和像素差两个影…

大家好,又见面了,我是你们的朋友全栈君。

1、原理

高斯滤波是以距离为权重,设计滤波模板作为滤波系数,只考虑了像素间的空间位置上的关系,因此滤波的结果会丢失边缘的信息。

高斯滤波的缺陷如下图所示:平坦区域正常滤波,图像细节没有变化,而在突变的边缘上,因为只使用了距离来确定滤波权重,导致边缘被模糊。

23eec995a8bc6eafc7216faa59353254.png

在高斯基础上,进一步优化,叠加了像素值的考虑,因此也就引出了双边滤波,一种非线性滤波,滤波效果对保留边缘更有效。

09b01f21a38899a6c73b159be23a115a.png

为了理解双边滤波的距离和像素差两个影响因素,先说明下面两个概念帮助理解。

空间距离:当前点距离滤波模板中心点的欧式距离。

e1f2d2a455a4c10058bb63dcc6b9e81a.png

灰度距离:当前点距离滤波模板中心点的灰度的差值的绝对值。

173e704ce50da33ba6227cd93df9af4a.png

双边滤波的核函数是空间域核与像素范围域核的综合结果:

1)在图像的平坦区域,像素值变化很小,那么像素差值接近于0,对应的像素范围域权重接近于1,此时空间域权重起主要作用,相当于进行高斯模糊;

2)在图像的边缘区域,像素值变化很大,那么像素差值大,对应的像素范围域权重变大,即使距离远空间域权重小,加上像素域权重总的系数也较大,从而保护了边缘的信息。

双边滤波的效果如下图,在突变的边缘上,使用了像素差权重,所以很好的保留了边缘。

d5a671a2e9a95f9c4e97cd00fbc00742.png

双边滤波的原理如下图所示。

dd905c3de30164e02d1c33dc7106ca7b.png

2、测试实验

OpenCV函数原型:

CV_EXPORTS_W void bilateralFilter(

InputArray src, OutputArray dst, int d,

double sigmaColor, double sigmaSpace,

int borderType = BORDER_DEFAULT );

InputArray src:输入图像,可以是Mat类型,图像必须是8位或浮点型单通道、三通道的图像。

OutputArray dst:输出图像,和原图像有相同的尺寸和类型。

int d:表示在过滤过程中每个像素邻域的直径范围。如果这个值是非正数,则函数会从第五个参数sigmaSpace计算该值。

double sigmaColor:颜色空间过滤器的sigma值,这个参数的值越大,更大的值域空间影响结果。

double sigmaSpace:坐标空间中滤波器的sigma值,如果该值较大,更大的定义域空间影响结果。

int borderType=BORDER_DEFAULT:边界模式,有默认值BORDER_DEFAULT.

测试代码:

static void OnBilateralFilter(int filterSz, void *)

{

bilateralFilter(img, img3, filterSz, filterSz * 2, filterSz / 2);

imshow(“双边滤波”, img3);

}

namedWindow(“双边滤波”, 1);

createTrackbar(“内核值”, “双边滤波”, &gMedianBlurValue, 40, OnBilateralFilter);

OnBilateralFilter(gMedianBlurValue, 0);

3、测试结果

c82d78fd241223f2c867d618c5e0847f.png

4、参考文献

Bilateral Filtering for Gray and Color Images, C. Tomasi, R. Manduch

Smoothing Images

Bilateral Filters(双边滤波算法)原理及实现(一)

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[双边滤波算法]http://www.zyiz.net/tech/detail-120403.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139458.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html设置背景图片自适应

    html设置背景图片自适应在网上找了很久,终于在一个百度问答里找到正确答案,记录下来,方便以后使用。在<body>中设置:<bodybackground=”images\bg.jpg”style=”background-repeat:no-repeat;background-size:100%100%;background-attachment:fixed;”>第一行是图片…

    2022年4月27日
    79
  • 用App Designer 制作2048小游戏

    用App Designer 制作2048小游戏用 AppDesigner 制作 2048 小游戏用 AppDesigner 制作的 2048 MATLAB 版本是 2020b 记录下创作思路 以免日后忘记 APP 界面设计 APP 界面如下 为了好玩 还加入了游戏进行时播放音乐的功能 下面是游戏结束界面 除了按钮和开关部分 其余都可用标签控件制作 游戏结束界面在制作时将其 Visible 属性设为 Off 确保在主界面上层 当判定游戏结束时再将 Visible 属性修改为 On 即可 app gameOverLabe Visible

    2025年10月29日
    2
  • 到底什么是集群&分布式

    到底什么是集群&分布式

    2020年11月12日
    219
  • 宽字节注入原理学习

    宽字节注入原理学习0x01开篇本题用到考点是宽字节注入,遇到这种注入类型学习记录。推荐两篇链接:浅析白盒审计中的字符编码及SQL注入|离别歌Von的博客|VonBlog为方便自我下次忘记,总结一下:1.宽字节涉及到编码问题,便于理解需要看一看2.宽字节注入现在已经很少见,因为如今的编码大多使用utf-8常见url编码:空格–%20′–%27#–%23\–%5c0x02原理我们注入时都会简单输入一个’或者”,进行测试,如果数据库过滤不严格就会产生报错

    2022年10月14日
    2
  • Tomcat7基于redis的session共享「建议收藏」

    Tomcat7基于redis的session共享

    2022年3月13日
    35
  • Windows 2016 服务器安全配置和加固「建议收藏」

    Windows 2016 服务器安全配置和加固「建议收藏」最近一个项目需要使用Windows服务器,选择安装了最新版的Windows2016,上一次使用Windows服务器还是Windows2008系统,发现变化还是挺多的,依次记录下来以备后面查阅。更换Windows更新服务器如果你觉得默认的Windows更新服务器比较慢,或者如果选择了阿里云或腾讯云服务器的话,可以更换Windows服务器。右键开始菜单图标,选择“运行”,然后输入gped…

    2022年6月9日
    313

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号