当前位置: 首页 > news >正文

opencv 30 -图像平滑处理01-均值滤波 cv2.blur()

什么是图像平滑处理?

图像平滑处理(Image
Smoothing)是一种图像处理技术,旨在减少图像中的噪声、去除细节并平滑图像的过渡部分。这种处理常用于预处理图像,以便在后续图像处理任务中获得更好的结果。

常用的图像平滑处理方法包括:

均值滤波(Mean Filtering):用图像中像素周围区域的平均值来代替每个像素的值,从而平滑图像。均值滤波对去除高斯噪声等简单噪声类型效果较好。

高斯滤波(Gaussian Filtering):使用高斯核来对图像进行滤波,高斯滤波在平滑图像的同时能够较好地保留图像的边缘信息。

中值滤波(Median Filtering):用像素周围区域像素值的中值来代替每个像素的值,适用于去除椒盐噪声等脉冲型噪声。

双边滤波(Bilateral Filtering):结合空间域和灰度值域的信息,能够保持图像的边缘特征,同时对图像进行平滑处理。

图像平滑处理应用场景

图像平滑处理在图像处理中有广泛的应用场景,主要用于去除图像中的噪声、减少细节、平滑图像的过渡部分,从而提升后续图像处理任务的效果。

以下是图像平滑处理的一些常见应用场景:

去噪声:图像中可能存在不同类型的噪声,如高斯噪声、椒盐噪声等。使用图像平滑处理方法可以有效地减少这些噪声,提高图像质量。

在尽量保留图像原有信息的情况下,过滤掉图像内部的噪声,这一过程称为对图像的平滑
处理,所得的图像称为平滑图像。例如,下图是含有噪声的图像,在图像内存在噪声信息,
我们通常会通过图像平滑处理等方式去除这些噪声信息。

在图这里插入图片描述
通过图像平滑处理,可以有效地过滤掉图像内的噪声信息。再看下面得图 所示是对上面图 进行图像平滑处理的结果,可以看到原有图像内含有的噪声信息被有效地过滤掉了。

在这里插入图片描述

图像降噪:在低光条件下或者高ISO值下拍摄的图像可能会有较多的噪点。通过图像平滑处理,可以降低噪点的影响,使图像看起来更加干净和清晰。

图像模糊:在某些情况下,我们可能希望减少图像中的细节,使图像变得模糊,以达到某种特定的效果。图像平滑处理可以实现这个目标。

图像缩放:当对图像进行缩放操作时,可能会引入锯齿效应或马赛克现象。通过图像平滑处理,可以减少这些不平滑的现象,得到更平滑的缩放图像。

边缘检测:在进行边缘检测等图像处理任务时,图像平滑处理可以帮助去除细节,使边缘更加清晰和明显。

目标检测和识别:在某些情况下,图像中的细节和噪声可能会干扰目标检测和识别算法。通过图像平滑处理,可以消除这些干扰,提高目标检测和识别的准确性。

总的来说,图像平滑处理是图像预处理的重要步骤,它能够改善图像质量、减少噪声和细节,为后续图像处理任务提供更好的输入。不过需要注意,过度的平滑处理可能会导致图像失真和信息丢失,因此在应用图像平滑处理时需要权衡处理效果和影响。

均值滤波

定义:

均值滤波是指用当前像素点周围 N·N 个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点,即可完成整幅图像的均值滤波。

例如,希望对图 下图 中位于第 5 行第 5 列的像素点进行均值滤波。

图2
在进行均值滤波时,首先要考虑需要对周围多少个像素点取平均值。通常情况下,我们会
以当前像素点为中心,对行数和列数相等的一块区域内的所有像素点的像素值求平均。例如,
在上图 中,可以以当前 226 像素点为中心,对周围 3×3 区域内所有像素点的像素值求平均,也可以对周围 5×5 区域内所有像素点的像素值求平均。

当前像素点的位置为第 5 行第 5 列,我们对其周围 5×5 区域内的像素值求平均,计算方法为:

新值=[(197+25+106+156+159)+
(149+40+107+5+71)+
(163+198+226+223+156)+
(222+37+68+193+157)+
(42+72+250+41+75)]/25
=126

计算完成后得到 126,我们将 126 作为当前像素点均值滤波后的像素值。我们针对上图 中的每一个像素点计算其周围 5×5 区域内的像素值均值,并将其作为当前像素点的新值,即可
得到当前图像的均值滤波结果。

当然,图像的边界点并不存在 5×5 邻域区域。例如,左上角第 1 行第 1 列上的像素点,其像素值为 23,如果以其为中心点取周围 5×5 邻域,则 5×5 邻域中的部分区域位于图像外部。
图像外部是没有像素点和像素值的,显然是无法计算该点的 5×5 邻域均值的。
针对边缘像素点,可以只取图像内存在的周围邻域点的像素值均值。

如图 7-8 所示,计算
左上角的均值滤波结果时,仅取图中灰色背景的 3×3 邻域内的像素值的平均值。

在这里插入图片描述

