NEFU数字图像处理(2)图像增强

news2024/11/27 23:44:29

一、背景

图像在传输或处理过程中会引入噪声或使图像变模糊,从而降低了图像质量,甚至淹没了特征给分析带来困难,因此要增强特征,进行处理


图像增强按特定的需要突出一幅图像中的某些信息同时,削弱或去除某些不需要的信息的处理方法

处理方法

二、灰度直方图

2.1定义

        灰度直方图是一种统计图表,用于表示图像中每个灰度级别的像素数量。它可以显示图像中不同灰度级别的分布情况,从而帮助我们了解图像的亮度分布。

        灰度直方图通常以灰度级别为横轴,像素数量或像素比例为纵轴,绘制为柱状图。每个柱子代表一个灰度级别,柱子的高度表示该灰度级别的像素数量或像素比例。

        通过观察灰度直方图,我们可以了解图像的亮度分布情况。例如,如果直方图中柱子集中在较低的灰度级别上,表示图像较暗;如果柱子集中在较高的灰度级别上,表示图像较亮。此外,灰度直方图还可以帮助我们判断图像的对比度、亮度范围和亮度平均值等信息。

2.2性质

 2.3均衡化

基本思想

把原始图像不均衡的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。

灰度直方图均衡化是一种用于增强图像对比度的图像处理技术。它通过重新分配图像的灰度级别,使得图像的灰度分布更加均匀,从而增强图像的细节和对比度。

灰度直方图均衡化的步骤如下:

  1. 计算图像的灰度直方图,得到每个灰度级别的像素数量或像素比例。

  2. 计算累积分布函数(CDF):将灰度直方图中每个灰度级别的像素数量或像素比例累加,得到每个灰度级别的累积值。

  3. 根据CDF,计算映射函数:将每个灰度级别映射到新的灰度级别,使得新的灰度级别在0到255之间,并且使得灰度级别的分布更加均匀。

  4. 对图像中的每个像素,根据映射函数将其灰度级别转换为新的灰度级别。

  5. 得到均衡化后的图像,即灰度直方图均衡化的结果。

作用:增强图像的对比度。
对比度:图像中灰度反差的大小。
灰度反差↑,图像对比度↑,图像清晰度↑。 

均衡化后的图像其灰度分布的动态范围变大,灰度级间隔增大,灰度反差变大,对比度提高
图像更加清晰。

 2.4规定化

将原始图像的灰度直方图变换成所希望的灰度直方图(也称规定的灰度直方图)

灰度直方图规定化是一种图像处理技术,用于将一幅图像的灰度级别分布调整为与另一幅图像的灰度级别分布相似。它通过匹配两幅图像的灰度直方图,实现对图像的灰度级别分布进行调整。

灰度直方图规定化的步骤如下:

  1. 计算源图像和目标图像的灰度直方图,得到每个灰度级别的像素数量或像素比例。

  2. 计算源图像和目标图像的累积分布函数(CDF):将灰度直方图中每个灰度级别的像素数量或像素比例累加,得到每个灰度级别的累积值。

  3. 对于源图像的每个灰度级别,找到目标图像中累积分布函数最接近的灰度级别,并将源图像的灰度级别映射到这个目标灰度级别。

  4. 对源图像中的每个像素,根据映射函数将其灰度级别转换为新的灰度级别。

  5. 得到规定化后的图像,即灰度直方图规定化的结果。

三、灰度变换

 3.1分类

直接灰度变换:

  • 线性变换:正比变换、反比变换等
  • 分段线性变换
  • 非线性变换:幂次变换、对数变换等

直方图修正:

  • 直方图均衡化
  • 直方图规定化

 3.2空域点处理增强

扩展即变换后的灰度区间大于变换前的灰度区间;压缩即变换后的灰度区间小于变换前的灰度区间

正比变换 

反比变换

反比变换作用:图像产生负像效果,即黑变白,白变黑;亮变暗,暗变亮。

一般线性变换

一般线性变换的数学表达式为:g(x,y)=k*f(x,y)十b,其中f(x,y)表示原始图像的灰度级别,g(x,y)表示变换后的图像的灰度级别,k和b是常数,用于控制变换的斜率和截距。

  • 当k>1时,变换会增加图像的对比度,使得图像中的细节更加清晰可见;
  • 当0<k<1时,变换会降低图像的对比度,使得图像更加柔和。

 分段线性变换

其他分段变换

