第三章 灰度变换与空间滤波

news2024/12/23 13:32:48

第三章 灰度变换与空间滤波

3.1背景知识

​ 空间域指图像平面本身。变换域的图像处理首先把一幅图像变换到变换域,在变换域中进行处理,然后通过反变换把处理结果返回到空间域。空间域处理主要分为灰度变换与空间滤波。

3.1.1 灰度变换和空间滤波基础

​ g(x,y) = T[f(x,y)]

​ 其中f(x,y)是输入图像,g(x,y)是输出图像,T是在点(x,y)的领域上定义的关于f的一种算子。

3.1.2 关于本章的例子

​ 本章中的例子多是图像增强的应用。

3.2 一些基本的灰度变换函数

​ s=T®

​ r和s分别代表处理前后的像素值,其中T是把像素r映射到像素值s的一种变换

3.2.1 图像反转

​ 将图片反转变换,可得到灰度级范围[0, L-1]的图像的反转图像,反转图像由下式给出:

​ s=L-1-r

​ 这种类型的处理特别适用于增强嵌入在一幅图像的暗区域中的白色或灰色细节,特别是黑色面积在尺寸上占主导地位时。

3.2.2 对数变换

​ 对数变换的通用公式是

​ s = clog(1+r)

​ 其中c是一个常数,并假设r>=0.

​ 通常使用对数变换来扩展图像中的暗像素的值,同时压缩更高灰度级的值。

3.2.3 幂律(伽马)变换

s = c r γ s = c r^γ s=crγ

​ 其中s和γ都是常数。有时还需要考虑偏移量β
s = c ( r + β ) γ s=c(r+β)^γ s=c(r+β)γ
​ 幂律变换的作用与对数变换的情况相似,用来扩展图像中的暗像素的值,同时压缩更高灰度级的值。用于校正这些幂律响应现象的处理称为伽马校正。

3.3 直方图处理

​ 直方图是多种空间域处理技术的基础。

​ 若一幅图像的像素倾向于占据整个可能的灰度级并且分布均匀,则该图像会有高对比度的外观并展示灰色调的较大变化。最终效果将是一幅灰度细节丰富且动态范围较大的图像。

3.3.1 直方图均衡

​ 直方图均衡可以让亮的地方更亮,暗的地方更暗。

​ 基本思想:把原始图像的直方图变换成均匀分布的形式,从而增加图像灰度的动态范围,达到增强图像对比度的效果。

​ 经过均衡化处理的图像,其灰度级出现的概率相同,此时图像的熵最大,图像所包含的信息量最大。

​ 1)对灰度级 归一化

​ 2)求各像素的概率

​ 3)累加直方图概率

​ 4)求变换后的灰度级

3.3.2 直方图匹配(规定化)

​ 处理后的图像具有规定的直方图形状,这种用于产生处理后有特殊直方图的方法称为直方图匹配或直方图规定化。

3.3.3 局部直方图处理

​ 以图像中每个像素的邻域中的灰度分布为基础设计变换函数,达到局部增强的目的。

3.3.4 在图像增强中使用直方图统计

​ 直接从直方阁获得的统计参数可用于图像增强。

3.4 空间滤波基础

3.4.1 空间滤波机理

​ 空间域滤波增强采用模板处理方法对图像进行滤波,去除图像噪声或增强图像的细节。

​ 空间滤披器由 (1)一个邻域(典型地是一个较小的矩形) , (2)对该邻域包围的图像像素执行的预定义操作组成

​ 滤波产生一个新像素,新像素的坐标等于邻域中心的坐标,像素的值是滤被操作的结果。 滤波器的中心访问输入图像中的每个像絮,就生成了处理(滤波)后的图像 如果在图像像素上执行的是线性操作,则该滤披器称为线性空间滤波器,否则, 滤波器就称为非线性空间滤泼器 。

3.4.2 空间相关与卷积

​ 相关是滤披器模板移过图像并计算每个位置乘积之和的处理。卷积的机理相似,但滤披器首先要旋转180° 。

