一篇文章秒懂opencv的全部图像平滑处理操作Python实现

本文详细介绍了图像平滑处理的基本原理与五种常见滤波技术:均值滤波、方框滤波、高斯滤波、中值滤波及双边滤波,并通过Python的OpenCV库演示了每种技术的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像平滑处理的基本原理是,将噪声所在像素点的像素值处理为其周围临近像素点的值得近似值。取近似值得方式很多,本章主要介绍:

  • 均值滤波
  • 方框滤波
  • 高斯滤波
  • 中值滤波
  • 双边滤波
  • 2D卷积也成自定义卷积

第一,均值滤波

import cv2

img = cv2.imread('../data/1.jpg', 1)

f = cv2.blur(img, (3, 3))

cv2.imshow('img', img)
cv2.imshow('f', f)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/blur.jpg', f)

第二,方框滤波,实现归一化的方框滤波相当于均值滤波

import cv2

img = cv2.imread('../data/1.jpg', 1)

f = cv2.boxFilter(img, -1, (3, 3), normalize=0)  # -1表示处理之后的图片深度跟原图片相同

cv2.imshow('img', img)
cv2.imshow('f', f)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/blur.jpg', f)

第三,高斯滤波可以模糊图片边缘信息

import cv2

img = cv2.imread('../data/1.jpg', 1)

f = cv2.GaussianBlur(img, (3, 3), 0, 0)
# 后面两个0表示高斯滤波的权重的标准差根据卷积核的大小来决定(默认卷积核为5计算出来的标准差为1.1)
# 卷积核越大,噪音去除效果会越好,照片会越模糊
cv2.imshow('img', img)
cv2.imshow('f', f)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/blur.jpg', f)

第四,中值滤波

import cv2

img = cv2.imread('../data/1.jpg', 1)

f = cv2.medianBlur(img, 3)

cv2.imshow('img', img)
cv2.imshow('f', f)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/blur.jpg', f)

第五,双边滤波有助于保留图像边界信息,但是去除噪声的效果并不好

import cv2

img = cv2.imread('../data/1.jpg', 1)

f = cv2.bilateralFilter(img, 5, 50, 100)
# 第二个参数表示以当前像素点为中心点的直径
# 第三个参数表示滤波处理时选取的颜色差值范围,该值决定了周围那些像素点能够参与到滤波中来
# 第四个参数它的值越大,说明有越多的点能够参与到该滤波计算中来
cv2.imshow('img', img)
cv2.imshow('f', f)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/blur.jpg', f)


双边滤波处理前
在这里插入图片描述
处理之后
在这里插入图片描述
第六,2D卷积也称自定义卷积
对于图像处理的大神来说,也不是很好搞清楚卷积的真正内含,从某种程度而言,卷积操作是个黑盒子
而不同的卷积核只是它的参数而已,出来的效果谁都无法用理论证明,只要多试几次,然后总结出
相对于好的效果进行实际效果的应用

import cv2
import numpy as np


kernel = np.ones((5, 5), np.float32) / 81  # 在这里自定义卷积核

img = cv2.imread('../data/1.jpg', 1)

f = cv2.filter2D(img, -1, kernel)

cv2.imshow('img', img)
cv2.imshow('f', f)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.imwrite('../data/blur.jpg', f)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值