数字图像处理---空间滤波基础

news2024/9/23 20:27:53

空间滤波概念

  1. 滤波:通过修改或者抑制给定图像的特定频率分量,常见有低通滤波器与高通滤波器。
  2. 空间滤波:将像素值使用该像素值及其邻域的值进行替换,替换方式有线性与非线性两种,即线性滤波器与非线性滤波器。

线性滤波器

一般方式为是使用一个矩阵(也成为核)与图像进行类似卷积运算,做乘积。
矩阵内部的数值决定了滤波器的功能。

(下图来自数字图像处理 第4版=DIGITAL IMAGE PROCESSING,FOURTH EDITION)
在这里插入图片描述

可分离滤波器核

将二维矩阵分解为两个一维向量的乘积。
G ( X , Y ) = G 1 ( X ) G 2 ( Y ) G(X,Y)=G_1(X)G_2(Y) G(X,Y)=G1(X)G2(Y)

w = [ 1 1 1 1 1 1 1 1 1 ] w=\begin{equation} \left[\begin{array}{ccc} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{array} \right] \end{equation} w= 111111111
可表示为
w 1 = [ 1 1 1 ] w 2 = [ 1 1 1 ] w_1=\begin{equation} \left[\begin{array}{ccc} 1 \\ 1 \\ 1 \end{array} \right] \end{equation} \hspace{1.5cm} w_2=\begin{equation} \left[\begin{array}{ccc} 1 & 1 & 1\\ \end{array} \right] \end{equation} w1= 111 w2=[111]
两者乘积。

PS:判断一个核是否是可分离卷积核,即判断该卷积核是否是秩为1.若为1,即可分离,否则不可。

卷积可分离的好处:
假设图像大小为 M ∗ N M*N MN,卷积核大小为 m ∗ n m*n mn,直接做卷积的运算量包括 M N m n MNmn MNmn次乘法和 M N m n MNmn MNmn次加法。若使用可分离卷积,将 w w w分为 w 1 ∗ w 2 w_1*w_2 w1w2,并且 w 1 w_1 w1 m ∗ 1 m*1 m1 w 2 w_2 w2 1 ∗ n 1*n 1n,将图像矩阵与 w 1 w_1 w1 w 2 w_2 w2分别做卷积得到运算量为 M N m + M N n MNm+MNn MNm+MNn,即 M N ( m + n ) MN(m+n) MN(m+n)。相比于之前的 M N m n MNmn MNmn,大大减少了运算量。

可分离向量的确定:
根据矩阵的性质可知,秩为1的矩阵,每行之间只差常数倍,每列之间也只差常数倍,那么我们可以任意找一个行与列进行求解,当然需要保证该行与列都非零向量。

滤波器类型

线性滤波器
  1. 低通空间滤波器
    \hspace{0.5cm} 主要作用于变化缓慢的区域,如光滑地面等;桌子边缘等为高频区域。
    1.1 盒式滤波器核
    \hspace{0.5cm} 该滤波器核的数值均为1,可使图片产生平滑效果。
    1.2 低通高斯滤波器核
    \hspace{0.5cm} 高斯核 w ( s , t ) = G ( s , t ) = K e − s 2 + t 2 2 σ 2 w(s,t) = G(s,t)=Ke^{-\frac{s^2+t^2}{2\sigma^2}} w(s,t)=G(s,t)=Ke2σ2s2+t2
    \hspace{0.5cm} 其中 s s s t t t为到坐标(以核心为原点), ( s 2 + t 2 ) 1 2 (s^2+t^2)^{\frac{1}{2}} (s2+t2)21为到原心的距离。
    在这里插入图片描述
    特别地,高斯核也是可分离的。

  2. 高通滤波器
    \hspace{0.5cm} 通过边缘增强等方式作用于图像。

