【OpenCV-Python】09 平滑图像

模糊、平滑图片来消除图片噪声。

代码

# -*- coding: utf-8 -*-
"""
Created on Fri Dec 25 14:39:10 2020

@author: gkm0120
"""
import cv2
import numpy as np

img = cv2.imread('lena.jpg')
# 1.均值滤波
blur = cv2.blur(img, (3, 3))
# 上面的均值滤波也可以用方框滤波实现:normalize=True
# blur = cv2.boxFilter(img, -1, (3, 3), normalize=True)

# 2.高斯滤波
gau_blur = cv2.GaussianBlur(img, (3, 3), 0)
# 三张图片横向叠加对比显示
res = np.hstack((img, blur, gau_blur))
cv2.imshow('res', res)
cv2.waitKey(0)
# 均值滤波vs高斯滤波
img = cv2.imread('gaussian_noise.bmp')
blur = cv2.blur(img, (5, 5))  # 均值滤波
gaussian = cv2.GaussianBlur(img, (5, 5), 1)  # 高斯滤波
res = np.hstack((img, blur, gaussian))
cv2.imshow('gaussian vs average', res)
cv2.waitKey(0)

# 3.均值滤波vs中值滤波
img = cv2.imread('salt_noise.bmp', 0)
blur = cv2.blur(img, (5, 5))  # 均值滤波
median = cv2.medianBlur(img, 5)  # 中值滤波
res = np.hstack((img, blur, median))
cv2.imshow('median vs average', res)
cv2.waitKey(0)

# 4.双边滤波vs高斯滤波
img = cv2.imread('lena.jpg', 0)
gau = cv2.GaussianBlur(img, (5, 5), 0)  # 高斯滤波
blur = cv2.bilateralFilter(img, 5, 75, 75)  # 双边滤波
res = np.hstack((img, gau, blur))
cv2.imshow('res', res)
cv2.waitKey(0)

其中

gaussian_noise(左)、salt_noise(右)

图例

三张图片横向叠加对比显示在这里插入图片描述
均值滤波与高斯滤波的对比结果
在这里插入图片描述
均值滤波与中值滤波的对比结果
在这里插入图片描述
双边滤波与高斯滤波的对比结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值