降噪滤波器的简单使用

卷积神级网络的初步运用

  • 基本概念
  • 各种滤波器的介绍
    • 方盒滤波
    • 均值滤波
    • 高斯滤波
    • 中值滤波
    • 双边滤波
    • 美颜小tool

基本概念

  • 卷积就是卷积核在图像上按照滑动遍历像素时相乘。

  • 把原本的代码与卷积核的内核相乘
    1 0 1
    0 1 0
    1 0 1

  • 参数介绍:

    1. padding:卷积之后参数填充,一般使用 0 来填充
    2. filter:卷积核的边长 3*3,5*5,or 7*7
    3. s:步长为:1
    4. 计算卷积之后的边长: H2 = (H1-f+2p)/s+1
    5. 卷积之后使照片恢复,H1 = H2 补充p = (F-1)/2 圈0
  • 函数使用

    1. cv2.filter2D(src,ddepth,kernel)
    2. scr为照片,ddepth为照片的长度和宽度,默认使用-1。kernel内核为array数据,float32类型
import cv2
import numpy as np
#获取照片
img  =cv2.imread('imgs/44.jpg')
#编写内核
kernel = np.ones((5,5),np.float32)/25
#卷积
dst = cv2.filter2D(img,-1,kernel) 
cv2.imshow('我是卷积之后的照片',dst)
cv2.waitKey(0)

各种滤波器的介绍

方盒滤波

img = cv2.imread('imgs/77.jpg')
dst = cv2.boxFilter(img,-1,(5,5),normalize = True)
cv2.imshow('b',dst)

均值滤波

# dst = cv2.blur(img,(5,5))
# cv2.imshow('b',dst)

高斯滤波

G ( x , y ) = 1 2 π σ 2 G(x,y) = \frac {1}{2 \pi \sigma^2} G(x,y)=2πσ21 e − x 2 + y 2 2 σ 2 e-^\frac{x^2+y^2}{2\sigma^2} e2σ2x2+y2

第一步
需要先计算(0,0)坐标对应的值。 sigmaX参数为:1.5。sigmaX参数越小越尖
1/2*np.pi * 1.5 ** 2=0.0707355
计算(-1,1)的坐标
1/2*np.pi * 1.5 ** 2*np.exp(-(2/2*1.5**2)) =0.0453542

第二步
9个值算出来之后如果相加不为1的话,把每一个值除以9个值相加,使得总概率为1

第三步
每一个值除左上角的数

第四步
与对应的像素点相乘然后把九个点相加作为高斯滤波值

第五步
cv2.GaussianBlur(img,ksize,sigmaX) ksize越大,越平滑


std = cv2.GaussianBlur(img,(5,5),1)
cv2.imshow('b',std)

中值滤波

	 中值滤波原理非常简单,假设有一个数组[1556789],取其中的中间值(即中位数)作为卷积后的结果值即可,中值滤波对胡椒噪音(也叫椒盐噪音)效果明显!
降低噪声比较好用
dst = cv2.medianBlur(img,5)
cv2.imshow('b',dst)

双边滤波

双边滤波对于图像的边缘信息能过更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。

空间距离:指的是当前点与中心点的欧式距离。空间域高斯函数其数学形式为:

e − ( x − x i ) 2 + ( y − y i ) 2 2 σ 2 e-^\frac{(x-x_i)^2+(y-y_i)^2}{2\sigma^2} e2σ2(xxi)2+(yyi)2

灰度距离:指的是当前点灰度与中心点灰度的差的绝对值。

cv2.bilateralFilter(img,d,sigam1,sigma2) 对椒盐噪声没有效果,可以美颜
std = cv2.bilateralFilter(img,7,sigmaColor = 20,sigmaSpace=20)
cv2.imshow('b',std)

美颜小tool

import cv2
img = cv2.imread('图片地址')

#如果图片过大过小,需要调整
#img = cv2.resize(img,(500,500),interpolation=cv2.INTER_AREA)

cv2.imshow('美颜之前',img)
#调整这三个参数的值改变效果
std = cv2.bilateralFilter(img,10,sigmaColor = 50,sigmaSpace=50)
cv2.imshow('美颜之后',std)
cv2.waitKey(0)

你可能感兴趣的:(计算机视觉,opencv,python)