非线性滤波器
  1. 中值滤波
    \hspace{0.3cm} 将某像素及其邻域内的像素进行排序,中心像素的值由邻域内的像素排序的中间值确定,尤其对椒盐噪声有消除作用。
  2. 最大值滤波器和最小值滤波器
    \hspace{0.3cm} 最大值滤波器:将某像素及其邻域内的像素进行排序,中心像素的值由邻域内的像素排序最大值确定。
    \hspace{0.3cm} 最小值滤波器:将某像素及其邻域内的像素进行排序,中心像素的值由邻域内的像素排序最大值确定。
  3. 中点滤波器
    \hspace{0.3cm} 将某像素及其邻域内的像素进行排序,中心像素值由最大值与最小值的平均值确定,适用于处理随机分布的噪声,如高斯噪声或者均匀噪声。
  4. 修正 A l p h a Alpha Alpha均值滤波器
    \hspace{0.3cm} 对中值滤波器的改进,将某像素及其邻域内的像素删除部分最低灰度值与最高灰度值,剩下的像素值进行计算算术平均值,作为中心像素值,适用于处理混合噪声,如椒盐噪声与高斯噪声的混合。
自适应滤波器

自适应重在考虑图像的不同特征点变化。

  1. 自适应局部降噪滤波器
    \hspace{0.3cm} 该滤波器需要考虑的参数涉及带有噪声的图像像素值与噪声方差;滤波器中局部像素均值与局部方差。
    带有噪声的图像像素值为 f ( x , y ) f(x,y) f(x,y)、噪声方差为 σ f \sigma_f σf、局部均值为 f x y ^ \hat{f_{xy}} fxy^、局部方差为 σ x y \sigma_{xy} σxy
    四个参数的计算方式可由直方图得出频率与相关值乘积得到。
    自适应的表达式为 f ˉ ( x , y ) = f ( x , y ) − σ f 2 σ x y 2 [ f ( x , y ) − f x y ^ ] \bar{f}(x,y)=f(x,y)-\frac{\sigma_f^2}{\sigma_{xy}^2}[f(x,y)-\hat{f_{xy}}] fˉ(x,y)=f(x,y)σxy2σf2[f(x,y)fxy^]
    该式子的特点在于
    \hspace{0.6cm} 若噪声的方差为0,则滤波的结果为 f ( x , y ) f(x,y) f(x,y)
    \hspace{0.6cm} 若噪声的方差与局部方差相等,则滤波的结果为图像局部像素值的均值;
  2. 自适应中值滤波器
    \hspace{0.3cm} 对中值滤波的优化
    在保留图像细节的同时平滑非冲激噪声(非变化剧烈)
    与自适应局部降噪滤波器类似,在局部区域进行计算。
    在局部区域中, z m i n z_{min} zmin表示最小灰度值, z m a x z_{max} zmax表示最大灰度值, z m e d z_{med} zmed表示灰度值中值, z x y z_{xy} zxy为坐标 ( x , y ) (x,y) (x,y)处的灰度值, S m a x S_{max} Smax表示局部区域的大小。
    算法步骤:
    1. z m i n z_{min} zmin < z m e d z_{med} zmed< z m a x z_{max} zmax,则转到第二步;否则,增加局部区域大小,若局部区域大小小于 S m a x S_{max} Smax,重复步骤1,否则输出 z m e d z_{med} zmed
    2. z m i n z_{min} zmin < z x y z_{xy} zxy< z m a x z_{max} zmax,则输出 z x y z_{xy} zxy,否则输出 z m e d z_{med} zmed
      算法的主要思想在于通过两层判断,旨在消除冲激噪声,如在第一步转到第二步,可以保证 z m e d z_{med} zmed为非冲激噪声;第二步中无论输出 z m e d z_{med} zmed还是 z x y z_{xy} zxy都达到了消除冲激噪声的目的。但如果最终在第一步中进行了输出,那么不能保证 z m e d z_{med} zmed是否为冲激噪声。
      PS:所以该算法旨在尽力消除,不保证全部消除。

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

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