灰度切割

 位图切割

幂次变换

当K=1时:幂次变换简化为正比变换,图像灰度保持不变
当0<K<1时:
变换曲线在正比曲线上方。

  • 对灰度进行非线性放大,灰度级提高(即变换后输出灰度级s大于输入灰度级),使得图像整体变亮。
  • 使图像的低灰度范围得以扩展,而高灰度范围得以压缩

对数变换

 四、图像噪声

4.1概述

图像噪声是指在图像中出现的不希望的随机变化或干扰。它可以由多种因素引起,包括传感器噪声、电磁干扰、信号传输中的干扰等。图像噪声会导致图像细节模糊、失真、颜色偏移等问题,影响图像的质量和可用性。

常见的图像噪声包括:

  1. 高斯噪声:由于传感器噪声、电子元件的随机变化等原因引起的随机噪声。它的分布符合高斯分布,呈现为图像中的亮度随机变化。

  2. 椒盐噪声:由于传感器错误、信号传输中的干扰等原因引起的随机噪声。它表现为图像中出现明显的黑白像素点,类似于椒盐的颗粒。

  3. 斑点噪声:由于传感器故障、传输中的干扰等原因引起的随机噪声。它表现为图像中出现明显的亮度或颜色变化的斑点。

 4.2图像间运算

+-运算

 

非运算

与运算 

或运算

异或运算

 

4.3处理概念

五、图像平滑

图像平滑的主要目的是消除噪声,去除小的细节或弥合目标间的缝隙

5.1常用的处理方法 

  • 均值滤波(邻域平均法)
  • 中值滤波
  • 多图像平均法

5.2相关概念

模板运算是图像处理中常用的一种邻域运算方式可以实现图像平滑、图像锐化、边缘检测等。 

