图像数据处理14

news2024/11/16 6:00:02

三、空域滤波

3.3 统计排序滤波器

统计排序滤波器属于非线性空域滤波器,常见的统计排序滤波器有中值滤波器、最大值滤波器、最小值滤波器。

中值滤波器、最大值滤波器和最小值滤波器是三种常见的统计排序滤波器,它们在图像处理和信号处理中发挥着重要作用。以下是对这三种滤波器的详细讲解

3.3.1最大滤波器

最大滤波器的主要原理是将滤波窗口内所有像素的灰度值中的最大值赋给窗口中心的像素。其主要作用是查找图像中的最亮点或降低胡椒噪声(可以理解成图像中像胡椒一样的小黑点),能在突出图像中亮区域的同时会削弱亮区域相邻的暗区域。这对降低胡椒噪声是极为有效的,但也可能会导致图像中其它暗区域的细节丢失。

3.3.2最小滤波器

最小值滤波器的主要原理与最大值滤波器相反,它能将滤波窗口内所有像素的灰度值中的最小值赋给窗口中心的像素。这种滤波器常用于寻找图像中的最暗点或降低盐粒噪声(可以理解成图像中像盐粒一样的小白点),能在突出图像中暗区域的同时会削弱亮区域相邻的亮区域。这对降低盐粒噪声是极为有效的,但也可能会导致图像中其它亮区域的细节丢失。

3.3.3中值滤波器
中值滤波器的主要原理是将图像中窗口中心的像素值用该点邻域内各点值的中位数来替换。这种滤波器对于去除椒盐噪声(可以理解成盐粒和胡椒的混合)非常有效,同时能够较好地保持图像的边缘信息。但要是选择的图像邻域较大,会造成图像模糊。

注:窗口中心是指图像相对于滤波器覆盖区域的中心,而非整张图像的中心,随着滤波器的滑动,图像的每个区域都能得到计算。

原始图片

①最大滤波器操作

from PIL import Image
import numpy as np
import random
from scipy import ndimage


def add_pepper_noise(image, pepper_prob=0.05):
    """给图像添加椒噪声(黑点)"""
    img_array = np.array(image)
    # 生成一个与图像大小相同的随机矩阵
    random_matrix = np.random.rand(*img_array.shape[:2])
    # 添加椒噪声(黑点)
    pepper_mask = random_matrix < pepper_prob
    img_array[pepper_mask] = 0
    return Image.fromarray(img_array)


def max_filter(image, size=3):
    """执行最大值滤波"""
    img_array = np.array(image)
    filtered_array = ndimage.maximum_filter(img_array, size=size, mode='constant', cval=0)
    return Image.fromarray(filtered_array)


# 加载图片
input_image = Image.open('fu.jpg')  # 请替换为您的图片路径
input_image.show(title="原始图片")

# 仅添加椒噪声
pepper_noise_image = add_pepper_noise(input_image, pepper_prob=0.05)
pepper_noise_image.show(title="仅加椒噪声后的图片")

# 应用最大值滤波
max_filtered_image = max_filter(pepper_noise_image, size=3)
max_filtered_image.show(title="最大值滤波后的图片")

添加胡椒噪声后的图片

最大滤波器处理后的图片

②最小滤波器操作

from PIL import Image
import numpy as np
from scipy import ndimage


def add_salt_noise(image, salt_prob=0.05):
    """给图像仅添加盐噪声(白点)"""
    img_array = np.array(image)
    # 生成一个与图像大小相同的随机矩阵
    random_matrix = np.random.rand(*img_array.shape[:2])
    # 添加盐噪声(白点)
    salt_mask = random_matrix < salt_prob
    img_array[salt_mask] = 255
    return Image.fromarray(img_array)


def min_filter(image, size=3):
    """执行最小值滤波"""
    img_array = np.array(image)
    filtered_array = ndimage.minimum_filter(img_array, size=size, mode='constant', cval=255)
    return Image.fromarray(filtered_array)


# 加载图片
input_image = Image.open('fu.jpg')  # 请替换为您的图片路径
input_image.show(title="原始图片")

# 仅添加盐噪声
salt_noise_image = add_salt_noise(input_image, salt_prob=0.05)
salt_noise_image.show(title="仅加盐噪声后的图片")

# 应用最小值滤波
min_filtered_image = min_filter(salt_noise_image, size=3)
min_filtered_image.show(title="最小值滤波后的图片")

