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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 海康sdk协议接口_海康威视开发平台

    海康sdk协议接口_海康威视开发平台本文接上次的博客海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一),上个博客中并未用到QT,本文介绍项目内容及源码,供大家参考。由于我的项目中是用海康相机作为拍照的一个中介,重点是在目标识别方向,请阅读源码时自动忽略。如果对目标识别感兴趣,可以参考我的YOLO系列https://blog.csdn.net/qq_45445740/category_9794819.html目录1.说明1.1环境配置1.2背景说明2.源码MvCamera.hmythread.

    2025年8月15日
    1
  • eagleget安卓_android startactivityforresult

    eagleget安卓_android startactivityforresult前言:AndroidEagleEye官方介绍在https://github.com/MindMac/AndroidEagleEye/blob/master/README-zh.md真的像老鹰样检测系统调用了哪些api,作者很厉害!作为笔记来说,是官方readme的补充,也是自己的备忘。笔记1,EagleEye源码能否修改再重新打包?能,修改代码后加上

    2022年8月16日
    5
  • Advanced System Care官方下载(附激活码)

    Advanced System Care官方下载(附激活码)iobit公司出品的一款系统辅助工具AdvancedSystemCare,它通过对系统全方位的诊断,找到系统性能的瓶颈所在,并将测试结果显示出来。针对系统的瓶颈对其优化,提高效率发挥最大的性能,通过优化后系统性能和网络速度都会有明显提升包含基本功能,注册表清理,垃圾文件清理等。现今系统清理,系统优化工具满天飞,可是很少有对系统全方位的诊断,找到系统性能的瓶颈所在,然后有针对性地进行修改、优化…

    2022年10月20日
    2
  • android签名命令行,Android系统签名位置及命令

    android签名命令行,Android系统签名位置及命令app需要使用系统的权限在AndroidManifest.xml中声明了系统全下申明了系统权限android:sharedUserId=”android.uid.system”1.找到平台签名文件“platform.pk8”和“platform.x509.pem”文件位置android/build/target/product/security/2.签名工具“signapk.jar”位置…

    2022年6月21日
    25
  • 9_商品详情页面解决方案

    9_商品详情页面解决方案需求分析当搜索商品时,显示商品的详细信息,同时选择不同的sku,进行不同的数据显示解决方案商家更改数据微服务,通过消息队列MQ监听到发生变化,微服务调用者使用Thymeleaf模板,生成相应的静态页面,储存在本地磁盘,当用户发送请求到微服务时,使用nginx技术进行相应页面的返回商品详情页面静态化1、建Module:supergo_page2、改pom<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http

    2022年6月25日
    26
  • nfs默认端口号是多少_nfs怎么访问

    nfs默认端口号是多少_nfs怎么访问默认是2049参考博客:https://www.cnblogs.com/powpoia/p/6553205.html

    2022年4月19日
    146

发表回复

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

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