图像处理--空域滤波增强(原理)

一、均值滤波

        线性滤波算法,采用的主要是邻域平均法。基本思想是使用几个像素灰度的某种平均值来代替一个原来像素的灰度值。可以新建一个M×N的窗口以f(x,y)为中心,这个窗口S就是f(x,y)的邻域。假设新的新的像素灰度值为g(x,y),则计算公式为

g(x,y)=\frac{1}{M\times N}\sum _{(x,j)\in S}f(i,j)

        1.1 简单平均法

        就是使用窗口内的所有像素灰度值相加求均值后来代替原来的灰度值。

        其实就是每一个像素的权值为1的滑动窗口。

        1.2 加权平均法

        就是在窗口中加入某个权值进行加权计算。因为从欧几里得距离,中心点的上下左右的灰度值距离比对角上的其实是要更近的。所以我们可以合理的认为离得近的灰度值越靠近,所以就赋予不同的权值。

        之后对 g(x,y)的计算和上面的额简单平均法是一样的。

        这两种滤波算法对于被噪点类型的噪声污染(椒盐噪声)的图像处理事比较有效的,因为这种突兀的噪点在这种方式的滤波下是会被平均掉、平滑掉。但是对于高斯噪声这种非脉冲类型的噪声效果不明显,甚至会降低图像的清晰度。

二、中值滤波

        中值滤波属于一种非线性的滤波。其基本原理是,将模板内像素按照像素值的大小进行排序,生成单调上升或者下降的序列,然后利用该序列中间位置的像素值来代替被求位置的数值,从而消除孤立的像素点。这种方法能够彻底的消除尖锐噪声。这种滤波算法相比于均值滤波,对于椒盐噪声有更好的效果,但是对于高斯滤波效果是差不多的。

        这也很好理解。这两种类型的滤波算法都是利用一些临近选择从而去除一些极端的像素值。对于高斯噪声这种均匀分布的噪声是没有很好的效果的。

三、锐化空间滤波

        锐化处理的目的是突出灰度过度的部分。在图像中,物体与背景连接的地方灰度值是发生跳跃的。数学上,也就是说梯度变化比较大。因此,利用梯度的变化率我们可以很好的描述一个图片中物体的轮廓状态:当梯度变化率比较小的时候,图像中物体的交接不明显;当梯度变化率比较大的时候,物体在图像中就比较突出。

        对于一个连续函数f(x,y),其梯度可以表示为:\triangledown f = [\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}]^{T}。计算他的模值可以使用2范数或者1范数。反正确定模值的方法有很多。

        当确定好了模值,就是如何确定g(x,y)的数值。一般来说是令该点的灰度值为梯度值。亦或者是设置一个阈值,当梯度大于这个阈值的时候做g(x,y) = G[f(x,y)],小于的时候保留原值或者设置为其他预设值的数值。

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

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

相关文章

LeetCode 234.回文链表

题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为 回文链表 。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: 输入&#xff…

PWN入门之Stack Overflow

Stack Overflow是一种程序的运行时(runtime)错误,中文翻译过来叫做“栈溢出”。栈溢出原理是指程序向栈中的某个变量中写入的字节数超过了这个变量本身所申请的字节数,导致与其相邻的栈中的变量值被改变。 在本篇文章中&#xff…

常用语音识别开源四大工具:Kaldi,PaddleSpeech,WeNet,EspNet

无论是基于成本效益还是社区支持,我都坚决认为开源才是推动一切应用的动力源泉。下面推荐语音识别开源工具:Kaldi,Paddle,WeNet,EspNet。 1、最成熟的Kaldi 一个广受欢迎的开源语音识别工具,由Daniel Pove…

下一代防火墙是什么?

下一代防火墙(NGFW,Next-Generation Firewall)是一种高级安全设备,它提供了传统防火墙的功能并加入了更多的安全特性,以应对现代复杂网络环境中的安全威胁。NGFW不仅包括基本的数据包过滤功能,还集成了深度包检测(DPI)、入侵防御系…

代码随想录算法训练营DAY54|C++动态规划Part15|647.回文子串、516最长回文子序列、

文章目录 647.回文子串思路CPP代码双指针 516最长回文子序列思路CPP代码 动态规划总结篇 647.回文子串 力扣题目链接 文章链接:647.回文子串 视频链接:动态规划,字符串性质决定了DP数组的定义 | LeetCode:647.回文子串 其实子串问…

fcn网络是怎么学习 时间序列 怎么进行分类的啊 这是我的wave1_test.shape (2904, 3, 8000)

