快捷搜索:  汽车  科技

opencv 双边滤波参数(OpenCV图像滤波均值)

opencv 双边滤波参数(OpenCV图像滤波均值)img代表输入图像;-1代表得到的结果在颜色通道上是一致的,一般不用改;ksize代表卷积核大小;normalize代表是否归一化,如果为True,得到的结果同均值滤波。滤波函数: cv2.boxFilter(img -1 ksize normalize)img表示图像变量;ksize表示卷积核大小(n n),卷积核是值全为1的矩阵#(1)均值滤波 # 参数:输入的图像数据,卷积核大小,即滑窗的宽和高,一般用奇数 blur = cv2.blur(img (3 3)) # 显示图像 cv2.imshow('blur' blur) cv2.waitKey(0) cv2.destoryAllWindows()2. 方框滤波原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;方框滤波有2种方法(1)将卷积核内所有像素值相加

内容有: 均值滤波 cv2.blur(),方框滤波 cv2.boxFilter(),高斯滤波 cv2.GaussianBlur(),中值滤波 cv2.medianBlur()


滤波可理解为,平均卷积操作。对于图像上存在的噪声点,通过滤波平滑处理操作,可以去除噪声点。在开始前我们先导入需要用的库文件,获取需要用到的图片。

import cv2 # 指定图像所在文件夹位置 filepath = 'C:\\Users\\admin\\.spyder-py3\\test\\opencv\\img' # 获取文件夹中某张图像 img = cv2.imread(filepath '\\lina.jpg') # 显示图像 cv2.imshow('img' img) # (自定义窗口名 图象变量) cv2.waitKey(0) # 图像不会自动消失 cv2.destoryAllWindows() # 按下任意键图像消失1. 均值滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;对卷积核内的所有像素值求平均,将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

方法:cv2.blur(img ksize)

img表示图像变量;ksize表示卷积核大小(n n),卷积核是值全为1的矩阵

#(1)均值滤波 # 参数:输入的图像数据,卷积核大小,即滑窗的宽和高,一般用奇数 blur = cv2.blur(img (3 3)) # 显示图像 cv2.imshow('blur' blur) cv2.waitKey(0) cv2.destoryAllWindows()

opencv 双边滤波参数(OpenCV图像滤波均值)(1)

opencv 双边滤波参数(OpenCV图像滤波均值)(2)

2. 方框滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;方框滤波有2种方法(1)将卷积核内所有像素值相加,超过255的像素值变成255;(2)对卷积核内的所有像素值求平均。将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

如果方框滤波使用第2种方法得到的结果和均值滤波的结果一样。

滤波函数: cv2.boxFilter(img -1 ksize normalize)

img代表输入图像;-1代表得到的结果在颜色通道上是一致的,一般不用改;ksize代表卷积核大小;normalize代表是否归一化,如果为True,得到的结果同均值滤波。

#(2)方框滤波 # 卷积核3*3 box = cv2.boxFilter(img -1 (3 3) normalize=True) # 显示图像 cv2.imshow('box' box) cv2.waitKey(0) cv2.destoryAllWindows()

下图是normalize=False的图像和normalize=True的图像

opencv 双边滤波参数(OpenCV图像滤波均值)(3)

normalize=False的图像

opencv 双边滤波参数(OpenCV图像滤波均值)(4)

normalize=True的图像

3. 高斯滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;卷积核内的权重值服从高斯分布,离中心点越近的点权值越大。将卷积核内各值与相应像素值做内积,将乘积相加后求平均,将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

滤波方法: cv2.GaussianBlur(img ksize 标准差x 标准差y)

img代表输入图像;ksize卷积核大小,滑窗宽度高度为奇数;标准差x代表沿x方向的卷积核的标准差;标准差y代表沿y方向的卷积核的标准差,不设置的话则和x轴的标准差一致

# 输入图像,卷积核大小,沿x轴方向的标准差=1,沿y轴标准差不设置的话和沿x轴一样 aussian = cv2.GaussianBlur(img (5 5) 1) # 显示图像 cv2.imshow('aussian' aussian) cv2.waitKey(0) cv2.destoryAllWindows()

下图上图为原图,下图为高斯滤波后的图

opencv 双边滤波参数(OpenCV图像滤波均值)(5)

opencv 双边滤波参数(OpenCV图像滤波均值)(6)

4. 中值滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;被卷积核框住的像素值从小到大排序,取中间大小的像素值代替滑窗中最中间的值。将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

滤波方法: cv2.medianBlur(img ksize)

img代表输入的图像,ksize代表滤波模板的尺寸大小,填一个数值,必须是大于1的奇数

#(4)中值滤波 median = cv2.medianBlur(img 5) # 用5*5的卷积核去做滑窗,排序后,取中间那个值 # 显示图像 cv2.imshow('median' median) cv2.waitKey(0) cv2.destoryAllWindows()

下图为原图,下一张为滤波后的图像。可以看出,中值滤波对处理椒盐噪声具有很好的效果。

opencv 双边滤波参数(OpenCV图像滤波均值)(7)

原图

opencv 双边滤波参数(OpenCV图像滤波均值)(8)

滤波后的图像

最后我们来把这三种滤波(均值、高斯、中值)图像放在一起看一下

#(5)一个窗口显示多个图像 # np.hstack()表示沿着横向堆叠 # np.vstack()表示沿着纵向堆叠 # 参数应该为一个元组 import numpy as np res = np.hstack((blur aussian median)) # 图像显示 cv2.imshow('result' res) cv2.waitKey(0) cv2.destoryAllWindows()

opencv 双边滤波参数(OpenCV图像滤波均值)(9)

猜您喜欢: