卷积就是卷积核在图像上按照滑动遍历像素时相乘。
把原本的代码与卷积核的内核相乘
1 0 1
0 1 0
1 0 1
参数介绍:
函数使用
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} e−2σ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} e−2σ2(x−xi)2+(y−yi)2
灰度距离:指的是当前点灰度与中心点灰度的差的绝对值。
cv2.bilateralFilter(img,d,sigam1,sigma2) 对椒盐噪声没有效果,可以美颜
std = cv2.bilateralFilter(img,7,sigmaColor = 20,sigmaSpace=20)
cv2.imshow('b',std)
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)