Open CV系列学习笔记(七)边缘保留滤波(EPF) 2021-02-01

Open CV系列学习笔记(七)边缘保留滤波(EPF)

高斯双边

在这里插入图片描述

双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点 。双边滤波器的好处是可以做边缘保存(edge preserving),一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显地模糊边缘,对于高频细节的保护效果并不明显。
双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波。
代码:

def bi_demo(image):#高斯双边   
    dst = cv.bilateralFilter(image,0,100,15)
    cv.imshow("bi_demo",dst)

结果:
在这里插入图片描述

均值迁移

均值迁移模糊是图像边缘保留滤波算法中一种,经常用来在对图像进行分水岭分割之前去噪声,可以大幅度提升分水岭分割的效果。它的基本原理是:

对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为中心继续执行上述迭代过程,直至最终收敛。

可以利用均值偏移算法的这个特性,实现彩色图像分割,Opencv中对应的函数是pyrMeanShiftFiltering。

这个函数严格来说并不是图像的分割,而是图像在色彩层面的平滑滤波,它可以中和色彩分布相近的颜色,平滑色彩细节,侵蚀掉面积较小的颜色区域。
代码:

def shift_demo(image):#均值迁移
    dst = cv.pyrMeanShiftFiltering(image,10,50)
    cv.imshow("shift_demo",dst)

结果:
在这里插入图片描述

完整代码:

import cv2 as cv
import numpy as np


def 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("--------HEllow Python-------")
src = cv.imread("E:/picture/04.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
shift_demo(src)
cv.waitKey(0)


cv.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值