返回顶部
首页 > 资讯 > 精选 >bilateral filter双边滤波器的实现原理是什么
  • 769
分享到

bilateral filter双边滤波器的实现原理是什么

2023-06-06 17:06:47 769人浏览 薄情痞子
摘要

本篇文章为大家展示了bilateral filter双边滤波器的实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 双边滤波(Bilateral filter)的原理双边滤波器之所以能够做

本篇文章为大家展示了bilateral filter双边滤波器的实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

双边滤波(Bilateral filter)的原理

双边滤波器之所以能够做到在平滑去噪的同时还能够很好的保存边缘(Edge Preserve),是由于其滤波器的核由两个函数生成:空间域核和值域核

(1)空间域核:由像素位置欧式距离决定的模板权值bilateral filter双边滤波器的实现原理是什么

bilateral filter双边滤波器的实现原理是什么

bilateral filter双边滤波器的实现原理是什么为模板窗口的其他系数的坐标;其中bilateral filter双边滤波器的实现原理是什么

为模板窗口的中心坐标点;bilateral filter双边滤波器的实现原理是什么bilateral filter双边滤波器的实现原理是什么

为高斯函数的标准差。 使用该公式生成的滤波器模板和高斯滤波器使用的模板是没有区别的。

在一些博客和教程里,这个权值bilateral filter双边滤波器的实现原理是什么称为定义域核,也称为空间系数,或空间域(spatial domain S)。显示由bilateral filter双边滤波器的实现原理是什么的计算公式可知,它是计算临近点bilateral filter双边滤波器的实现原理是什么到中心点bilateral filter双边滤波器的实现原理是什么临近程度,因此定义域核bilateral filter双边滤波器的实现原理是什么是用于衡量空间临近的程度。

(2)值域核:由像素值的差值决定的模板权值bilateral filter双边滤波器的实现原理是什么

bilateral filter双边滤波器的实现原理是什么

其中,bilateral filter双边滤波器的实现原理是什么为模板窗口的其他系数的坐标,bilateral filter双边滤波器的实现原理是什么表示图像在点bilateral filter双边滤波器的实现原理是什么处的像素值;bilateral filter双边滤波器的实现原理是什么为模板窗口的中心坐标点,对应的像素值为bilateral filter双边滤波器的实现原理是什么bilateral filter双边滤波器的实现原理是什么bilateral filter双边滤波器的实现原理是什么为高斯函数的标准差。

一般将权值bilateral filter双边滤波器的实现原理是什么称为值域核,像素值域(range domain R),不管是值域核bilateral filter双边滤波器的实现原理是什么还是空间域核bilateral filter双边滤波器的实现原理是什么,其大小都在[0 1]之间

(3)将上述两个模板相乘就得到了双边滤波器的模板权值:

bilateral filter双边滤波器的实现原理是什么

因此,双边滤波器的数据公式可以表示如下:

bilateral filter双边滤波器的实现原理是什么

2. 双边滤波(Bilateral filter)理解

双边滤波(Bilateral filter)其综合了高斯滤波器(Gaussian Filter)和α-截尾均值滤波器(Alpha-Trimmed mean Filter)的特点,同时考虑了空间域与值域的差别,而Gaussian Filter和α均值滤波分别只考虑了空间域和值域差别。高斯滤波器只考虑像素间的欧式距离,其使用的模板系数随着和窗口中心的距离增大而减小;α-截尾均值滤波器则只考虑了像素灰度值之间的差值,去掉α%的最小值和最大值后再计算均值。

2.1 空域权重bilateral filter双边滤波器的实现原理是什么和值域权重bilateral filter双边滤波器的实现原理是什么的意义:

空域权重bilateral filter双边滤波器的实现原理是什么衡量的是 bilateral filter双边滤波器的实现原理是什么两点之间的距离,距离越远权重越低;

值域权重bilateral filter双边滤波器的实现原理是什么衡量的是bilateral filter双边滤波器的实现原理是什么两点之间的像素值相似程度,越相似权重越大

