计算机视觉-高斯滤波
来源:互联网 发布:头戴耳机 隔音 知乎 编辑:程序博客网 时间:2024/05/16 17:16
高斯滤波
高斯滤波:
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和领域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作:用一个模板扫描图像中的每一个像素,用模板确定的领域内像素的加权平均灰度值去替代模板中心像素点的作用。
高斯模糊:
我们常说的高斯模糊使用高斯滤波器完成,高斯模糊是低通滤波器的一种,也就是滤波函数是低通高斯函数,但是高斯滤波器是指用高斯函数作为滤波函数,至于是不是模糊,要看高斯低通还是高通。低通就是模糊,高通就是锐化。
算法步骤:
高斯滤波一般有两种方式可以实现,用离散化窗口卷积,另一种通过傅立叶变换。
高斯模糊是一个非常典型的图像卷积的例子,本质上,高斯模糊将灰度图像和一个高斯核进行卷积操作。
平均过程:
对于图像来说,进行平滑和模糊,就是利用周边像素的平均值。
中间点取周围点的平均值,在图形上相当于产生了模糊的效果,中间的失去了细节。
一维高斯函数:
中心点就是原点,u等于0:
二维高斯函数(中心为原点):
计算平均值的时候,我们只需要将“中心点”作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。这就是上述的与二维高斯核卷积的过程。
假定σ=1.5,模糊半径为1的权重矩阵如下。去进行卷积。
所以说高斯滤波是一种加权平均的卷积方式。根据sigma的大小来做出一个卷积核。但是高斯模糊只是通过一个模板去和目标图像进行卷积。这大概是最大的区别。
下面我将实现高斯模糊和高斯滤波。
code:
import math import numpy as np import Image class MyGaussianBlur(): #初始化 def __init__(self, radius=1, sigema=1.5): self.radius=radius self.sigema=sigema #高斯的计算公式 def calc(self,x,y): res1=1/(2*math.pi*self.sigema*self.sigema) res2=math.exp(-(x*x+y*y)/(2*self.sigema*self.sigema)) return res1*res2 #得到滤波模版 def template(self): sideLength=self.radius*2+1 result = np.zeros((sideLength, sideLength)) for i in range(sideLength): for j in range(sideLength): result[i,j]=self.calc(i-self.radius, j-self.radius) all=result.sum() return result/all #滤波函数 def filter(self, image, template): arr=np.array(image) height=arr.shape[0] width=arr.shape[1] newData=np.zeros((height, width)) for i in range(self.radius, height-self.radius): for j in range(self.radius, width-self.radius): t=arr[i-self.radius:i+self.radius+1, j-self.radius:j+self.radius+1] a= np.multiply(t, template) newData[i, j] = a.sum() newImage = Image.fromarray(newData) return newImage r=1 #模版半径,自己自由调整 s=2 #sigema数值,自己自由调整 GBlur=MyGaussianBlur(radius=r, sigema=s)#声明高斯模糊类 temp=GBlur.template()#得到滤波模版 im=Image.open('lena1.bmp')#打开图片 image=GBlur.filter(im, temp)#高斯模糊滤波,得到新的图片 image.show()#图片显示
阅读全文
0 0
- 计算机视觉-高斯滤波
- 计算机视觉——高斯滤波
- 计算机视觉-高斯滤波(二)
- 【图像处理】【计算机视觉】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波
- 【计算机视觉】形态学滤波
- 计算机视觉-线性滤波
- 计算机视觉-中值滤波
- 计算机视觉-高斯噪声
- 计算机视觉——滤波
- 计算机视觉之线性滤波
- 计算机视觉关于滤波的处理
- 计算机视觉——卡尔曼滤波
- 数学之路-python计算实战(18)-机器视觉-滤波去噪(双边滤波与高斯滤波 )
- 高斯函数在计算机视觉中的应用
- 计算机视觉——SIFT算法之高斯金字塔
- 计算机视觉——SIFT算法之高斯金字塔
- 图像滤波----高斯滤波/中值滤波/均值滤波
- [OpenCv2 计算机视觉编程手册] 第六章 图像滤波
- Mybatis一级和二级缓存
- 带箭头的进度流程 css
- (转)Android Studio 错误 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- 二进制转换
- 机器学习期望最大算法:实例解析
- 计算机视觉-高斯滤波
- unity日常——游戏优化
- 转载:VOIP 客户端比较
- mysql中ifnull()方法的用法
- lnmp如何怎样修改绑定的域名?
- 二叉树遍历方式和实现,以及二叉树查找、统计个数、比较、求深度
- 数人云|你的编程语言价值几何?2017年15种薪资最高编程语言出炉
- 利用镜面反射让游戏闪耀起来
- 1028. 人口普查(20)