在图 7-8 中,对于左上角(第 1 行第 1 列)的像素点,我们取第 1~3 列与第 1~3 行交汇处
所包含的 3×3 邻域内的像素点的像素值均值。因此,当前像素点的均值滤波计算方法为:

新值=[(23+158+140)+
(238+0+67)+
(199+197+25)]/9
=116

计算完成后得到 116,将该值作为该点的滤波结果即可

除此以外,还可以扩展当前图像的周围像素点。例如,将当前 9×7 大小的图像扩展为 13×11大小的图像,如图 7-9 所示。

在这里插入图片描述
完成图像边缘扩展后,可以在新增的行列内填充不同的像素值。在此基础上,再针对 9×7的原始图像计算其 5×5 邻域内像素点的像素值均值。OpenCV 提供了多种边界处理方式,我们可以根据实际需要选用不同的边界处理模式。

针对图像中第 5 行第 5 列的像素点,其运算过程相当于与一个内部值都是 1/25 的 5×5 矩阵进行相乘计算,从而得到均值滤波的结果 126,其对应的关系如图 7-10 所示

在这里插入图片描述

根据上述运算,针对每一个像素点,都是与一个内部值均为 1/25 的 5×5 矩阵相乘,得到均值滤波的计算结果,如图 7-11 所示。

在这里插入图片描述

将使用的 5×5 矩阵一般化,可以得到如图 7-12 所示的结果。

在这里插入图片描述
OpenCV 中,图 7-12 右侧的矩阵被称为卷积核,其一般形式为:
在这里插入图片描述
式中,M 和 N 分别对应高度和宽度。一般情况下,M 和 N 是相等的,例如比较常用的 3×3、5×5、
7×7 等。如果 M 和 N 的值越大,参与运算的像素点数量就越多,图像失真越严重。

函数语法

OpenCV 中,实现均值滤波的函数是 cv2.blur(),其语法格式为:

dst = cv2.blur( src, ksize, anchor, borderType )

式中:

 dst 是返回值,表示进行均值滤波后得到的处理结果。

 src 是需要处理的图像,即原始图像。它可以有任意数量的通道,并能对各个通道独立处理。图像深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种。

 ksize 是滤波核的大小。滤波核大小是指在均值处理过程中,其邻域图像的高度和宽度。

例如,其值可以为(5, 5),表示以 5×5 大小的邻域均值作为图像均值滤波处理的结果,
如下式所示。

