当前位置: 首页>前端>正文

k临近均值滤波 均值滤波边界处理


目录

  • 一. 均值滤波
  • 二. 中值滤波
  • 三. 高斯滤波


假设,现在有输入:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_机器学习,第1张

一. 均值滤波

代码如下:

import cv2
import numpy as np

x = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]], dtype=np.float32)
x_mean = cv2.blur(x, (3, 3))
print(x)
print('------------------------')
print(x_mean)

输出结果:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_图像处理_02,第2张

计算过程:

(1)边界填充:

均值滤波默认的边界填充方式为:BORDER_DEFAULT,

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_均值滤波_03,第3张

即BORDER_REFLECT_101,以一种对称的方式对边界进行填充

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_高斯滤波_04,第4张

填充结果如下图所示:

对于上下边界,以[1,2,3]和[7,8,9]为对称轴,把[4,5,6]填充到上下边界,如下图所示:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_高斯滤波_05,第5张

同理,对于左右边界,以纵轴为对称轴,进行填充,如下图所示:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_图像处理_06,第6张

(2)根据滤波器的大小k,取区域内k*k个数字,取均值。以第1个位置为例:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_高斯滤波_07,第7张

如图所示,取5,4,5,2,1,2,5,4,5一共9个数字,计算均值为: (5+4+5+2+1+2+5+4+5)/9 = 3.666。

跟程序计算的结果一致,同理可求得其他位置的值。

二. 中值滤波

代码如下:

import cv2
import numpy as np

x = np.array([[1, 2, 3], 
              [4, 5, 6], 
              [7, 8, 9]], dtype=np.float32)
x_median = cv2.medianBlur(x, 3)
print(x)
print('------------------------')

print(x_median)

输出结果:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_高斯滤波_08,第8张

计算过程:

(1)对边界进行填充:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_图像处理_09,第9张

中值滤波的边界填充方式为: BORDER_REPLICATE,即复制相邻的值作为边界的值,如上图所示。

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_图像处理_10,第10张

(2)根据滤波器大小k,选取区域内的k*k个数字,排序选取中值。以第一个位置1为例:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_k临近均值滤波_11,第11张

选取数字1, 1, 1, 1, 2, 2, 4, 4, 5,可以看到中值为2,所以滤波后第1个位置的值为2。

同理,求得其他位置的值。

三. 高斯滤波

代码如下:

import cv2
import numpy as np

x = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]], dtype=np.float32)
x_gaussian = cv2.GaussianBlur(x, (3, 3), 1)
print(x)
print('------------------------')
print(x_gaussian)

输出结果:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_机器学习_12,第12张

计算过程:

(1)边界填充

高斯滤波默认的边界填充方式和均值滤波的方式一样,也是BORDER_REFLECT_101,因此填充完毕后,如下所示:

k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_高斯滤波_13,第13张

(2)高斯滤波

  • 正态分布,也叫“高斯分布”,曲线如下所示:
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_图像处理_14,第14张

  • 一维正态分布公式如下所示,其中μ为x的均值,σ表示标准差。
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_高斯滤波_15,第15张

  • 图像一般都是二维的,二维正态分布的公式如下所示,假设均值μ为0,(x,y)表示坐标:
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_k临近均值滤波_16,第16张

  • 它的三维图像如下图所示:
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_图像处理_17,第17张

  • 我们可以总结出一个规律:对称,中间大,两边小。
  • 高斯滤波器的值 (注意:这里设置μ=0,σ=1 )
    滤波器大小为3*3,以中心为圆点坐标(0,0),其他位置的作为如下所示:
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_均值滤波_18,第18张

  • 将坐标值代入上面的公式,可得到每个位置的值:
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_均值滤波_19,第19张

  • 再对上面的滤波器进行“归一化”,就是每个位置的值除以各个位置的总和,得到最终的高斯滤波器为:
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_均值滤波_20,第20张

  • 可以看到,高斯滤波器符合“对称,中间大,两边小”的规律
    (3)计算
    将最终得到的滤波器在填充完边界的输入上滑动,作点乘操作,得到各个位置的值。以第一个位置为例:
  • k临近均值滤波 均值滤波边界处理,k临近均值滤波 均值滤波边界处理_高斯滤波_21,第21张

  • 0.07511358 x 5 + 0.07511358 x 5 + 0.07511358 x 5 + 0.07511358 x 5 + 0.12384135 x 4 + 0.12384135 x 4 + 0.12384135 x 2 + 0.12384135 x 2 + 0.20417997 x 1 = 3.19254777,

跟程序计算出来的一致,同理,可得其他位置的值。



https://www.xamrdz.com/web/24b1944727.html

相关文章: