Python-OpenCV图像处理-06-模糊操作

简介: Python-OpenCV图像处理-06-模糊操作

过滤是信号和图像处理中基本的任务。其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息。过滤可以移除图像中的噪音、提取感兴趣的可视特征、允许图像重采样等等。频域分析将图像分成从低频到高频的不同部分。低频对应图像强度变化小的区域,而高频是图像强度变化非常大的区域。在频率分析领域的框架中,滤波器是一个用来增强图像中某个波段或频率并阻塞(或降低)其他频率波段的操作。低通滤波器是消除图像中高频部分,但保留低频部分。高通滤波器消除低频部分。

模糊操作基本原理

1.基于离散卷积

2.定义好每个卷积核

3.不同卷积核得到不同的卷积效果

4.模糊是卷积的一种表象

去除随机噪声 :


均值过滤:

图片中一个方块区域(一般为3*3)内,中心点的像素为全部点像素值的平均值。均值滤波就是对于整张图片进行以上操作。

我们可以看下图的矩阵进行理解

image.png

这个就相当于选取3X3的矩阵求中心像素的均值

importcv2ascvimportnumpyasnp#均值模糊defblur_demo(image):
dst=cv.blur(image,(5,5))
cv.imshow("blur_demo",dst)

1.均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

低通滤波(均值模糊)函数原型:blur(src, ksize[, dst[, anchor[, borderType]]]) -> dst

src参数表示待处理的输入图像。

ksize参数表示模糊内核大小。比如(1,15)表示生成的模糊内核是一个1*15的矩阵。

dst参数表示输出与src相同大小和类型的图像。

anchor参数、borderType参数可忽略

去掉椒盐噪声效果好:中值过滤


#去掉椒盐噪声效果好defmedian_blur_demo(image):
dst=cv.medianBlur(image,5)
cv.imshow("median_demo",dst)

2.中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。具体原理参见博客:https://blog.csdn.net/weixin_37720172/article/details/72627543

中值滤波(中值模糊)函数原型:medianBlur(src, ksize[, dst]) -> dst

src参数表示待处理的输入图像。

ksize参数表示滤波窗口尺寸,必须是奇数并且大于1。比如这里是5,中值滤波器就会使用5×5的范围来计算,即对像素的中心值及其5×5邻域组成了一个数值集,对其进行处理计算,当前像素被其中值替换掉。

dst参数表示输出与src相同大小和类型的图像。

自定义模糊处理:


#自定义模糊 (卷积可以处理模糊和锐化)defcustom_blur_demo(image):
kernel=np.ones([5,5],np.float32)/25dst=cv.filter2D(image,-1,kernel=kernel)
cv.imshow("custom_blur_demo",dst)
kernel1=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
dst1=cv.filter2D(image,-1,kernel=kernel1)
cv.imshow("custom_blur_demo",dst1)

3.用户自定义模糊

所用函数:filter2D()

函数原型: filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) -> dst

src参数表示待处理的输入图像。

ddepth参数表示目标图像深度,输入值为-1时,目标图像和原图像深度保持一致

kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵。修改kernel矩阵即可实现不同的模糊

测试:


src=cv.imread("C:\\Users\\william\\Pictures\\go.jpg")
cv.imshow("input image",src)
blur_demo(src)
custom_blur_demo(src)
median_blur_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
目录
相关文章
|
4月前
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
164 7
|
8月前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
|
4天前
|
机器学习/深度学习 算法 数据可视化
Python的计算机视觉与图像处理
本文介绍了Python在计算机视觉和图像处理领域的应用,涵盖核心概念、算法原理、最佳实践及应用场景。重点讲解了OpenCV、NumPy、Pillow和Matplotlib等工具的使用,并通过代码实例展示了图像读写、处理和可视化的方法。实际应用包括自动驾驶、人脸识别、物体检测等。未来趋势涉及深度学习、边缘计算和量子计算,同时也讨论了数据不足、模型解释性和计算资源等挑战。
|
2月前
|
计算机视觉 开发者 Python
利用Python进行简单的图像处理
【10月更文挑战第36天】本文将引导读者理解如何使用Python编程语言和其强大的库,如PIL和OpenCV,进行图像处理。我们将从基本的图像操作开始,然后逐步深入到更复杂的技术,如滤波器和边缘检测。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供新的视角和技能,让你能够更好地理解和操作图像数据。
|
3月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
132 2
|
3月前
|
算法 数据可视化 计算机视觉
Python中医学图像处理常用的库
在Python中,医学图像处理常用的库包括:ITK(及其简化版SimpleITK)、3D Slicer、Pydicom、Nibabel、MedPy、OpenCV、Pillow和Scikit-Image。这些库分别擅长图像分割、配准、处理DICOM和NIfTI格式文件、图像增强及基础图像处理等任务。选择合适的库需根据具体需求和项目要求。
119 0
|
3月前
|
数据挖掘 计算机视觉 Python
基于Python的简单图像处理技术
【10月更文挑战第4天】在数字时代,图像处理已成为不可或缺的技能。本文通过Python语言,介绍了图像处理的基本方法,包括图像读取、显示、编辑和保存。我们将一起探索如何使用PIL库进行图像操作,并通过实际代码示例加深理解。无论你是编程新手还是图像处理爱好者,这篇文章都将为你打开一扇新窗,让你看到编程与创意结合的无限可能。
WK
|
5月前
|
计算机视觉 Python
如何使用OpenCV进行基本图像处理
使用OpenCV进行基本图像处理包括安装OpenCV,读取与显示图像,转换图像颜色空间(如从BGR到RGB),调整图像大小,裁剪特定区域,旋转图像,以及应用图像滤镜如高斯模糊等效果。这些基础操作是进行更复杂图像处理任务的前提。OpenCV还支持特征检测、图像分割及对象识别等高级功能。
WK
57 4
|
5月前
|
计算机视觉 开发者 Python
使用Python进行简单图像处理
【8月更文挑战第31天】 本文将介绍如何使用Python编程语言来处理图像。我们将通过代码示例来展示如何读取、显示、编辑和保存图像文件。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供一个清晰的指引,帮助你开始自己的图像处理项目。
|
7月前
|
机器学习/深度学习 算法框架/工具 数据安全/隐私保护
Pillow:Python图像处理的强大工具
**Pillow**是Python的图像处理库,源自PIL,支持多种格式如JPEG、PNG等。本文介绍了Pillow的基本用法和高级特性。安装Pillow后,可通过`Image.open()`打开图像,再使用`resize()`、`crop()`、`rotate()`等方法进行图像操作,如缩放、裁剪和旋转。此外,Pillow还支持颜色转换、滤镜应用(如模糊)、图像增强(亮度、对比度调整)和处理流水线。在实际应用中,Pillow常用于生成网页缩略图、添加水印及配合机器学习库进行图像预处理。【6月更文挑战第6天】
169 1