​ 卷积的概念是线性系统理论的基石。卷积的基本特性是某个函与某个单位冲激卷积,得到 个在该冲激处的这个函数的拷贝。

3.4.3 线性滤波的向量表示

​ 当我们的兴趣在于相关或卷积的模板的响应特性R时,写成乘积的求和形式是更加方便的。

3.4.4 空间滤波器模板的产生

​ 生成一个大小为m×n 的线性空间滤波器要求指定 mn 个模板系数,这些系数是根据该滤波器支持什么样的操作来选择的,使用线性滤波所能做的所有事情是实现乘积求和操作。

3.5 平滑空间滤波器

​ 为了抑制噪声改善图像质量所进行的处理称图像平滑或去噪。

​ 1)局部平滑法

​ 2)超限像素平滑法

​ 3)空间低通滤波法

局部平滑法:

​ 局部平滑法是一种直接在空间域上进行平滑处理的技术。

​ 相邻像素间存在很高的空间相关性,而噪声则是统计独立的。

​ 因此,可以用领域内各像素的灰度平均值代替该像素原来的灰度值,实现图像的平滑。

定理:

​ 设图像中的噪声是随机不相关的加性噪声,窗口内各点噪声是独立同分布的,经过上述平滑后,信号与噪声的方差比可望提高N倍。即平滑后图像灰度的方差变为原来的1/N。

超限像素平滑法

​ 对领域平均法稍加改进,可导出超限像素平滑法。它是将f(x,y)和领域平均g(x,y)的差的绝对值与选定的阈值进行比较,根据比较结果决定点(x,y)的最后灰度g`(x,y)。

g ‘ ( x , y ) = { g ( x , y ) , 当 ∣ f ( x , y ) − g ( x , y ) ∣ > T f ( x , y ) , 当 ∣ f ( x , y ) − g ( x , y ) ∣ < = T g`(x,y) = \begin{cases} g(x,y), 当|f(x,y) - g(x,y)| > T\\ f(x,y), 当|f(x,y) - g(x,y)| <= T \end{cases} g(x,y)={g(x,y),f(x,y)g(x,y)>Tf(x,y),f(x,y)g(x,y)<=T
​ 这种算法对 保护仅有微小灰度差的细节及纹理也有效。

​ 可见随着领域的增大,去噪能力增强,但模糊程度也大。

低通滤波法

​ 由于噪声主要集中在高频部分,为去除噪声可以采用低通滤波器来抑制高频成分。

​ 同时由于边缘信息也分布在高频部分,频域滤波法同样会使图像边沿模糊。

​ 主要采用的滤波器有巴特沃斯低通滤波器、指数低通滤波器、梯形低通滤波器。主要区别在于过渡带的陡峭程度。

3.6 锐化空间滤波器

​ 锐化处理的主要目的是突出灰度的过渡部分。

3.6.1 基础

​ 对于一阶微分的任何定义都必须保证以下几点 1)在恒定灰度区域的微分值为零;2)在灰度台阶或斜坡处微分值非零;3)沿着斜坡的微分值非零。

​ 对于任何二阶微分的定义必须保证以下几点 1)在恒定区域微分值为零;2)在灰度台阶或斜坡的起点处微分值非零;3 )沿着斜坡的微分值非零。因为我们处理的是数字量,其值是有限的,故最大灰度级的变化也是有限的,并且变化发生的最短距离是在两相邻像素之间。

3.6.2 使用二阶微分进行图像锐化——拉普拉斯算子

​ 各向同性滤波器是旋转不变的, 即将原图像旋转后进行滤波处理给出的结果与先对图像滤波然后再旋转的结果相同。

​ 一个二维图像函数f(x,y)的拉普拉斯算子定义为

在这里插入图片描述

3.6.3 非锐化掩蔽和高提升滤波

​ 非锐化掩蔽的处理过程由下列步骤组成

​ 1.模糊原图像

​ 2.从原图像中减去模糊图像(产生的差值图像称为模板)

​ 3.将模板加到原图像上

