OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器)(下)

简介: OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器)

4. 高斯滤波器 cv2.GaussianBlur()

高斯滤波器也被称为高斯模糊高斯平滑

高斯滤波器可以在降低图片噪声、细节层次的同时保留更多的图像信息,使经过处理的图像呈现出“磨砂玻璃”的滤镜效果。


使用均值滤波时,每个像素都是均等权重的。使用高斯滤波器求的是不同权重下的均值,越靠近核心的像素的权重越大,约靠近边缘的像素的权重则越小。

与滤波核对应的由每个数据权重组成的矩阵结构,是一个卷积核。卷积核中所有权重值的和为1。卷积核中的数值会随着核的大小而变化。

OpenCV使用cv2.GaussianBlur()方法实现高斯滤波器。其语法如下:


GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)


其中

src 为目标图像

ksize 是滤波核大小,宽高必须是奇数 。格式为是元组形式。

修改sigmaX 和 sigmaY都会改变卷积核中的权重值。这里涉及卷积方面的知识。

borderType 是边界类型。


以9×9的滤波核为例

import cv2
img = cv2.imread("longmen.jpg")
dst1 = cv2.GaussianBlur(img, (9, 9), 0, 0)
cv2.imshow("9*9", dst1)
cv2.waitKey()
cv2.destroyAllWindows()

滤波后效果如下:

image.png

5. 双边滤波器 cv2.bilateralFilter()

前三种滤波方式都会使图像变得平滑的同时,边缘区域变得模糊不清。

双边滤波是可以在滤波过程中起到保护图像边界信息作用的滤波操作方法。


其逻辑为:

如果图像在边缘区域,则加大边缘像素的权重,尽可能地让边缘区域的像素值保持不变。如果不在边缘区域(在平坦区域),则使用类似高斯滤波器的算法进行。


双边滤波器的语法为:

bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)


scr   即目标图像


d   过滤期间使用的每个像素邻域的直径。如果为非正,则根据sigmaSpace计算。即如果为15,则表示15×15的滤波核。


sigmaColor   参与计算的颜色的范围,只有像素小于这个值时,以其为核心的滤波核才参与滤波计算。否则不参与。当sigmaColor值为255时,表示所有像素值为核心的滤波核都会参与。

sigmaSpace   坐标空间的σ \sigmaσ值,σ \sigmaσ越大,参与计算的像素数量就越多。


borderType   边界的样式。


还以图片"longmen.jpg"为例,

选择20×20的滤波核,

参与计算的像素值范围为:小于125的像素值;

坐标空间的σ \sigmaσ值为,200

import cv2
img = cv2.imread("longmen.jpg")
# 双边滤波,选取范围直径为15,颜色范围为125
dst = cv2.bilateralFilter(img, 15, 125, 200)
cv2.imshow("bilateral", dst)
cv2.waitKey()
cv2.destroyAllWindows()

双边滤波效果如下:

image.png

可以看出,相比以上滤波效果,双边滤波保留了较清晰的图像边缘信息。

目录
相关文章
|
5月前
|
机器学习/深度学习 人工智能 算法
Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。
【7月更文挑战第5天】Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。CV涉及图像处理、模式识别和机器学习,用于图像理解和生成。Python的跨平台特性和活跃社区使其成为CV的理想工具。基本流程包括图像获取、预处理、特征提取、分类识别及图像生成。例如,面部识别通过预处理图像,使用如`cv2.CascadeClassifier`进行检测;物体检测类似,但需适应不同目标;图像生成则利用GAN创造新图像。
71 4
|
3月前
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。
|
7月前
|
数据可视化 数据挖掘 Python
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(下)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
7月前
|
数据可视化 API 开发者
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(上)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
5月前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
331 19
|
6月前
|
机器学习/深度学习 监控 自动驾驶
如何使用 Python 和 OpenCV 进行实时目标检测
如何使用 Python 和 OpenCV 进行实时目标检测
|
6月前
|
算法 计算机视觉 Python
python+opencv实现车牌定位
python+opencv实现车牌定位
|
6月前
|
机器学习/深度学习 监控 算法
使用Python和OpenCV实现简单的人脸识别系统
使用Python和OpenCV实现简单的人脸识别系统
69 0
|
7月前
|
数据采集 Java 数据挖掘
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
|
7月前
|
计算机视觉 Python
【Python实战】——Python+Opencv是实现车牌自动识别
【Python实战】——Python+Opencv是实现车牌自动识别