文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-06 17:49

关注

本篇文章为大家展示了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双边滤波器的实现原理是什么两点之间的像素值相似程度,越相似权重越大

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

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位或浮点型单通道、三通道的图像。

双边滤波器可以很好的保存图像边缘细节而滤除掉低频分量的噪音,但是双边滤波器的效率不是太高,花费的时间相较于其他滤波器而言也比较长。
对于简单的滤波而言,可以将两个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双边滤波器的实现原理是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