**全卷积网络(FCN)**处理时间序列数据进行分类的方法主要涉及以下几个步骤: 1. 数据预处理 首先,时间序列数据(如你的 wave1_test 形状为 (2904, 3, 8000))需要适当的预处理。这可能包括归一化、去噪等步…

容器下的 Go 应用程序优化

1. 内存对齐 结构体内字段,从大到小排列 减少内存占用 1)安装 fieldalignment 工具 go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignmentlatest 2)分析并修复内存对齐 fieldalignment -fix ./.../Us…

第07-6章 应用层详解

HTTP、SSL:基于TCP,HTTP端口:80、HTTPS(加密)端口:443;FTP:基于TCP,两类端口:21、20(数据传输之前需要建立连接此时是21,真正传输数据时用20)TFTP…

JS基础:常见的6种语句详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端基础路线”,可获取完整web基础…

机器学习中线性回归算法的推导过程

线性回归是机器学习中监督学习中最基础也是最常用的一种算法。 背景:当我们拿到一堆数据。这堆数据里有参数,有标签。我们将这些数据在坐标系中标出。我们会考虑这些数据是否具有线性关系。简单来说 我们是否可以使用一条线或者一个平面去拟合这些数据的…

「AIGC」ChatGPT入门

一、了解ChatGPT 1. ChatGPT是什么 ChatGPT是一种基于人工智能技术的自然语言处理(NLP)模型,它能够通过机器学习算法理解和生成人类语言。这种模型通常用于聊天机器人、语言翻译、内容生成、问答系统等多种场景。ChatGPT能够模拟人类的对话…

机器学习中的简单指数平滑(SES)

简单指数平滑(Simple Exponential Smoothing)是一种常用的时间序列预测方法,用于对时间序列数据进行平滑处理并进行未来数值的预测。 简单指数平滑的核心思想是基于过去观测值的加权平均来预测未来的值,其中较近的观测值被赋予更…

vue服务器端数据预取Server-Side Data Fetching例子

Vue.js 本身并不直接处理服务器端数据预取(Server-Side Data Fetching),这通常涉及到在服务器端(可能是一个 Node.js 应用、API 服务器或其他后端服务)预先获取数据,并在页面加载时将其传递给 Vue.js 客户端…

如何在交换机上重置密码而不丢失配置?如何配置SSH远程登录?

在网络设备管理中,保持设备的安全性是至关重要的,所以console密码是必须设置的,绝对不能偷懒。 但是,如果习惯不好,或者离职时交接不好,就会导致密码丢失,此时想要修改网络设置的配置就麻烦了。…

华为OD机试 - 符号运算 - 递归(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

Linux uuencode命令教程:如何将二进制文件编码为ASCII文本(附案例详解和注意事项)

Linux uuencode命令介绍 uuencode(Unix-to-Unix encoding)命令用于将二进制文件编码为ASCII文本。这样做的目的是为了在可能会破坏数据的通道上发送文件。 Linux uuencode命令适用的Linux版本 uuencode命令在大多数Linux发行版中都可以使用&#xff0…

使用 FFmpeg 从音视频中提取音频

有时候我们需要从视频文件中提取音频,并保存为一个单独的音频文件,我们可以借助 FFmpeg 来完成这个工作。 一、提取音频,保存为 mp3 文件: 要使用 FFmpeg 从音视频文件中提取音频,并将 ACC 编码的音频转换为 MP3 格式&#xff0…

CNN实现fashion_mnist数据集分类(tensorflow)

1、查看tensorflow版本 import tensorflow as tfprint(Tensorflow Version:{}.format(tf.__version__)) print(tf.config.list_physical_devices())2、加载fashion_mnist数据与预处理 import numpy as np (train_images,train_labels),(test_images,test_labels) tf.keras.d…

Neo4j+LLM+RAG 环境配置报错处理

开发KGLLMRAG程序时遇到以下报错,记录下处理方案: ValueError: Could not use APOC procedures. Please ensure the APOC plugin is installed in Neo4j and that ‘apoc.meta.data()’ is allowed in Neo4j configuration 这个参考文章:link…

FFmpeg学习记录(四)——SDL音视频渲染实战

1.SDL使用的基本步骤 SDL Init/sDL _Quit()SDL_CreateWindow()/SDL_DestoryWindow()SDL CreateRender() SDL_Windows *windows NULL;SDL_Init(SDL_INIT_VIDEO);window SDL_CreateWindow("SDL2 Windows",200,200, 640,480,SDL_WINDOW_SHOWN);if(!window) {printf(&…