这里从图像的平坦区域边缘区域定性分析双边滤波的降噪效果

  • 在平坦区域,临近像素的像素值的差值较小,对应值域权重bilateral filter双边滤波器的实现原理是什么接近于1,此时空域权重bilateral filter双边滤波器的实现原理是什么起主要作用,相当于直接对此区域进行高斯模糊。因此,平坦区域相当于进行高斯模糊。

  • 在边缘区域,临近像素的像素值的差值较大,对应值域权重bilateral filter双边滤波器的实现原理是什么接近于0,导致此处核函数下降(因bilateral filter双边滤波器的实现原理是什么),当前像素受到的影响就越小,从而保持了原始图像的边缘的细节信息。

3. OpenCV双边滤波函数:

opencv中提供了bilateralFilter()函数来实现双边滤波操作,其原型如下:

void cv::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值,这个参数的值月大,表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的半相等颜色区域。 (这个参数可以理解为值域核bilateral filter双边滤波器的实现原理是什么bilateral filter双边滤波器的实现原理是什么

  • double sigmaSpace: 坐标空间中滤波器的sigma值,如果该值较大,则意味着越远的像素将相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当d>0时,d指定了邻域大小且与sigmaSpace无关,否则d正比于sigmaSpace. (这个参数可以理解为空间域核bilateral filter双边滤波器的实现原理是什么bilateral filter双边滤波器的实现原理是什么

  • int borderType=BORDER_DEFAULT: 用于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT.

双边滤波器可以很好的保存图像边缘细节而滤除掉低频分量的噪音,但是双边滤波器的效率不是太高,花费的时间相较于其他滤波器而言也比较长。
对于简单的滤波而言,可以将两个sigma值设置成相同的值,如果值<10,则对滤波器影响很小,如果值>150则会对滤波器产生较大的影响,会使图片看起来像卡通。

示例代码:

#include <iOStream>#include <opencv2/core.hpp>#include <opencv2/highgui.hpp>#include <opencv2/imgproc.hpp> using namespace std;using namespace cv; //定义全局变量const int g_ndMaxValue = 100;const int g_nsigmaColORMaxValue = 200;const int g_nsigmaSpaceMaxValue = 200;int g_ndValue;int g_nsigmaColorValue;int g_nsigmaSpaceValue; Mat g_srcImage;Mat g_dstImage; //定义回调函数void on_bilateralFilterTrackbar(int, void*); int main(){ g_srcImage = imread("lena.jpg");  //判断图像是否加载成功 if(g_srcImage.empty()) { cout << "图像加载失败!" << endl; return -1; } else cout << "图像加载成功!" << endl << endl;  namedWindow("原图像", WINDOW_AUTOSIZE); imshow("原图像", g_srcImage);  //定义输出图像窗口属性和轨迹条属性 namedWindow("双边滤波图像", WINDOW_AUTOSIZE); g_ndValue = 10; g_nsigmaColorValue = 10; g_nsigmaSpaceValue = 10;  char dName[20]; sprintf(dName, "邻域直径 %d", g_ndMaxValue);  char sigmaColorName[20]; sprintf(sigmaColorName, "sigmaColor %d", g_nsigmaColorMaxValue);  char sigmaSpaceName[20]; sprintf(sigmaSpaceName, "sigmaSpace %d", g_nsigmaSpaceMaxValue);  //创建轨迹条 createTrackbar(dName, "双边滤波图像", &g_ndValue, g_ndMaxValue, on_bilateralFilterTrackbar); on_bilateralFilterTrackbar(g_ndValue, 0);  createTrackbar(sigmaColorName, "双边滤波图像", &g_nsigmaColorValue,   g_nsigmaColorMaxValue, on_bilateralFilterTrackbar); on_bilateralFilterTrackbar(g_nsigmaColorValue, 0);  createTrackbar(sigmaSpaceName, "双边滤波图像", &g_nsigmaSpaceValue,   g_nsigmaSpaceMaxValue, on_bilateralFilterTrackbar); on_bilateralFilterTrackbar(g_nsigmaSpaceValue, 0);  waiTKEy(0);  return 0;} void on_bilateralFilterTrackbar(int, void*){ bilateralFilter(g_srcImage, g_dstImage, g_ndValue, g_nsigmaColorValue, g_nsigmaSpaceValue); imshow("双边滤波图像", g_dstImage);}

上述内容就是bilateral filter双边滤波器的实现原理是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: bilateral filter双边滤波器的实现原理是什么

本文链接: https://lsjlt.com/news/248003.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • bilateral filter双边滤波器的实现原理是什么
    本篇文章为大家展示了bilateral filter双边滤波器的实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 双边滤波(Bilateral filter)的原理双边滤波器之所以能够做...
    99+
    2023-06-06
  • Servlet中Filter的实现原理是什么
    这篇文章主要讲解了“Servlet中Filter的实现原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Servlet中Filter的实现原理是什么”...
    99+
    2024-04-02
  • J-Hi查询过滤器的实现原理是什么
    本篇文章给大家分享的是有关J-Hi查询过滤器的实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。J-Hi设计自己的查询过滤器而没有直接采用Hibernate的Crit...
    99+
    2023-06-17
  • java中filter过滤器的用法是什么
    在Java中,过滤器(Filter)是一种用于在请求到达目标资源之前或之后执行某些操作的组件。过滤器可以用于实现对请求的拦截、修改或...
    99+
    2023-10-11
    java
  • c#中filter的工作原理是什么
    在C#中,filter通常指的是LINQ中的Where方法,用于筛选集合中符合条件的元素。其工作原理是通过传入一个谓词(P...
    99+
    2024-04-02
  • Vue2.x中双向绑定的实现原理是什么
    Vue2.x中双向绑定的实现原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Vue 数据双向绑定原理Vue...
    99+
    2024-04-02
  • java过滤器的工作原理是什么
    Java过滤器的工作原理是基于Servlet规范中的过滤器接口(javax.servlet.Filter)来实现的。过滤器可以用于在...
    99+
    2023-08-26
    java
  • Vue2.0/3.0双向数据绑定的实现原理是什么
    这篇文章给大家分享的是有关Vue2.0/3.0双向数据绑定的实现原理是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框...
    99+
    2023-06-14
  • redis布隆过滤器的工作原理是什么
    Redis布隆过滤器是一种数据结构,用于快速判断一个元素是否存在于一个集合中。它基于位数组和多个哈希函数实现。 工作原理如下: 初...
    99+
    2024-04-09
    redis
  • python双端队列的原理是什么
    这篇文章主要介绍python双端队列的原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(浮...
    99+
    2023-06-14
  • CAS的实现原理是什么
    本篇内容主要讲解“CAS的实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CAS的实现原理是什么”吧!悲观锁与乐观锁悲观锁总是假设最坏的情况,线程a...
    99+
    2024-04-02
  • LongAdder的实现原理是什么
    LongAdder的实现原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。AtomicLong的实现原理图:LongAdder是JDK8...
    99+
    2024-04-02
  • SSH的实现原理是什么
    本篇内容介绍了“SSH的实现原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SSH是一种协议标准,它的主要目的是实现远程登录和提供安...
    99+
    2023-06-17
  • CountDownLatch的实现原理是什么
    这篇文章主要讲解了“CountDownLatch的实现原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CountDownLatch的实现原理是什么”吧! 前言CountDo...
    99+
    2023-06-15
  • Linux的实现原理是什么
    本篇内容主要讲解“Linux的实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的实现原理是什么”吧!1 引言90年代以来,数控技术发展的一个重要趋势是数控系统的开放化。目前...
    99+
    2023-06-16
  • ConcurrentHashMap的实现原理是什么
    这篇文章将为大家详细讲解有关ConcurrentHashMap的实现原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.HashTable与ConcurrentHashMap的对比H...
    99+
    2023-06-19
  • sync.Pool的实现原理是什么
    本篇内容主要讲解“sync.Pool的实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sync.Pool的实现原理是什么”吧!sync.Pool实现原理对象的创建和销毁会消耗一定的系...
    99+
    2023-06-19
  • hooks的实现原理是什么
    Hooks是React 16.8版本引入的一种新特性,它可以让我们在不编写class的情况下使用state和其他React的特性。H...
    99+
    2023-10-10
    hooks
  • chatgpt的实现原理是什么
    本文小编为大家详细介绍“chatgpt的实现原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“chatgpt的实现原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2023-02-21
    chatgpt
  • vuex的实现原理是什么
    本篇内容主要讲解“vuex的实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vuex的实现原理是什么”吧!关于vuex就不再赘述,简单回顾一下:当应用碰到多个组件共享状态时,简单的单...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作