高斯衰减python实现方式
作者:会发paper的学渣
高斯衰减python实现
def get_score_time_weight(original, offset,scale,current_data): diff = current_data-original if math.fabs(diff) < offset: return 1 else: var_sqr = scale**2/(2*math.log(2)) return math.pow(math.e,-(math.fabs(diff)-offset)**2/(2*var_sqr))
效果如下:
对应的实际计算公式正态分布概率密度函数去掉常数项为:
高斯滤波学习笔记
在图像处理中,高斯滤波一般有两种实现方式,一是用离散化窗口滑窗卷积,另一种通过傅里叶变换。最常见的就是第一种滑窗实现,只有当离散化的窗口非常大,用滑窗计算量非常大(即使用可分离滤波器的实现)的情况下,可能会考虑基于傅里叶变化的实现方法。
原理
图像大多数噪声均属于高斯噪声,因此高斯滤波器应用也较广泛。高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像去噪。
可以简单地理解为,高斯滤波去噪就是对整幅图像像素值进行加权平均,针对每一个像素点的值,都由其本身值和邻域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作是:用一个用户指定的模板(或称卷积、掩膜)去扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
一维高斯分布:
二维高斯分布:
高斯模糊:
我们常说的高斯模糊就是使用高斯滤波器完成的,高斯模糊是低通滤波的一种,也就是滤波函数是低通高斯函数,但是高斯滤波是指用高斯函数作为滤波函数,至于是不是模糊,要看是高斯低通还是高斯高通,低通就是模糊,高通就是锐化。
滤波器是建立的一个数学模型,通过它来将图像数据进行能量转化,能量低的就排除掉,噪声属于低能量部分。编程运算的话就是一个模板运算,拿图像的八连通区域来说,中间点的像素值就等于八连通区的像素值的均值,这样达到平滑的效果。假如使用理想滤波器,则会在图像中产生振铃现象。如果采用高斯滤波器,系统函数为平滑的,避免了振铃现象(图像处理中,对一幅图像进行滤波处理,若选用的频域滤波器具有陡峭的变化,则会使滤波图像产生“振铃”,所谓“振铃”,就是指输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。).
理想滤波器是指能使通带内信号的幅值和相位都不失真,阻带内的频率成分都衰减为零的滤波器,其通带和阻带之间有明显的分界线。也就是说,理想滤波器在通带内的幅频特性应为常数,相频特性的斜率为常值;在通带外的幅频特性应为零。
由于高斯函数的傅立叶变换仍是高斯函数, 因此高斯函数能构成一个在频域具有平滑性能的低通滤波器。可以通过在频域做乘积来实现高斯滤波。均值滤波是对信号进行局部平均, 以平均值来代表该像素点的灰度值。矩形滤波器(Averaging Box Filter)对这个二维矢量的每一个分量进行独立的平滑处理。通过计算和转化 ,得到一幅单位矢量图。这个 512×512的矢量图被划分成一个 8×8的小区域 ,再在每一个小区域中 ,统计这个区域内的主要方向 ,亦即将对该区域内点方向数进行统计,最多的方向作为区域的主方向。于是就得到了一个新的64×64的矢量图。这个新的矢量图还可以采用一个 3×3模板进行进一步的平滑。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。