相关文章

VScode快速配置C/C++环境

文章目录我安装时仅参考了这两篇分享1.下载并安装VScode 商店C/C插件2.下载MinGW-W64 x86_64-win32-seh3.配置各种.json5.Hello_world.cpp测试我安装时仅参考了这两篇分享 伸手党进&#xff1a;具体步骤主要是这篇&#xff1a;Hudiscount-Vscode配置C/C环境 MinGW-W64 x86_64-…

华为数通--NAT、ACL、IPSec

NAT\ACL\IPSEC VPNNAT1.1静态NAT转换1.2NAT服务器1.3动态NAT1.4easy IPACL高级ACLIPSEC VPN配置IPSec V-P-N&#xff1a;.1 加解密点.2 IPSEC的SPD&#xff08;ACL&#xff09;、提议&#xff08;protocol&#xff09;和IPSEC 策略NAT(网络地址转换&#xff09; 1.1静态NAT转换…

设计模式 (一) 单例模式 Java

目录 一、饿汉式单例模式 二、懒汉式单例模式 三、最完美的单例模式写法 单例模式一般分为饿汉式与懒汉式&#xff08;类似于懒加载&#xff09;。饿汉式会在类加载时即刻创建实例对象&#xff0c;线程安全&#xff1b;懒汉式由于是在调用时才创建&#xff0c;所以需要考虑线…

vue3中的v-for

一.列表渲染v-for 真实开发中&#xff0c;往往会从服务器中拿到一组数据&#xff0c;并且需要对其进行渲染&#xff0c;这个时候可以使用v-for完成。 1.v-for的基本使用 1&#xff09;基本格式&#xff1a;“item in 数组” 数组通常是来自data或者prop&#xff0c;也可以是…

Swift(2)

因为要在31号之前用swift写一个系统&#xff0c;我不得不把我的电脑系统更新了一下&#xff0c;之后便下载了这个&#xff0c; 做了一些简单的测试&#xff0c;部分软件还是可以打开的。 这个软件用着的确比那个网站用着要舒服很多。 目录 问号 感叹号 ​编辑if else ​编…

Ubuntu18.04下linuxdeployqt下载安装

开发环境&#xff1a;Ubuntu18.04QT5.14.2 使用需求&#xff1a;使用QT开发完成后的项目需要使用linuxdeployqt工具打包生成相关文件 下载安装&#xff1a; 1.使用火狐浏览器打开linuxdeployqt下载地址&#xff1a; https://github.com/probonopd/linuxdeployqt/releases h…

Diffusion Models, CLIP与 DALLE 的学习与感悟

整合了一下关于Diffusion Models, CLIP与 DALLE 的介绍&#xff0c;应用&#xff0c;以及后续的拓展路线。 (Generative) Diffusion Models 还是先横向对一下最近比较火的几个生成模型 GAN、VAE、Flow-based Models、Diffusion Models。 在这里&#xff0c;可以将Diffusion…

SAP FICO 批量成本估算

批量成本估算 【前言】 单个物料的成本估算我们使用事务代码CK11N&#xff0c;标记/发布使用事务代码CK24&#xff0c;那么若有大批量新建的物料需要做成本估算&#xff0c;怎么办&#xff1f; 这里首先需要检查“成本核算变式”。 后台路径&#xff1a;SPRO→控制→产品成…

SpringBoot+Vue项目图书个性化推荐系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

Java设计模式-观察者模式Observer

介绍 观察者模式是行为设计模式之一。当您对对象的状态感兴趣并希望在任何更改时得到通知时&#xff0c;观察者设计模式非常有用。在观察者模式中&#xff0c;观察另一个对象状态的对象被称为观察者&#xff0c;而被观察的对象则被称为主体。 优点 观察者模式设计后&#xff0…

手撕RTSP协议中 从零开始学习RTSP协议 持续更新中....

