opencv 之 各种滤波总结

简介: opencv 之 各种滤波总结

1.平均滤波

import cv2
import matplotlib.pyplot as plt
import numpy as np
# 最简单的平均卷积操作,把周边的元素求平均值得到的平均值作为元素值
img = cv2.imread('jiao.jpg')
blur = cv2.blur(img, (3, 3))
plt.figure(figsize=(25, 12))
plt.subplot(2, 3, 1), plt.imshow(img[:, :, ::-1],aspect='auto'), plt.title('original')
plt.subplot(2, 3, 2), plt.imshow(blur[:, :, ::-1],aspect='auto'), plt.title('blur')

可以看到椒盐点变模糊了,但是依旧存在,毕竟计算的是平均值

2.方框滤波

import cv2
import matplotlib.pyplot as plt
import numpy as np
# 方框滤波和均值滤波很像,只不过均值滤波是求了这九个元素的平均值,方框则是不求平均值 ( normalize=False的时候 )
# 如果相加超过了255,就按照255来计算
# 若normalize=True  开启了归一化,也就是如果这个值是True就和平均滤波一样了
img = cv2.imread('jiao.jpg')
box = cv2.boxFilter(img, -1, (3, 3), normalize=False)   
plt.figure(figsize=(25, 12))
plt.subplot(2, 3, 1), plt.imshow(img[:, :, ::-1]), plt.title('original')
plt.subplot(2, 3, 2), plt.imshow(box[:, :, ::-1]), plt.title('blur')

这里如果normalize = False 那么效果如下

可以看到他的效果太差了,如果我们改为 True那么就是平均滤波了

3.高斯滤波

import cv2
import matplotlib.pyplot as plt
import numpy as np
# 高斯滤波的分布曲线就是一个高斯分布, 越靠近目标点, 权值越大
img = cv2.imread('jiao.jpg')
gauss = cv2.GaussianBlur(img, (5, 5), 1)   
plt.figure(figsize=(25, 12))
plt.subplot(2, 3, 1), plt.imshow(img[:, :, ::-1]), plt.title('original')
plt.subplot(2, 3, 2), plt.imshow(gauss[:, :, ::-1]), plt.title('gauss')

高斯滤波也是做了一定的权重来计算的,所以椒盐斑点依旧在

4. 中值滤波

import cv2
import matplotlib.pyplot as plt
import numpy as np
# 中值滤波十分好理解,就是求中间值
img = cv2.imread('jiao.jpg')
median = cv2.medianBlur(img, 5)   
plt.figure(figsize=(25, 12))
plt.subplot(2, 3, 1), plt.imshow(img[:, :, ::-1]), plt.title('original')
plt.subplot(2, 3, 2), plt.imshow(median[:, :, ::-1]), plt.title('median')

可以看到中值滤波的效果最好,毕竟他是取得中间值,对于斑点位置的数据都会作为极值而抛弃

5.平均, 高斯, 中值三种滤波效果对比

import cv2
import matplotlib.pyplot as plt
import numpy as np
res = np.hstack((img, blur, gauss, median))  # 该函数可以把多个图像进行合并
plt.figure(figsize=(70, 110))
plt.subplot(2, 3, 2), plt.imshow(res[:, :, ::-1]), plt.title('result')

相关文章
|
3月前
|
计算机视觉
OpenCV(二十四):可分离滤波
OpenCV(二十四):可分离滤波
106 0
|
3月前
|
计算机视觉
OpenCV(二十三):中值滤波
OpenCV(二十三):中值滤波
74 0
|
10月前
|
计算机视觉
openCV的中值滤波
openCV的中值滤波
30 0
|
2月前
|
资源调度 算法 计算机视觉
【Qt&OpenCV 图像平滑/滤波处理 -- Blur/Gaussian/Median/Bilateral】
【Qt&OpenCV 图像平滑/滤波处理 -- Blur/Gaussian/Median/Bilateral】
37 0
|
3月前
|
资源调度 API 计算机视觉
【OpenCV】—非线性滤波:中值滤波、双边滤波
【OpenCV】—非线性滤波:中值滤波、双边滤波
|
3月前
|
编解码 计算机视觉 C++
【OpenCV】—形态学滤波(1):腐蚀与膨胀
【OpenCV】—形态学滤波(1):腐蚀与膨胀
|
3月前
|
存储 编解码 资源调度
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
110 2
|
3月前
|
API 计算机视觉
【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
|
10月前
|
计算机视觉
OpenCV-中值滤波cv::medianBlur
OpenCV-中值滤波cv::medianBlur
|
3月前
|
Serverless 计算机视觉
OpenCV(二十二):均值滤波、方框滤波和高斯滤波
OpenCV(二十二):均值滤波、方框滤波和高斯滤波
131 1