Opencv学习(二)-七种保边滤波器算法

整理:

        之前在博客里对 中值滤波、均值滤波、高斯滤波、双边滤波等进行了整理,其中双边滤波器为保边滤波器。保边滤波器是指在滤波过程中能够有效的保留图像中的边缘信息的一类特殊滤波器,讲这方面的博客也不少,但比较杂和乱,所以整理一下。

         整理了包含五种较为常用的保边滤波算法和选择性模糊、表面模糊这两种有不错效果的算法,总共整理了七种算法,提供了算法原理及代码链接。

编写参考

       opencv学习(7)图像的各种滤波函数的介绍 - 移动开发其他类 - 红黑联盟  https://www.2cto.com/kf/201608/533800.html

https://www.2cto.com/kf/201608/533800.html

    一些保边滤波器搜集(中值滤波、双边滤波、导向滤波等) - CSDN博客  https://blog.csdn.net/wds555/article/details/51546321

 

七种保边滤波器

1. 双边滤波(Bilateral filter)

        双边滤波是一种非迭代的边缘保持平滑的滤波方法。opencv里有自带函数直接实现,前面说过了,也有代码不提了。里面也提到了还有一种改进的快速双边滤波方法。

        这个链接里有相关的介绍 https://blog.csdn.net/eejieyang/article/details/52333112?locationNum=5&fps=1

2. 导向滤波(GuidedFilter)

    opencv实现导向滤波(GuidedFilter) - CSDN博客  https://blog.csdn.net/wds555/article/details/23176313

   导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码 - CSDN博客  https://blog.csdn.net/kuweicai/article/details/78385871   地址链接:https://blog.csdn.net/kuweicai/article/details/78385871

3.双指数边缘平滑滤波器(BiExponentialEPF)

   这个算法在人脸磨皮还有一些边缘保留方面效果比双边要更好一些

   参考:双指数边缘平滑滤波器用于磨皮算法的尝试。http://www.cnblogs.com/Imageshop/p/3293300.html

   这是CSDN里就有资源下载链接https://download.csdn.net/download/zhoupeng39/8215647#comment

4. 加权最小二乘法滤波器(WLS)

    WLS的原理和代码均可参考在 https://blog.csdn.net/bluecol/article/details/48576253

   提出这个算法的作者提供的是MATLAB代码,暂时没有看到C++去实现的,后续有发现或是自己写了的话再添上来。

5. 非均值局部滤波器(NLM)

     非局部均值滤波在计算中加入了每一个点的权重值,所以能够保证在相邻且相差很大的点在方框中求平均值时相互之间的影响减小,也就对图像边缘细节部分保留很多,这样图像看起来会更清晰。

    原理及MATLAB代码:非局部均值滤波算法https://blog.csdn.net/frankgoogle/article/details/52209901

6.选择性模糊

   这个方法暂时看到的资料都出之同一个版本,在这个博客里详细写了,有源码地址。(不确定哪个是原作者,好多地方的都是一样,但是看效果还不错)

  选择性模糊及其算法的实现。http://www.cnblogs.com/Imageshop/p/4694540.html

7.表面模糊

  这也是在别人那看到的,采用C++实现,效果不错。

  C++图像处理 -- 表面模糊 https://blog.csdn.net/maozefa/article/details/8270990

 

 如果有看到新的再给更上来

  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: OpenCV中的双边滤波算法是一种图像处理技术,可以用Python编程实现。双边滤波算法可以在保留图像边缘信息的同时,对图像进行平滑处理。在Python中,可以使用cv2.bilateralFilter()函数来实现双边滤波算法。该函数的参数包括输入图像、滤波器大小、颜色空间标准差和灰度空间标准差等。使用双边滤波算法可以有效地去除图像中的噪声,同时保留图像的细节信息,是图像处理中常用的技术之一。 ### 回答2: OpenCV是一个非常常用的计算机视觉库,在其众多的图像处理算法中,双边滤波是一种经典的局部平滑滤波算法,适用于去除噪声、保持边缘的清晰度。 在Python中,实现双边滤波算法的步骤如下: 1. 导入必要的库 ```python import cv2 import numpy as np ``` 2. 准备图像 双边滤波算法需要输入一幅图像,因此需要读取一张图像。这里以读取一张名为lena.png(灰度图)的图像为例。 ```python img = cv2.imread('lena.png', 0) ``` 3. 进行双边滤波 使用OpenCV中的双边滤波函数cv2.bilateralFilter()进行双边滤波处理,该函数有以下参数: - src: 输入图像 - d: 滤波器半径,单位为像素 - sigmaColor: 色彩空间的标准差 - sigmaSpace: 像素空间的标准差 - dst: 输出图像,可以直接使用输入图像 ```python blurred = cv2.bilateralFilter(img, 9, 75, 75) ``` 4. 显示图像 我们可以使用Matplotlib库来显示图像。 ```python import matplotlib.pyplot as plt plt.subplot(121), plt.imshow(img, cmap='gray') plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(122), plt.imshow(blurred, cmap='gray') plt.title('Blurred Image'), plt.xticks([]), plt.yticks([]) plt.show() ``` 双边滤波能够有效地去除噪声,并保留图像的边缘信息。但是,它的计算成本比较高,因此在对大型图像进行处理时需要考虑计算效率的问题。 ### 回答3: OpenCV是一个广泛使用的计算机视觉库,双边滤波算法是其中一个重要的功能。该算法主要用于对图像进行平滑处理,同时保留边缘信息,实现对图像的降噪和边缘保护。 这种算法基于高斯滤波,但与单纯的高斯滤波不同的是,它需要同时考虑图像上每个像素的空间距离和灰度值差异。这种“空间-灰度权重”的组合能够有效滤除高斯平滑无法消除的噪音,并避免对边缘信息的模糊。 在Python中使用OpenCV实现双边滤波算法非常便利。首先导入OpenCV库,然后可以使用“cv2.bilateralFilter()”函数来调用该算法,并指定相关参数,例如: filtered = cv2.bilateralFilter(img, d, sigmaColor, sigmaSpace) 其中“img”是输入图像,“d”是卷积核直径,是一个正整数,“sigmaColor”和“sigmaSpace”是两个不同权重的参数,分别控制像素相似性权重和空间权重。 例如如果我们要对一个名为“img.jpg”的图片进行双边滤波,可以使用以下代码: import cv2 img = cv2.imread('img.jpg') filtered = cv2.bilateralFilter(img, 9, 75, 75) cv2.imshow('Filtered image', filtered) cv2.waitKey(0) cv2.destroyAllWindows() 在这个实例中,输入图像的卷积核直径为9,“sigmaColor”和“sigmaSpace”均为75,该函数返回一个滤镜过的图像。最后,该图像会被显示在屏幕上,并等待用户按下任意键退出。 总结来说,在处理图像的应用中,双边滤波算法是非常常用的。由于该算法可以消除噪音并保留边缘信息,因此它可以用于图像预处理、模式识别、图像分割等领域。在Python中使用OpenCV库来实现该算法也是很容易的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值