图像与滤波:
参考:http://baijiahao.baidu.com/s?id=1586946173013663587&wfr=spider&for=pc
图像是由行×列的像素组成的,每个像素有R,G,B三种颜色,按每行显示不同颜色的值,从而得到像素点位置与曲线的对应关系。因此,图像就是色彩的波动,波的各种指标可以用来描述图像。
滤波:色彩剧烈变化表示图像的高频位置;色彩稳定平滑表示低频位置,因此就有低频滤波进行模糊化,高频滤波进行边缘检测。
图片,按第一行分通道来显示的结果,如下:
图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。
注意:边界处理
对于有限长的数据,自然会存在两个边界,对于边界的处理有很多种方法,常见的方法有:
卷积核:奇数行,奇数列 线性卷积,遍历图形,从左到右,从上往下,相乘相加
opencv:边界补0
均值滤波: 去噪 破坏图形细节部分
kennel = 1/(3*3)*np.ones((3, 3))
blur(src, ksize, dst=None, anchor=None, borderType=None) # ksize=(3,3)
方框滤波:不进行归一化
kennel = np.ones((3, 3))
boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None): #ddepth = -1 ksize=(3,3)
中值滤波:kennel里排序取中间值
img[i,j,0] = 255 #椒盐噪点
medianBlur(src, ksize, dst=None): #ksize = 1
高斯滤波:类似均值模糊,只是高斯模糊是按照加权平均的,距离越近的点权重越大,距离越远的点权重越小。
s = np.random.normal(0, 20, 3) #加高斯噪声
GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None): #sigmaX =0 ksize=(3,3)
双边滤波:高斯滤波的基础上加了一项像素点的强度值,像素空间差异与强度差异的滤波器,保存图像边缘的特性
bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)#d=0 sigmaColor =100 sigmaSpace =1
- src: 输入图像。
- d: 在过滤期间使用的每个像素邻域的直径。如果输入d非0,则sigmaSpace由d计算得出,如果sigmaColor没输入,则sigmaColor由sigmaSpace计算得出。
- sigmaColor: 色彩空间的标准方差,一般尽可能大。
较大的参数值意味着像素邻域内较远的颜色会混合在一起,
从而产生更大面积的半相等颜色。
- sigmaSpace: 坐标空间的标准方差(像素单位),一般尽可能小。
参数值越大意味着只要它们的颜色足够接近,越远的像素都会相互影响。
当d > 0时,它指定邻域大小而不考虑sigmaSpace。
否则,d与sigmaSpace成正比
均值漂移滤波:聚类算法,色彩层面的平滑滤波,和色彩分布相近的颜色,平滑色彩细节,侵蚀掉面积较小的颜色区域。
pyrMeanShiftFiltering(src, sp, sr, dst=None, maxLevel=None, termcrit=None) #src rgb格式