添加盐粒噪声后的图片

最小滤波器处理后的图片

③中值处理

from PIL import Image
import numpy as np
from scipy import ndimage


def median_filter(image, size=3):
    """执行中值滤波"""
    img_array = np.array(image)
    filtered_array = ndimage.median_filter(img_array, size=size, mode='constant', cval=0)
    return Image.fromarray(filtered_array)


# 加载图片
input_image = Image.open('yanli.jpg')  # 请替换为您的图片路径

# 应用中值滤波
median_filtered_image = median_filter(input_image, size=3)
median_filtered_image.show(title="中值滤波后的图片")

处理盐粒图片后的效果

注,本人为在校学生,博客是边学边写的,主要是为了巩固知识,如有错误请积极指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WUP-MY-LABEL-PRINTER 旻佑热敏打印机标签打印uniapp插件使用说明

插件地址&#xff1a;WUP-MY-LABEL-PRINTER 旻佑热敏打印机标签打印安卓库 简介 本插件主要用于旻佑热敏打印机打印标签&#xff0c;不支持票据打印。适用于旻佑的各型支持标签打印的热敏打印机。本插件开发时使用的打印机型号为MY-805嵌入式面板打印机&#xff0c;其他型号请…

Cisco交换机SSH使用RSA公钥免密登录(IOS与Nexus,服务器以RHEL8为例)

目录 需求实验步骤0. 实验环境1. Linux2. CiscoIOS基础设置保存密钥登陆测试 3. CiscoNexus基础配置保存密钥登陆测试 需求 在实际工作中&#xff0c;常会遇到自动化的需求&#xff0c;那么在自动采集、配置等对网络设备的自动化需求中&#xff0c;不可避免的会遇到需要登录-&…

tensorboard显示一片空白解决方案

OK艾瑞巴蒂 不知道看这个视频几个小土堆过来的&#xff0c;今天已经发了一篇博文探讨快速下载tensorboard了 下面用的时候叒出现问题了 from torch.utils.tensorboard import SummaryWriter writer SummaryWriter("logs")# writer.add_image() # Yx for i in range…

实时手势识别(1)- 基于手部检测+手部分类

目录 前言 1.实现效果 2.非端到端实现的原因 3.分类网络与数据准备 4.训练结果 5.测试结果 6.训练代码 7.训练日志 7.1ResNet18训练日志 7.2ShuffleNet_v2训练日志 前言 利用YOLOv8获取手部区域&#xff0c;然后对手部区域进行分类&#xff0c;实现手势识别。 本文使…

powershell 终端 执行 pnpm -v报错

1.问题描述&#xff1a; 明明全局已安装 pnpm &#xff0c;但在vscode默认终端 powershell 执行 pnpm -v 却报错&#xff1a; 2.问题根因&#xff1a; 原因是 PowerShell 执行策略问题。 3.解决方案&#xff1a; 以管理员身份运行 PowerShell 查看 PowerShell 的执行策略…

初探systemⅡ·慢思考

本篇笔记记录于 May 30th, 2023 oai联合创始人Andrej曾在微软大会上的报告中有提到LLMs对于人类快、慢思考两种认知推理模式的当下探索与未来展望&#xff0c;这里曾经得到的启示是&#xff1a;未来在模型的训练与推理侧是否会出现一种新的长链认知范式&#xff1f;如在RLHF过程…

秋招突击——8/13——并查集——复习{有塔一面}——新作{亲戚关系}

文章目录 引言复习并查集模板复习——有塔一面 新作亲戚关系 总结 引言 这两天准备腾讯的第二面&#xff0c;看了很多人的面经&#xff0c;发现考并查集的题目蛮多的&#xff0c;这里整理学习一下&#xff01; 复习 并查集模板 这里学习了B站的麦克老师的课程&#xff0c;对…

MySQL与SQLserver

与MySQL的差别 SQL Server和MySQL都是广泛使用的关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它们的SQL语法有很多相似之处&#xff0c;但也存在一些差异。以下是一些主要的语法区别&#xff1a; 1. 数据库和表的创建 SQL Server CREATE DATABASE databas…

Ma Spaghet!

目录 一、题目 二、思路 三、payload 3.1 方案一 3.2 方案二(官方) 四、思考与总结 一、题目 <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams.get(somebody) || "Somebody…

