import cv2 as cv
import numpy as npdef bi_demo(image):  # 双边滤波dst = cv.bilateralFilter(image, 0, 100, 15)cv.imshow("bi_demo", dst)def shift_demo(image):  # 均值迁移滤波dst = cv.pyrMeanShiftFiltering(image, 10, 50)cv.imshow("shift_demo", dst)print("--------- Hello Python ---------")
src = cv.imread("D:/opencv/u.jpg")
cv.namedWindow("red", cv.WINDOW_AUTOSIZE)
cv.imshow("red", src)
shift_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

进行边缘保留滤波通常用到两个方法:高斯双边滤波和均值迁移滤波

双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波

bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)

src参数表示待处理的输入图像。
d参数表示在过滤期间使用的每个像素邻域的直径。如果输入d非0,则sigmaSpace由d计算得出,如果sigmaColor没输入,则sigmaColor由sigmaSpace计算得出,如果d提供-1或者0,会从后面的参数sigmaSpace中自动计算。
sigmaColor参数表示色彩空间的标准方差,一般尽可能大。较大的参数值意味着像素邻域内较远的颜色会混合在一起,从而产生更大面积的半相等颜色。
sigmaSpace参数表示坐标空间的标准方差(像素单位),一般尽可能小。参数值越大意味着只要它们的颜色足够接近,越远的像素都会相互影响。当d > 0时,它指定邻域大小而不考虑sigmaSpace。 否则,d与sigmaSpace成正比。

想要得到比较好的结果,3/4/5参数最好都指定。d>5那么计算会很慢,所以一般都设置为d=5,如果少数情况需要去除比较大的噪声,那么d=9,要去的较好的平滑效果,最好在9附近。d或者sigma_space设置的越大,包含的范围越大,耗时越长

均值漂移算法是一种通用的聚类算法,它的基本原理是:对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为中心继续执行上述迭代过程,直至最终收敛。

可以利用均值偏移算法的这个特性,实现彩色图像分割,Opencv中对应的函数是pyrMeanShiftFiltering。这个函数严格来说并不是图像的分割,而是图像在色彩层面的平滑滤波,它可以中和色彩分布相近的颜色,平滑色彩细节,侵蚀掉面积较小的颜色区域,所以在Opencv中它的后缀是滤波“Filter”,而不是分割“segment”。

pyrMeanShiftFiltering(src, sp, sr, dst=None, maxLevel=None, termcrit=None)

第一个参数src,输入图像,8位,三通道的彩色图像,并不要求必须是RGB格式,HSV、YUV等Opencv中的彩色图像格式均可;
第二个参数sp,定义的漂移物理空间半径大小;  #越大,细节丢失越多
第三个参数sr,定义的漂移色彩空间半径大小;
第四个参数dst,输出图像,跟输入src有同样的大小和数据格式;
第五个参数maxLevel,定义金字塔的最大层数;
第六个参数termcrit,定义的漂移迭代终止条件,可以设置为迭代次数满足终止,迭代目标与中心点偏差满足终止,或者两者的结合;

dst = cv.pyrMeanShiftFiltering(image,10,50)   #一般这三个参数就可以了

