图像滤波处理
滤波处理是图像处理中常用的技术之一,用于去除图像中的噪声、平滑图像、边缘检测等。以下是几种常见的滤波处理方法:
1. 均值滤波 (Mean Filtering)
原理:
均值滤波使用一个固定大小的滤波器,在图像上滑动并取周围像素的平均值来替代中心像素值。这有助于减少图像中的高频噪声。
公式:
对于图像上的一个区域,以 I I I 表示原始图像, I smooth I_{\text{smooth}} Ismooth表示滤波后的图像,滤波器大小为 n × n n \times n n×n:
I smooth ( x , y ) = 1 n 2 ∑ i = 0 n − 1 ∑ j = 0 n − 1 I ( x + i , y + j ) I_{\text{smooth}}(x, y) = \frac{1}{n^2} \sum_{i=0}^{n-1} \sum_{j=0}^{n-1} I(x+i, y+j) Ismooth(x,y)=n21i=0∑n−1j=0∑n−1I(x+i,y+j)
作用和适用场景:
适用于去除轻度噪声,如盐和胡椒噪声,但可能会导致图像细节丢失。
代码:
import cv2# 读取图像
img = cv2.imread('input_image.jpg')# 应用均值滤波
filtered_img = cv2.blur(img, (3, 3)) # 参数 (3, 3) 表示滤波器大小# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Mean Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 高斯滤波 (Gaussian Filtering)
原理:
高斯滤波与均值滤波类似,但是采用了加权平均值,周围像素对中心像素的影响根据距离中心像素的位置以高斯分布加权。这种滤波器更多地保留了图像的细节。
公式:
I smooth ( x , y ) = 1 ∑ i = 0 n − 1 ∑ j = 0 n − 1 h ( i , j ) ∑ i = 0 n − 1 ∑ j = 0 n − 1 I ( x + i , y + j ) ⋅ h ( i , j ) I_{\text{smooth}}(x, y) = \frac{1}{\sum_{i=0}^{n-1} \sum_{j=0}^{n-1} h(i, j)} \sum_{i=0}^{n-1} \sum_{j=0}^{n-1} I(x+i, y+j) \cdot h(i, j) Ismooth(x,y)=∑i=0n−1∑j=0n−1h(i,j)1i=0∑n−1j=0∑n−1I(x+i,y+j)⋅h(i,j)
其中, h ( i , j ) h(i, j) h(i,j) 是高斯核函数的值。
作用和适用场景:
适用于去除噪声并保留图像细节,常用于图像平滑和预处理。
代码:
import cv2# 读取图像
img = cv2.imread('input_image.jpg')# 应用高斯滤波
filtered_img = cv2.GaussianBlur(img, (5, 5), 0) # 参数 (5, 5) 表示滤波器大小,0 表示标准差# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Gaussian Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 中值滤波 (Median Filtering)
原理:
中值滤波采用一个固定大小的滤波器,在图像上滑动并取周围像素的中值来替代中心像素值。对于去除椒盐噪声效果非常好。
作用和适用场景:
适用于去除椒盐噪声或脉冲噪声,能够有效保留图像细节。
代码:
import cv2# 读取图像
img = cv2.imread('input_image.jpg')# 应用中值滤波
filtered_img = cv2.medianBlur(img, 5) # 参数 5 表示滤波器大小# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Median Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关文章:
图像滤波处理
滤波处理是图像处理中常用的技术之一,用于去除图像中的噪声、平滑图像、边缘检测等。以下是几种常见的滤波处理方法: 1. 均值滤波 (Mean Filtering) 原理: 均值滤波使用一个固定大小的滤波器,在图像上滑动并取周围像素的平均值来…...
中间件安全:Apache 目录穿透.(CVE-2021-41773)
中间件安全:Apache 目录穿透.(CVE-2021-41773) Apache 的 2.4.49、2.4.50 版本 对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,…...
苍穹外卖--菜品分页查询
设计DTO类 Data public class DishPageQueryDTO implements Serializable {private int page;private int pageSize;private String name;private Integer categoryId; //分类idprivate Integer status; //状态 0表示禁用 1表示启用}设计VO类 Data Builder NoArgsConstructor…...
JS原生-弹框+阿里巴巴矢量图
效果: 代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…...
vscode c++ 报错identifier “string“ is undefined
vscode c 报identifier “string” is undefined 问题 新装了电脑, 装好vsc和g等, 发现报错 但开头并没问题 解决 shiftctrlp选择 C/C Edit:COnfigurations (JSON)自动生成打开 c_cpp_properties.json添加g路径等 "cStandard": "c11","cppStanda…...
CocoaPods podfile 文件配置
记录一下关于 CocoaPods podfile 文件配置 指定源(Source) 默认情况下,在全局级别指定的源将按照依赖项匹配指定的顺序进行搜索。 对于特定的依赖,可以单独指定依赖源: pod PonyDebugger, :source > https://github.com/CocoaPods/Specs.git使用字库…...
Python大数据之linux学习总结——day10_hive调优
hive调优 hive调优hive命令和参数配置1.hive数据压缩压缩对比开启压缩 2.hive数据存储[练习]行列存储原理存储压缩比拓展dfs -du -h 3. fetch抓取4. 本地模式5. join的优化操作6. 列裁剪7. 分区裁剪8. group by 操作9. count(distinct)10. 笛卡尔积11. 动态分区[练习]12. 如何调…...
原理Redis-动态字符串SDS
动态字符串SDS Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 获取字符串长度的需要通过运算非二进制安全…...
axios的封装之axios是基于什么封装的?
axios的封装_axios是基于什么封装的 axios是基于JavaScript的XMLHttpRequest 和 Promise 对象进行封装的使用axios发送GET请求的示例axios 拦截器 axios的封装_axios是基于什么封装的 axios是基于JavaScript的XMLHttpRequest 和 Promise 对象进行封装的 在浏览器中ÿ…...
应用软件安全编程-20生成强随机数
JavaAPI 提 供 了java,util.Random 类 来 实 现PRNG。 这 个 PRNG 是可移植和可重复的。因此,如 果 两 个java.util.Random 类的实例使用了相同的种子,会在所有的 Java 实 现 中 生 成 相 同 的 数 值 序 列 。 在应用初始化时,或者在每…...
【C语言.oj刷题】有序#整型矩阵元素查找##{思路+C源码}
目录 题目信息 题目分析: 法一: 遍历二维数组(低效) 思路 源码 局限性 法二: 对每一行二分查找(有所提效) 思路 源码 局限性 法三: 利用一切有利条件使用二分查找 思路 …...
rabbitmq默认交换机锁绑定的routingkey-待研究
例如这个是我的一个消息队列,它默认绑定的交换机是 什么类型呢? 看到这个图,感觉应该是一个默认的交换机,因为是default exchange 于是来到交换机来看看其他默认的交换机: 这里可以看到默认的交换机是direct(应该没…...
【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 4
1、下列哪个选项填到填到下图空缺处最合适 A、 B、 C、 D、 答案:D 2、按照如下图的规律摆放正方形,第 5 堆正方形的个数是 A、13 B、14 C、15 D、16 答案:D 3、从右面观察下面的立体图形,看到的是 A、 B、 C、 D、 答…...
基于STM32CubeMX和keil采用RTC时钟周期唤醒和闹钟实现LED与BEEP周期开关
文章目录 前言1. RTC概念1.1 RTC的时钟信号源1.2 预分频器1.3 实时时钟与日历数据1.4 周期性自动唤醒1.5 可编程闹钟 2. RTC相关中断3. STM32CubeMX配置3.1 时钟配置3.2 引脚配置3.3 RTC配置3.3.1 模式选择3.3.2 RTC基本参数配置3.3 中断配置 4. 代码编写总结 前言 RTC的功能有…...
Virtual安装centos后,xshell连接centos
1. 网络使用Host-Only模式动态分配IP,点确定后,centos 上运行 system restart network ,使用ifconfig查看新的ip,XShell可以直接连上centos, 但是由于使用的是Host-Only模式,centos不能访问网络,…...
Taro.navigateTo 使用URL传参数和目标页面参数获取
文章目录 1. Taro.navigateTo 简介2. 通过 URL 传递参数3. 目标页面参数获取4. 拓展与分析4.1 拓展4.2 URL参数的类型4.3 页面间通信 5. 总结 🎉欢迎来到Java学习路线专栏~Taro.navigateTo 使用URL传参数和目标页面参数获取 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x…...
Unity Meta Quest 一体机开发(七):配置玩家 Hand Grab 功能
文章目录 📕教程说明📕玩家物体配置 Hand Grab Interactor⭐添加 Hand Grab Interactor 物体⭐激活 Hand Grab Visual 和 Hand Grab Glow⭐更新 Best Hover Interactor Group 📕配置可抓取物体(无抓取手势)⭐刚体和碰撞…...
我又开始贩卖焦虑了,机器视觉兄弟们,打工这生意盘不活了?让人逃离北上广深,是毒鸡汤吗?
我想大多数人和我想的一样,不要质疑自己的出身,也不必用一生去改变出身而获得融入感,思想富足这是我们留给自己一生最珍贵的礼物。也许一线城市容不下肉身,二三线城市容不下灵魂。那我回到生我养我的十八线小县城,这不…...
hyperledger fabric2.4测试网络添加组织数量
!!!修改内容比较繁琐,预期未来提供模板修改 修改初始配置文件,初始添加3个组织 organizations文件夹 /cryptogen文件夹下创建文件crypto-config-org3.yaml,内容如下: PeerOrgs:# ---------------------------------------------------------------------------# Org3# ----…...
分库分表
分库,分表,分库分表 “只分库“,“只分表“,“既分库又分表" 何时分库 在面对高并发的情况下,数据库连接成为性能瓶颈。当数据QPS过高导致数据库连接数不足时,考虑分库。在读多写少的场景下&#x…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