产品经理-​你做产品经理有什么优势?(39)

你做产品经理有什么优势&#xff1f; 这是一个关于自我认知、个人优势的问题 人贵有自知之明&#xff0c;求职者应该对自己的优缺点有一个客观、深入的认识 大公司往往更加看重你的基本素质&#xff08;逻辑分析、学习能力、潜力等&#xff09; 因为大公司有相对成熟的培养体系…

OpenDDS的Rtps_Udp传输协议可靠性QoS收发基本流程

OpenDDS中,实现了Rtps_Udp传输协议(非纯udp)的可靠性传输。传输的线程包括: 1)发送方线程主要线程和定时器 《1》应用线程 《2》网络异步发送线程 《3》Heartbeat定时器 《4》Nak_response定时器 2)接收方主要线程和定时器 《1》网络异步接收线程 《2》heartbeat_respons…

Java | Leetcode Java题解之第344题反转字符串

题目&#xff1a; 题解&#xff1a; class Solution {public void reverseString(char[] s) {int n s.length;for (int left 0, right n - 1; left < right; left, --right) {char tmp s[left];s[left] s[right];s[right] tmp;}} }

【C++】智能指针详解

一、从new和delete谈起 在C中&#xff0c;可以使用new和delete关键字进行对象的创建和销毁&#xff0c;new一个对象实际上是在堆上分配内存&#xff0c;而new出来的对象也要自己用delete释放&#xff0c;从而回收内存&#xff0c;否则会造成内存的泄露。由程序员自己new来分配…

[手机Linux PostmarketOS]五, docker安装和使用

docker容器 一&#xff0c;docker安装和配置 安装 docker 和 docker-compose&#xff1a; sudo apk add docker docker-cli-compose #安装docker sudo service docker start #启动docker服务 sudo rc-update add docker default #设置docker为自启动可选关…

【PostgreSQL003】PostgreSQL数据表空间膨胀,磁盘爆满,应用宕机(经验总结,已更新)

1.一直以来想写下基于PostgreSQL的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下PostgreSQL数据库相关知识体系。空间膨胀&#xff08;主键、外键、…

汇编语言:call、call far ptr、call word ptr、call dword ptr、call 寄存器

引言 call指令是转移指令&#xff0c;CPU执行call指令&#xff0c;进行两步操作&#xff1a; &#xff08;1&#xff09;将当前IP或当前CS和IP压入栈中 &#xff08;2&#xff09;转移。call指令不能短转移&#xff0c;除此之外&#xff0c;call指令转移的方法跟jmp指令的原理…

柔性超级电容器咋储能?生物聚合物在其中起啥作用?有啥挑战?

*本文只作阅读笔记分享* 一、引言 随着对化石燃料影响的日益关注&#xff0c;开发用于先进电化学能量存储设备的绿色和可再生材料变得至关重要。超级电容器因其出色的寿命、安全性和宽温度操作范围等优势而成为有前途的储能候选者。柔性超级电容器特别适合为轻质可穿戴电子设…

xss GAME (xss漏洞攻击1-8)

目录 xss网页链接 第一关 第二关 第三关 ​编辑第四关 ​编辑第五关 ​编辑第六关 第七关 第一种 Function构建函数 第二种 tostring parseInt 第三种 silce() ​编辑第八关&#xff08;安全过滤框架 dom破坏&#xff09; xss网页链接 XSS Game - Learning XSS Ma…

linux之网络子系统-GSO/TSO 源码分析

一、GSO/TSO GSO 目前在内核5.10.* 版本时&#xff0c;已经是合入主线&#xff0c;就是对TCP/UDP都支持并且在网络协议栈GSO功能是默认打开的。虽然可以通过ethtool -K 网卡名 gso off 关闭&#xff0c;但是在L3/L4还是走GSO逻辑&#xff0c;关不掉。我目前是没有找到内核源码…

NextJs - 服务端/客户端组件之架构多样性设计

NextJs - 服务端/客户端组件之架构多样性设计 前言一. 架构设计1.1 SSR流式渲染常见错误设计之 - 根页面同步阻塞1.2 架构设计之 - 客户端组件依赖于服务端组件数据① 使用 Redux 完成数据共享 1.3 架构设计之 - 单页内的分步骤跳转① 如何做到服务端组件和客户端组件之间的切换…