3.6.4 使用一阶微分对(非线性)图像锐化——梯度

​ 图像处理中的 阶微分是用梯度幅值来实现的 对于函数f(x,y), .f 在坐标(x,y)处的梯皮定义为二维列向量。

在这里插入图片描述

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

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

相关文章

cmcc_simplerop

1,三连 2&#xff0c;IDA分析 溢出点&#xff1a; 偏移&#xff1a;0x144(错误) 这里动态重新测试了一下偏移&#xff1a; 正确偏移&#xff1a;0x20 3&#xff0c;找ROP 思路&#xff1a; 1、找系统调用号 2、ROPgadget找寄存器 3、写入/bin/sh ROPgadget --binary simpler…

7-2使用Redis构建任务队列

目录 7-2使用Redis构建任务队列 第1关&#xff1a;先进先出任务队列 1、rpush/lpush命令&#xff1a;rpush(name,values[values…]) 2、blpop&#xff1a;blpop(keys, timeout)和 lpop/rpop&#xff1a;lpop(name) 删并返回删除值 3、lpushx/rpushx&#xff1a;lpushx(name…

使用CKKS全同态求近似倒数(近似乘法逆元)

求倒数的算法 两个数互为倒数&#xff0c;是说这两个数乘起来等1.比如a和b互为倒数&#xff0c;那么ab1. 5的倒数是0.2&#xff0c;我们可以很简单的求出来&#xff0c;但是如何在密文域中求一个数的倒数呢&#xff1f; 文章《An investigation of complex operations with …

C#自适应布局

注意事项&#xff1a;不要在Form1中添加任何布局&#xff0c;页面背景不设置图片 步骤&#xff1a; 1、在项目中添加AutoWindowsSize.cs类&#xff0c;内容如下&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Da…

2.2 掌握 NumPy 矩阵与通用函数

2.2 掌握 NumPy 矩阵与通用函数 2.2.1 创建NumPy矩阵创建NumPy矩阵矩阵的运算矩阵的属性 2.2.2 掌握ufunc函数1、常用的ufunc函数运算2、ufunc函数的广播机制 2.2.1 创建NumPy矩阵 创建NumPy矩阵 1、使用mat函数创建矩阵&#xff1a; matr1 np.mat(“1 2 3;4 5 6;7 8 9”) 2…

casbin轻量级的基于配置的授权框架

简介 Casbin是一个强大的、高效的开源访问控制框架&#xff0c;其权限管理机制支持多种访问控制模型。 Casbin提供了一个执行者 根据提供给执行者的策略和模型文件验证传入的请求。再根据对应的配置授权策略&#xff0c;验证请求判断释放那些行动。 在 Casbin 中, 访问控制模…

由于找不到vcomp140.dll无法继续执行代码,解决方法全攻略

如何解决找不到vcomp140.dll错误&#xff1f;在使用某些软件或者游戏的时候&#xff0c;你可能会遇到下面的错误提示&#xff1a;“由于找不到vcomp140.dll&#xff0c;无法继续执行代码”。这个错误提示通常表示你的电脑缺少一个或多个DLL文件&#xff0c;而这些文件是软件和游…

「字节跳动测试开发面经」一二三面+hr面+超级全资料+复习资料

​ 说在前面&#xff0c;面试时最好不要虚报工资。本来字节跳动是很想去的&#xff0c;几轮面试也通过了&#xff0c;最后没offer&#xff0c;自己只想到几个原因&#xff1a; 1、虚报工资&#xff0c;比实际高30%&#xff1b; 2、有更好的人选&#xff0c;这个可能性不大&am…

【Linux】软件包管理器 yum和编辑器-vim的基本使用

文章目录 一、yum背景知识1.商业生态2.开源生态3.Linux软件生态本土化 二、yum的基本使用1.什么是软件包2.查看软件包3.安装软件4.卸载软件5.rzsz 三、vim的基本使用1.vim的基本概念2.vim的基本操作3.vim命令模式命令集4.vim末(底)行模式命令集5.操作总结 四、简单vim配置1.vim…

