opencv 之 各种滤波总结

12 篇文章 0 订阅
8 篇文章 0 订阅

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')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值