python加权滤波函数 加权中值滤波matlab

python 中一维数据中值滤波函数 , 在matlab中有 medfilt1函数 , Python中有吗,只找到了图像2维的,有python加权滤波函数的python加权滤波函数 , 在numpy包中
import numpy as np
dat = [1,3,5,6,7,2,4]
med = np.median(dat) # med=4.0
2021-02-08 Python OpenCV GaussianBlur()函数borderType= None)函数
此函数利用高斯滤波器平滑一张图像 。该函数将源图像与指定的高斯核进行卷积 。
src:输入图像
ksize:(核的宽度,核的高度),输入高斯核的尺寸 , 核的宽高都必须是正奇数 。否则,将会从参数sigma中计算得到 。
dst:输出图像,尺寸与输入图像一致 。
sigmaX:高斯核在X方向上的标准差 。
sigmaY:高斯核在Y方向上的标准差 。默认为None,如果sigmaY=0,则它将被设置为与sigmaX相等的值 。如果这两者都为0,则它们的值会从ksize中计算得到 。计算公式为:
borderType:像素外推法 , 默认为None(参考官方文档 BorderTypes
)
在图像处理中,高斯滤波主要有两种方式:
1.窗口滑动卷积
2.傅里叶变换
在此主要利用窗口滑动卷积 。其中二维高斯函数公式为:
根据上述公式,生成一个3x3的高斯核 , 其中最重要的参数就是标准差,标准差越大 , 核中心的值与周围的值差距越?。?曲线越平滑 。标准差越?。酥行牡闹涤胫芪У闹挡罹嘣酱?,曲线越陡峭 。
从图像的角度来说,高斯核的标准差越大,平滑效果越不明显 。高斯核的标准差越?。交Ч矫飨?。
可见,标准差越大 , 图像平滑程度越大
参考博客1:关于GaussianBlur函数
参考博客2:关于高斯核运算
OpenCV-Python系列六:图像滤波 图像滤波是一种十分常见的图像处理手段 。通常,你可以认为相邻位置像素是紧密联系的,它们共同来显示对某个物体,图像滤波则通过运算来排除图像中和周围相差大的像素 。当然,这并不是绝对的,有时候你为了评估图像的质量,也会将这些“特立独行”的像素作为选取的目标。无论你采用什么方法,记住你要的目标就行,有时候你的目标可能是别人的背景 。
滤波常常会使得图像变得模糊(非绝对) , 那么,为什么你需要将一幅清晰的图像变得模糊呢?下面的例子应该可以解释 。
高斯滤波采用满足正态分布的核模板,其参数的主要参数是标准差σ,代表核的离散程度,σ值越?。0逯行南凳氡咴迪凳钤酱螅?平滑的程度越小 。
高斯滤波对图像采集过程中由于不良照明/高温引起的传感器噪声信号有较好的效果,消除了图像中的高频信号 。
由于得到的是一维的Gaussian Kernel,你可以采用下面的方式转为二维的
为了便于直观感受高斯滤波的效果,使用Canny算子来提取轮廓对比,你可以试试在特征提取前加高斯滤波对比 。
补充说明:对于均值滤波,你也可以使用cv2.boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]])来实现,需要将normalize设置为True,当设置normalize为False时,实现的是将kernel内像素相加,官方文档做出的描述为:
中值滤波对图像中的脉冲型(椒盐等)噪声信号处理效果好,当 你的应用场景存在这种颗粒感的噪声信号时,中值滤波会是一种很好的选择。它,选取kernel区域内像素点集的中值最为锚点的像素值,对类似投票机制中的最高分(高灰阶点)和最低分(过低灰阶点)影响有很好的抑制作用 。
如果你的应用涉及到图像美化,双边滤波可以初步达到你的期望,关于双边滤波,这里不做展开,由你来探索 , 其函数参数信息如下 。

推荐阅读