C++学习day--10 条件判断、分支

1、if语句 if 语句的三种形态 形态1&#xff1a;如果。。。那么。。。 #include <iostream> using namespace std; int main( void ) { int salary; cout << " 你月薪多少 ?" ; cin >> salary; if (salary < 20000) { cout <&…

浅谈整除分块

例题一 ∑ i 1 n ⌊ n i ⌋ \sum_{i1}^n \lfloor\frac n i\rfloor\\ i1∑n​⌊in​⌋ 首先很容易想到直接求解&#xff0c;对于较大的数据&#xff0c; O ( n ) O(n) O(n)做法无法通过。 注意到函数 y ⌊ n x ⌋ y\lfloor\dfrac n x\rfloor y⌊xn​⌋的图像如下&#xff1a…

Hive语言

一、Hive的DDL语言&#xff08;数据库、数据表的增删改查操作) 二、Hive的DQL语言&#xff08;数据库查询语言&#xff09; 2.1Hive七子句 聚合函数&#xff1a;count()、sum()、max()、min()、avg()可以单独使用。(缩写&#xff1a;cs mm a) 2.1.1 分区查询与分区裁剪 SELEC…

OpenGL(九)——颜色

目录 一、前言 二、简单光源 三、光照场景 3.1 创建光源 3.2 光源顶点着色器 3.3 光源片段着色器 3.4 物体片段着色器 3.5 光源位置 一、前言 我们看到的物体颜色是通过光照在物体&#xff0c;然后反射到人眼成像&#xff0c;具体而言是物体不能吸收的颜色。如白光照射…

C++学习day--09 字符串比较、运算符

1、项目练习 第 1 节 项目需求、项目实现 项目实现&#xff1a; #include <iostream> #include <Windows.h> #include <string> using namespace std; int main( void ) { string name; string pwd; std::cout << " 请输入账号&am…

GPT-4的免费使用方法分享

目录 方法1&#xff1a;使用Ora.sh的LLM应用 方法2&#xff1a;使用https://steamship.com 方法3&#xff1a;使用https://nat.dev 方法4&#xff1a;http://tdchat.vip 方法5&#xff1a;使用Poe网站或App 方法6&#xff1a;使用 Opencat App 方法7:使用https://Huggin…

uniApp实现公农日历相互转换、公历、农历、阳历、阴历、calendar

文章目录 效果图1、组件1.1、html部分1.2、JavaScript部分1.3、style部分 2、使用组件3、总结 效果图 1、组件 1.1、html部分 <template><view v-if"isCalendar" class"calendar_box"><view v-show"!isTime" class"btn_ca…

Linux服务器使用supervisorctl命令部署Java服务详解

我们公司采用supervisorctl命令运行Java -jar包&#xff0c;觉得还是很方便的&#xff0c;此篇文章教你如何使用supervisorctl从零部署Java服务 安装jdk 首先肯定是下载安装Java的运行环境 jdk 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#jav…

WindowContainer相关类

WindowContainer类   从WindowContainer类的注释中可以看出该类中定义了一些公共的方法和属性给直接持有窗口的自己或者它的孩子使用&#xff0c;像RootWindowContainer、DisplayContent、DisplayArea、DisplayArea.Tokens、TaskDisplayArea、Task、ActivityRecord、WindowTok…

【话题讨论】-浅谈VR与AR

一、引言 随着ICT基础技术的发展&#xff0c;我们现在社会中的基础ict设施已经逐步完善&#xff0c;从而我们的社会也开始出现科幻片中才会有的场景&#xff0c;比如&#xff1a;我们可以构件一个虚拟3D沙盘。 还有我们熟悉的各类智能眼镜&#xff0c;已经进入到千家万户&…

干货 | Mendeley 的基础使用方法

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 当阅读的文献越来越多&#xff0c;如何整理文献就成了一个大问题。文献管理软件则减轻了我们文献整理的负担。目前的文献管理软件使用较多的有Endnote、Notepress、Mendeley、Zotero等。 …