python opencv中值滤波_Python Opencv 图像平滑处理

图像平滑处理就是图像滤波,使图像模糊化。

高斯滤波是一种非常常用的模糊平滑方式,是线性滤波中的一种。其广泛的应用在图像处理的减噪过程中,尤其是被高斯噪声所污染的图像上。还经常做为一些复杂算法的第一步,比如Canny边缘检测等。

中值滤波是一种非线性滤波器,常用于消除图像中的椒盐噪声。与低通滤波不同的是,中值滤波有利于保留边缘的尖锐度,但它会洗去均匀介质区域中的纹理。在做为去除相机噪声点的一种方法,还有形态学的开运算也可对相机降噪。

双边滤波是一种非线性滤波器。这是一种结合图像的空间邻近度与像素值相似度的处理办法。在滤波时,该滤波方法同时考虑空间临近信息与颜色相似信息,在滤除噪声、平滑图像的同时,又做到边缘保存。基本思想是:将高斯滤波(空间临近)的原理中,通过各个点到中心点的空间临近度计算的各个权值进行优化,将其优化为空间临近度计算的权值和像素值相似度计算的权值的乘积,优化后的权值再与图像作卷积运算。从而达到保边去噪的效果。

均值迁移滤波图像边缘保留滤波算法中的一种,经常用在对图像进行分水岭分割之前去噪声,可以大幅度提升分水岭分割的效果。主要的效果主要是使得图片具有油画效果,也就是图片中的边缘得以保留,但是差异一定范围内的像素点将展现区域内的平均值。还可用于人脸磨皮去斑~~

import cv2

import numpy as np

from matplotlib import pyplot as plt

img = cv2.imread('002.tif')

# 图像滤波

# 高斯滤波

KsizeX = 5 # x方向核函数尺寸,取值为正奇数

KsizeY = 3 # y方向核函数尺寸,可与X方向不同

out1 = cv2.GaussianBlur(img, (KsizeX, KsizeY), 0)

# 中值滤波

Ksize = 7 # 核函数尺寸,取值范围3-27之间的奇数,默认为3;建议取值3、5、7过大图像模糊化严重,运算慢

out2 = cv2.medianBlur(img, ksize=Ksize)

# 双边滤波

# d为过滤期间使用的每个像素邻域的直径,取值范围建议1-12

# sigmaColor为色彩空间的标准方差,取值范围建议11-200,一般尽可能大。较大的参数值意味着像素邻域内较远的颜色会混合在一起,从而产生更大面积的半相等颜色

# sigmaSpace为坐标空间的标准方差,取值范围建议11-200,一般尽可能小。参数值越大意味着只要它们的颜色足够接近,越远的像素都会相互影响。

d = 10

sigC = 100

sigS = 11

out3 = cv2.bilateralFilter(img, d=d, sigmaColor=sigC, sigmaSpace=sigS)

# 均值迁移滤波

# sp为漂移物理空间半径大小,取值范围建议0-10,数值大于10后运算速度明显变慢

# sr为漂移色彩空间半径大小,取值范围建议0-200,数值越大越模糊

sp = 10

sr = 10

out4 = cv2.pyrMeanShiftFiltering(img, sp=sp, sr=sr)

titles = ['高斯滤波', "中值滤波", "双边滤波", "均值迁移滤波"]

images = [out1, out2, out3, out4]

for i in range(4):

plt.subplot(2, 2, i+1)

plt.imshow(images[i], 'gray')

plt.title(titles[i], fontproperties="SimHei")

plt.xticks([])

plt.yticks([])

plt.show()测试图像处理结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值