什么是滤波操作?
通俗的来说就是过滤掉一些我们不太需要的噪点,杂点
其实我个人觉得,对于新手而言,滤波操作会用就行。
这次我们直接来看代码:
import cv2
import numpy as np
#引入库
img = cv2.imread("D:\CSDN/noise.jpg")
#读取图片
img_copy = img
#复制图片
Gauss = cv2.GaussianBlur(img, (7, 7), 3)
#高斯滤波
rest = np.hstack((img, img_copy))
#图像合并
cv2.imshow("rest", rest)
cv2.waitKey(0)
那么执行效果是什么样呢?
有一说一,这么看效果确实不咋地。
但是滤波操作有时候确实有用
所以我在这里直接把怎么使用滤波操作说一下
这篇我介绍四种高斯滤波,方框滤波,中值滤波,均值滤波
高斯滤波:
Gauss=cv2.GaussianBlur(img,(5,5),1)
cv2.imshow("name",Gauss)
cv2.waitKey(0)
这段代码的意思是:输入一张名叫img
的图片,取其中5*5大小的方块,做1次高斯滤波,并命名为Gauss。
也就是说(5,5)
的意思是取多少乘多少的大小,这个可以修改,一般是3*3或者 5 *5
后面那个数字1
的意思是执行几次高斯滤波
方框滤波
box=cv2.boxFilter(img,-1,(3,3),normalize=True)
cv2.imshow("name",box)
cv2.waitKey(0)
方框滤波一般修改的也是(3,3)
这个地方,也是表示像素点的乘积
执行效果:
中值滤波
med = cv2.medianBlur(img, 5)
cv2.imshow("name",med)
cv2.waitKey(0)
这个中值滤波的理解可以用一张图来解释,我就不做解释了
注意,由于中值滤波的操作特点
第一行代码数字的修改一定为奇数!!
第一行代码的意思是:
对于输入的img图像,取5*5的像素点,再取最中间的像素点的值,进行图像处理,最终处理后的图像命名为med
来看一下执行效果:
均值滤波
blur = cv2.blur(img, (3, 3))
cv2.imshow("name", blur)
cv2.waitKey(0)
看了上面三个滤波的意思和操作方法
我对均值滤波就不做过多赘述了
直接看一下执行效果:
对于滤波的深入的原理,我这篇文章没有写,一方面答主水平有限,另一方面有时候对于高深的东西,多使用之后,再去理解其中原理或许会更好一些。