11 边缘保留滤波(EPF)相关推荐

  1. opencv进阶学习笔记5:图像模糊操作,图像锐化,边缘保留滤波EPF(图像滤镜)

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模糊操作 方法:均值模糊,中值模 ...

  2. opencv学习八:高斯模糊和边缘保留滤波EPF

    1.高斯模糊 1.1 numpy 实现高斯模糊 代码如下: import cv2 as cv import numpy as np#截断函数 def clamp(pv):if pv > 255: ...

  3. 八、边缘保留滤波(EPF)

    一.概念 边缘保留滤波(EPF,edge preserving filtering) 二.高斯双边 cv2.bilateralFilter(image,0,100,15)100为差异,15为周围的区域 ...

  4. 小白学python(opencv边缘保留滤波EPF)

    边缘保留滤波 高斯模糊只考虑了权重,只考虑了像素空间的分布, 没有考虑像素值和另一个像素值之间差异的问题,如果像素间差异较大 的情况下(比如图像的边缘),高斯模糊会进行处理,但是我们不需要 处理边缘, ...

  5. OpenCV学习笔记-边缘保留滤波EPF

    进行边缘保留滤波通常用到两个方法: 1.高斯双边滤波 具体代码: #高斯双边滤波 def bilateral_demo(img):dst = cv.bilateralFilter(src=img,d= ...

  6. OpenCV—边缘保留滤波(EPF)

    高斯双边滤波 前文提到的高斯模糊只考虑了像素空间的分布,而没有考虑差异问题.下图十分形象的说明了边缘保留滤波的原理.一张黑白分明存在噪声的图片通过高斯滤波保留边缘将二者区分开来. 代码解析: # 边缘 ...

  7. 图像处理之积分图应用二(快速边缘保留滤波算法)

    图像处理之积分图应用二(快速边缘保留滤波算法) 一:基本原理 传统的图像边缘保留滤波算法-如高斯双边模糊.Mean-Shift模糊等计算复杂.效率比较低,虽然有各种手段优化或者快速计算方法,当时算法相 ...

  8. 边缘保留滤波算法 EPF

    边缘保留滤波算法 EPF方法: 1.高斯双边滤波 高斯双边滤波与高斯模糊的区别: 高斯双边滤波 在空间和边缘方面,即双边滤波,就是指同时考虑了 空间位置和像素值分布这两点 而高斯模糊只是在空间上进行模 ...

  9. 边缘保留滤波(EPF)

    高斯模糊只考虑了权重,只考虑了像素空间的分布,没有考虑像素值和另一个像素值之间差异的问题,如果像素间差异较大的情况下(比如图像的边缘),高斯模糊会进行处理,但是我们不需要处理边缘,要进行的操作就叫做边 ...

最新文章

  1. 解决Linux 无法使用userdel 删除用户和组的问题
  2. Raspberry Pi 4B 循迹模块
  3. IOS UIView 放大缩小
  4. 研究Xposed相关二:如何root android模拟器(android4.3.1)
  5. java 蓝桥杯算法训练 最大值与最小值的计算(题解)
  6. linux 自动获取ip和dns,linux 配置IP和DNS
  7. 新手学习 react 迷惑的点(完整版)
  8. 【推荐】树莓派设备+AndroidThings操作系统+TensorFlow图像识别SDK
  9. localstorage和sessionStorage和cookies
  10. Python | Path 让文件路径提取变得简单(含代码)
  11. 在Fedora 28上安装LimeSurvey CE
  12. 长方形图片填充为正方形
  13. 开启迅盘:ReadyBoost和ReadyDrive的开启方法
  14. 公司常用邮箱地址大全,公司企业邮箱怎样群发邮件?
  15. 【朝花夕拾】Android自定义View篇之(十)移动阈值TouchSlop及滑动追踪VelocityTracker...
  16. 苹果充电器怎么辨别真假_9款热门充电器盘点:苹果、Anker、紫米、小米、锤子,谁更值得买...
  17. HP246 G6 笔记本升级
  18. 雷蛇zGold与Nexon America建立全球合作伙伴关系
  19. spring cloud 资源服务器授权配置
  20. 阿里云 Redis 报出You can't read against a non-read redis.解决方案

热门文章

  1. ArcScene---修改图层字段
  2. DBeaver 7.1.4下载
  3. MySQL中的字段约束条件
  4. sourcetree拉取LFS
  5. 揭秘威胁情报的王者Talos
  6. 移动端H5页面,关闭手机键盘!
  7. Window7定期批处理删除指定文件且不弹出黑窗口的方法
  8. Vue3基础——条件渲染、列表渲染、事件事件修饰符、父子组件间的数据传递、生命周期钩子
  9. 极品五笔的输入法输入的文字怎么在简繁体之间切换?
  10. Java基础之扩展特性