在这里插入图片描述
anchor 是锚点,其默认值是(-1, -1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。
 borderType 是边界样式,该值决定了以何种方式处理边界,其值如表 7-1 所示。一般情
况下不需要考虑该值的取值,直接采用默认值即可。

在这里插入图片描述
通常情况下,使用均值滤波函数时,对于锚点 anchor 和边界样式 borderType,直接采用其
默认值即可。因此,函数 cv2.blur()的一般形式为:

dst = cv2.blur( src, ksize,)

实验: 读取一幅噪声图像,使用函数 cv2.blur()对图像进行均值滤波处理,得到去噪图像,并显示原始图像和去噪图像

实验原图

在这里插入图片描述

import cv2
o=cv2.imread("lenaNoise.png") #读取待处理图像
#使用 blur 函数处理图像
r=cv2.blur(o,(5,5)) 
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()

运行上述程序后,会分别显示噪声图像(左图)和去噪图像(右图)

在这里插入图片描述

实验2:针对噪声图像,使用不同大小的卷积核对其进行均值滤波,并显示均值滤波的情况。

调整设置函数 cv2.blur()中的 ksize 参数,示例代码如下

代码如下:

import cv2
o=cv2.imread("lenaNoise.png") #读取待处理图像
#使用 blur 函数处理图像
r3=cv2.blur(o,(3,3))
r5=cv2.blur(o,(5,5))
r7=cv2.blur(o,(7,7))
cv2.imshow("original",o)
cv2.imshow("result3",r3)
cv2.imshow("result5",r5)
cv2.imshow("result7",r7)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述
从结果图中可以看出,卷积核越来,图片会越模糊.

相关文章:

opencv 30 -图像平滑处理01-均值滤波 cv2.blur()

什么是图像平滑处理? 图像平滑处理(Image Smoothing)是一种图像处理技术,旨在减少图像中的噪声、去除细节并平滑图像的过渡部分。这种处理常用于预处理图像,以便在后续图像处理任务中获得更好的结果。 常用的图像平滑处理方法包括…...

中小企业的数字化营销应该如何着手?数字化营销到底要怎么做?

从侠义角度讲,数字化营销就是在数字化的媒体上做营销。传播本质上是一种营销的形式 从广义角度讲,我们不仅可以将营销数字化,也可以数字化很多事物,甚至行业,比如数字化制造业、数字化工厂、数字化商会等等 ​而这个…...

实数信号的傅里叶级数研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

oracle数据库巡检脚本

用于Oracle数据库巡检的示例脚本: #!/bin/bash# 设置数据库连接信息 DB_USER="your_db_username" DB_PASSWORD="your_db_password" DB_HOST="your_db_host" DB_PORT="your_db_port" DB_SID="your_db_sid" OUTPUT_FILE=&q…...

服务注册中心consul的服务健康监控及告警

一、背景 consul既可以作为服务注册中心,也可以作为分布式配置中心。当它作为服务注册中心的时候,java微服务之间的调用,会定期查询服务的实例列表,并且实例的状态是健康可用。 如果发现被调用的服务,注册到consul的…...

【算法第十四天7.28】二叉树的最大深度,二叉树的最小深度 ,完全二叉树的节点个数

链接力扣104-二叉树的最大深度 思路 class Solution {public int maxDepth(TreeNode root) {if(root null) return 0;if(root.left null) return maxDepth(root.right) 1;if(root.right null) return maxDepth(root.left) 1;int max Math.max(maxDepth(root.left),maxD…...

网络安全设备-等保一体机

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 等保一体机的功能 等保一体机产品主要依赖于其丰富的安全网元(安全网元包括:防火…...

Kafka的配置和使用

目录 1.服务器用docker安装kafka 2.springboot集成kafka实现生产者和消费者 1.服务器用docker安装kafka ①、安装docker(docker类似于linux的软件商店,下载所有应用都能从docker去下载) a、自动安装 curl -fsSL https://get.docker.com | b…...

【C++】unordered_map在Windows和Linux上的不同行为

我目前手头上的项目,需要编译在板端Linux上运行,但是日常daily调试多在Windows上开发。这就涉及到同一份代码在多平台上的编译个运行。有一次遇到了一个奇怪的现象:跑同样的一份代码,Windows和Linux出来的结果是不一致的。最终确定…...

Apipost三方消息通知,接口变更不用愁

Apipost致力于为开发者提供更全面的API管理功能。而最近,Apipost又新增了一个非常实用的功能:第三方消息推送。这个功能可以帮助开发人员及时了解API的变更情况,从而更好地管理和优化自己的API。 具体来说,Apipost的第三方消息推…...

C语言 用数组名作函数参数

当用数组名作函数参数时,如果形参数组中各元素的值发生变化,实参数组元素的值随之变化。 1.数组元素做实参的情况: 如果已经定义一个函数,其原型为 void swap(int x,int y);假设函数的作用是将两个形参(x,y&#xf…...

每日一题(980. 不同路径 III)-回溯

题目 980. 不同路径 III 题解思路 表格中值为1的为起始点值为0 的是可以经过的点,但是只能经过一次值为2 的是终点,计算从起点到终点一共有多少种路径 计算出值为0的方格个数,同时找到起点位置当位于终点时候且经过所有的方格为0的点 即为…...

【Python:json常用函数,用于加载和保存json文件】load(), loads(), dump(), dumps()

文章目录 1、load()2、loads()3、dump()4、dumps() json文件为javascript object Notation文件,属于轻量级的数据交换格式,可以用于存储和交换数据。json文件是由类似{ }的key-value映射组成。 1、load() 把json文件加载为Python的数据格式&#xff0c…...

Flink State 和 Fault Tolerance详解

有状态操作或者操作算子在处理DataStream的元素或者事件的时候需要存储计算的中间状态,这就使得状态在整个Flink的精细化计算中有着非常重要的地位: 记录数据从某一个过去时间点到当前时间的状态信息。以每分钟/小时/天汇总事件时,状态将保留…...

小红书2023“家生活”趋势白皮书

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 近年来,年轻人与家的关系愈发紧密。 在小红书上,我们观察到了家居家装内容的蓬勃生长,3 年来相关内容的笔记规模增长了6倍,相关品类的搜索量增加的 3.…...

使用 LangChain 搭建基于 Amazon DynamoDB 的大语言模型应用

LangChain 是一个旨在简化使用大型语言模型创建应用程序的框架。作为语言模型集成框架,在这个应用场景中,LangChain 将与 Amazon DynamoDB 紧密结合,构建一个完整的基于大语言模型的聊天应用。 本次活动,我们特意邀请了亚马逊云科…...

210. 课程表 II Python

文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在选修课程 ai 前 必须 …...

【LeetCode 算法】Linked List Cycle II 环形链表 II

文章目录 Linked List Cycle II 环形链表 II问题描述:分析代码哈希快慢指针 Tag Linked List Cycle II 环形链表 II 问题描述: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链…...

蒸散发与植被总初级生产力估算

目标 熟悉蒸散发ET及其组分(植被蒸腾Ec、土壤蒸发Es、冠层截留Ei)、植被总初级生产力GPP的概念和碳水耦合的基本原理;掌握利用Python与ArcGIS工具进行课程相关的操作;熟练掌握国际上流行的Penman-Monteith模型,并能够…...

uniapp微信小程序底部弹窗自定义组件

基础弹窗效果组件 <template><view><viewclass"tui-actionsheet-class tui-actionsheet":class"[show ? tui-actionsheet-show : ]"><view class"regional-selection">底部弹窗</view></view><!-- 遮罩…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...