模板

  • 模板一般用矩阵表示(常为n阶方阵
  • 模板中定义了参与运算的中心元素和邻域元素的相对位置,以及模板系数(也称加权系数
  •  模板中带星号*的元素为中心元素,表示当前将要被处理的元素。一般位于模板的中心位置(也可选取非中心位置,如右上角点)
  • 模板系数(或加权系数)的大小及排列顺序决定了对图像进行邻域处理的类型

 模板运算

模板运算中图像边界问题的处理:


 

 5.3空域滤波增强

均值滤波(邻域平均法)

几点说明


  • 具有去除一定噪声的作用,模板的大小与图像平滑的效果密切相关,模板尺寸越大(滤波器越宽),平滑后的图像就越模糊。 
  • 这些平滑模板中的加权系数之和都为1。
  • 模板中不同位置上的加权系数不同,说明邻域中不同位置上的像素对中心像素输出结果的影响不同,加权系数越大,对平滑结果的影响越大。
  • 模板不宜太大,一般用3×3或5×5的即可。
  • 相对而言,更适合处理高斯噪声。

中值滤波

几点说明


  • 可以降低图像噪声,在去除噪声的同时能有效保护图像边缘少受模糊。
  • 相对而言,更适合处理椒盐噪声(脉冲噪声)。
  • 但对于点、线等细节较多的图像一般不宜采用。

多图像平均法


 

因此,M幅图像平均后输出结果的方差是原图像的1/M。随着M的增大,对噪声的抑制作用越强平均结果更接近理想图像。

 六、图像锐化

6.1概述

图像锐化的目的是增强图像中的边缘和细节,使模糊的图像变清晰。
可以通过微分运算来实现,即微分法,包括:

  • 梯度算法(基于一阶微分)
  • 拉普拉斯算法(基于二阶微分)

6.2相关概念

梯度

在图像处理中,梯度通常用于表示图像中像素值的变化率,以便检测边缘和轮廓。

 梯度算子

梯度算子是一种常用的图像处理算法,用于检测图像中的边缘和轮廓。梯度算子可以通过计算图像中每个像素点的梯度值来确定图像的变化率和边缘信息。

6.3一阶梯度例子

 正交梯度算子

正交梯度算子是一种特殊的梯度算子,用于计算图像中像素点的正交梯度。正交梯度是指图像中像素点在水平和垂直方向上的梯度值。

 

 Roberts梯度算子

 Prewitt梯度算子

 Sobel梯度算子

几点说明

2x2梯度算子(正交和Roberts)的主要特点:

  • 模板大小为偶数,中心位置不明显(通常位于左上角)
  • 对噪声敏感,即容易受到噪声影响。

3x3梯度算子(Prewitt和Sobel)的主要特点:

  • 模板大小为奇数,中心位置明显(通常位于正中心)
  • 由于引入了平均因素,对噪声有一定抑制作用。
  • Sobel算子突出了最近像素的影响(即对离邻域中心最近的像素进行了加权,权重系数是其他像素的2倍),
  • 噪声抑制效果比Prewitt算子要好。

结论:图像经过梯度运算后,留下灰度值变换大的边缘,使其细节清晰,从而达到锐化的目的

6.4二阶梯度

 举例

不含对角分量的拉普拉斯算子

 

含对角分量的拉普拉斯算子

 

  • ·一阶微分主要用于边缘检测;
  • 二阶微分对细线、孤立点等小细节有更强的响应,主要用于细节增强。 

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

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

相关文章

一文带你了解IAM(身份与访问管理)

一文带你了解IAM&#xff08;身份与访问管理&#xff09; 在进入新公司时&#xff0c;领导说让我们改版之后采用IAM的方式进行资源管理&#xff0c;what&#xff1f;IAM是什么&#xff1f;恕我无知了。后来查阅了相关资料才知道。 IAM不仅是一种产品&#xff0c;也是大部分产品…

NewStarCTF 2023 WEEK1|PWN ret2text

拖进IDA&#xff0c;查看 int __cdecl main(int argc, const char **argv, const char **envp) {char buf[32]; // [rsp0h] [rbp-20h] BYREFinit();puts("Welcome to NewStar CTF!!");puts("Show me your magic");read(0, buf, 0x100uLL);return 0; } ma…

Golang 程序漏洞检测利器 govulncheck(三):github 集成方法

上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 使用的漏洞数据库&#xff08;Go vulnerability database&#xff09;&#xff0c;本文详细讲解下 Github 项目如何使用 govulncheck。 govulncheck 为 Golang 开发者提供了一种准确可靠的方式来了解程序中可能存在…

matlab高斯消元法求逆

算法实现基本与高斯消元法求解线性方程组相同&#xff0c;同样还是三层循环进行消元和回代&#xff0c;只是增广矩阵的规模由nn1变成了n2n&#xff0c;因此算法复杂度仍然为O(n3)。 A[1,1,2,1;1,2,0,1;1,4,2,1;1,8,2,4]; beye(4); A_b[A,b]; [n,m]size(A_b); for i1:nfor jm:-…

零基础,想做一名网络安全工程师,我可以去哪里学,或者有什么建议?

这应该是全网最全的网络安全扫盲帖了&#xff01;发CSDN也有一段时间了&#xff0c;经常会有朋友在后台问我各种问题&#xff0c;比如“应该如何选方向”、“网络安全前景如何”、“怎么选适合的安全岗位”等等。于是今天借这个问题来给大家好好说说&#xff0c;如果你是零基础…

C++简单上手helloworld 以及 vscode找不到文件的可能性原因

helloworld #include <iostream>int main() {std::cout << "hello world!" << std::endl;return 0; }输入输出小功能 #include <iostream> using namespace std; /* *主函数 *输出一条语句 */int main() {// 输出一条语句cout << &q…

有关java连接数据库报错的解决方案

Ⅰ 报错信息 在使用java连接数据库时&#xff0c;使用下面代码 Class.forName("com.mysql.jdbc.Driver"); Connection connection DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test1", "test1", "test");出现的报错…

Python3入门教程||Python3 SMTP发送邮件

在Python3 中应用的SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则&#xff0c;由它来控制信件的中转方式。 python的 smtplib 提供了一种很方便的途径发送电子邮件。它对 smtp 协议进行了简单的…

转行自学软件测试,8个月成功上岸(艰难的自学历程)

转行学软件测试&#xff0c;最后找到第一份工作&#xff0c;我一共用了八个月。六个半月学习技术&#xff0c;一个半月找到工作。 自学软件测试到就业并不容易&#xff0c;过程中多次想放弃&#xff0c;学习遇到的问题太多自己解决很麻烦加上网络上各种传达行情不好的信息。现…

uCOSIII实时操作系统 三 移植

目录 uCOSIII简介&#xff1a; 准备工作&#xff1a; 准备基础工程&#xff1a; UCOSIII工程源码&#xff1a; UCOSIII移植&#xff1a; 向基础工程中添加相应的文件夹 向工程中添加分组 常见问题&#xff1a; 下载验证&#xff1a; uCOSIII简介&#xff1a; UCOS-I…

【C++ 学习 ㉖】- 位图详解(哈希扩展)

目录 一、位图的概念 二、位图的实现 2.1 - bitset.h 2.2 - test.cpp 三、位图的应用 3.1 - 例题一 3.2 - 例题二 一、位图的概念 假设有这样一个需求&#xff1a;在 100 亿个整型数字中快速查询某个数是否存在其中&#xff0c;并假设是 32 位操作系统&#xff0c;4 GB…

什么是零日攻击?

零日攻击 1. 什么是零日漏洞2. 什么是零日市场3. 如何将零日漏洞转化为零日攻击4. 零日攻击的主要目标5. 典型零日攻击事件 1. 什么是零日漏洞 零日攻击是指利用零日漏洞对系统或软件应用发动的网络攻击。 零日漏洞也称零时差漏洞&#xff0c;通常是指还没有补丁的安全漏洞。…

代码随想录算法训练营第四十五天 | 1049. 最后一块石头的重量 II、494. 目标和、474.一和零

1049. 最后一块石头的重量 II 视频讲解&#xff1a;动态规划之背包问题&#xff0c;这个背包最多能装多少&#xff1f;LeetCode&#xff1a;1049.最后一块石头的重量II_哔哩哔哩_bilibili 代码随想录 &#xff08;1&#xff09;代码 494. 目标和 视频讲解&#xff1a;动态规划…

10.8号作业

LED三盏灯的交替闪烁 .text .global _start _start: /* 1. led灯的初始化 *//* 1.1 使能GPIOE、DPIOF外设控制器的时钟 */ldr r0, 0x50000A28ldr r1, [r0]orr r1, r1, #(0x3 << 4)str r1, [r0]/* 1.2 设置PE10、PE8、PF10引脚为输出模式 */ldr r0, 0x50006000ldr r1, […

Redis到底是什么?都有哪些特性?看完这一篇就都会了

目录 Redis是什么 Redis的应用场景有哪些&#xff1f; Redis的数据类型及主要特性 Redis的数据结构 简单动态字符串SDS (Simple Dynamic String) SDS的特点 Redis特性1&#xff1a;事务 Redis特性2&#xff1a;发布订阅(Pub/Sub) Redis特性3&#xff1a;Stream Redis…

IntelliJ IDEA :解决 idea 导入项目爆红

IntelliJ IDEA &#xff1a;解决idea导入项目爆红 - LevelCoder的个人页面 - OSCHINA - 中文开源技术交流社区我们在导入一个新的项目到idea的时候,项目明明没有报错,但是会出现出了父包属于正常颜色外,其子包都会爆红色但是不属于项目本身错误,依旧可以正常启动,小编拿到入git…

C语言详细讲解#error与#line如何使用

C语言详细讲解#error与#line如何使用_C 语言_脚本之家 (jb51.net) 这篇文章主要介绍了C语言中#error与#line如何使用&#xff0c;#error与#line虽然在语言里面用的比较少&#xff0c;但是还是有必要了解一下 − 目录 一、#error 的用法二、#line 的用法三、小结 一、#error…

用于现场仪表过程控制的多协议配置工具

一 挑战 在现代生产环境中&#xff0c;我们会使用各种现场设备来记录过程数据&#xff08;从温度传感器到压力、液位和流量计&#xff09;&#xff0c;而这些数据需要通过多种通信协议来进行传输&#xff0c;例如HART、FOUNDATION Fieldbus或PROFIBUS PA。为此&#xff0c;每个…

找不到d3dx9_42.dll,无法继续执行代码怎么办?详解各种解决方法及注意事项

找不到d3dx9_42.dll,无法继续执行代码怎么办&#xff1f;首先&#xff0c;我们来解释一下d3dx9_42.dll文件是什么以及为什么会出现丢失的情况。在Windows操作系统中&#xff0c;d3dx9_42.dll是DirectX 9的一部分&#xff0c;它包含了许多DirectX 9图形函数的实现。这些函数被游…

VMware设置Linux网络

vmware提供了三种网络工作模式&#xff0c;Bridged&#xff08;桥接模式&#xff09;、NAT&#xff08;网络地址转换模式&#xff09;、Host-Only&#xff08;仅主机模式&#xff09;&#xff1a; vmware一般有两个虚拟网卡&#xff0c;VMnet1&#xff08;仅主机模式&#xff…