RTSP协议在安防监控 摄像头有着广泛的运用 &#xff0c;基本上只要是做摄像头 是必须支持的协议。 我个人理解 RTSP基本上算是一个局域网的协议&#xff0c;广域网不太适合因为rtsp传输的视频码率 分辨率 都是比较高的 所有注定了他只适合局域网不适合互联网。 下午就要回家…

Node.js+Vue.js全栈开发王者荣耀手机端官网和管理后台(二) || 后台及接口完结篇

文章目录Node.jsVue.js全栈开发王者荣耀手机端官网和管理后台(二)通用CRUD接口装备&#xff08;物品&#xff09;管理图片上传英雄管理英雄编辑【模型字段】英雄编辑【编辑表单】技能编辑【UI】技能编辑【交互】文章管理富文本编辑器&#xff08;quill&#xff09;富文本编辑器…

23种设计模式(八)——工厂方法模式【对象创建】

文章目录 意图什么时候使用工厂方法真实世界类比工厂方法模式的实现工厂方法模式的优缺点亦称: 虚拟构造函数、Virtual Constructor、Factory Method 意图 在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将…

大数据-hadoop-MapReduce原理详解

MapReduce[1]是Google提出的一个软件架构&#xff0c;用于大规模数据集的并行运算。概念“Map&#xff08;映射&#xff09;”和“Reduce&#xff08;归约&#xff09;”&#xff0c;及他们的主要思想&#xff0c;都是从函数式编程语言借鉴的&#xff0c;还有从矢量编程语言借来…

【基于crul库编写源码实现上传文件到http服务器】

基于crul库编写源码实现上传文件到http服务器编译crul库(可以去我下载资源里面找)用postman生成代码postman生成的代码对应的http服务器的设置_msnap_send_to_httpserver函数有http通过json发送jpeg文件、以及上传ftp服务器、发邮件的实例编译crul库(可以去我下载资源里面找) …

MySQL数据库及数据表相关操作

一,前言1.典型数据库数据库圈子中典型代表:MySQLOracleSQL Server&#xff08;一般在学校学习的时候用到的是这个数据库&#xff09;Oracle是世界上公认的最好的数据库,但是我们现在所学习以及以后上班中大部分时候用到的数据库是MySQL,因为MySQL是开源免费的(任何人都可以阅读…

86.编码器-解码器架构以及代码实现

1. 重新考察CNN 2. 重新考察RNN 3. 编码器-解码器架构 4. 总结 使用编码器-解码器架构的模型&#xff0c;编码器负责表示输入&#xff0c;解码器负责输出 5. 代码实现 5.1 编码器 在编码器接口中&#xff0c;我们只指定长度可变的序列作为编码器的输入X。 任何继承这个Enco…

数据结构 - 学习笔记 - 红黑树前传——234树

数据结构 - 学习笔记 - 红黑树前传——234树简介结点类型与红黑树对应关系插入逻辑插入步骤演示2结点插入3结点插入&#xff08;红黑树旋转&#xff09;共对应6种红黑树情形有4种情形需要再平衡4结点插入&#xff08;红黑树变色&#xff09;234树转红黑树触发分裂有4种情形需要…

234. 回文链表

1、题目描述 额外要求&#xff1a;你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题&#xff1f; 2、题解 2.1 解题思路1 使用额外的栈空间&#xff0c;先将链表中所有的元素依次压入栈中&#xff0c;得到链表的逆序&#xff0c;然后将栈中的元素依次弹出和链表中的元素从…

C++关于初始化列表的细节(必须/不能使用初始化列表的情况、初始化列表的效率分析)

必须使用初始化列表初始化的变量 const修饰的成员变量。 class A { public:A() { a 1; }int a; };构造函数内使用a 1初始化变量a&#xff0c;但这本质上是一种赋值&#xff0c;而我们都知道&#xff0c;const类型的变量是不允许赋值的。 没有默认构造函数的成员变量 所有变量…