【图像处理与机器视觉】灰度变化与空间滤波

基础

空间域与变换域

空间域:认为是图像本身,对于空间域的操作就是对图像中的像素直接进行修改
变换域:变换系数处理,不直接对于图像的像素进行处理

邻域

图像中某点的邻域被认为是包含该点的小区域,也被称为窗口

空间滤波

邻域选择空间域中的一小块区域,对于邻域中的像素运用算子T,并在该位置产生一个输出;随后将邻域的原点移动到下一个位置,并且重复前面的过程,生成下一个位置的值,当邻域的大小为1*1的时候,输出像素只取决于输入像素,而与周边像素无关

灰度变换函数

(1)反转变换:s = (L-1) - r
r为输入图像像素,s为输出图像像素,[0,L-1]为图像的灰度集
作用:使黑白反转
(2)对数变换: s = c log ⁡ ( 1 + r ) s= c\log(1+r) s=clog(1+r)
c为常数,r>=0,使用对数变换可以让原图的灰度进行压缩,避免超出设备的限制,如图所示,将较低的灰度提高到了中间,同理还有其他变换函数也能起到相同或者相反的作用
在这里插入图片描述
(3)幂变换: s = c ⋅ r γ s=c\cdot r^\gamma s=crγ
gamma小于1的时候,提高了灰度级,gamma大于1时,降低了灰度级
(记住图片就好)
在这里插入图片描述

直方图处理(重要)

对于一个灰度级范围为[0,L-1]的数字图像,其直方图表示为 h ( r k ) = n k h(r_k) = n_k h(rk)=nk,其中rk代表着第k级灰度,nk是图像中处在该灰度级的像素个数
归一化: p ( r k ) = h ( r k ) / M N p(r_k)=h(r_k)/MN p(rk)=h(rk)/MN
p是灰度级在图像中出现的概率估计,所有分量加起来之和为1
在这里插入图片描述
从左至右分别为暗图片,两图片,低对比度图片,高对比度图片

直方图均衡

目的就是将聚集在一起的灰度值变得“平坦”得分布在所有灰度级上,从最终结果上来说可以认为增加了对比度,同时将过亮或者过暗的图片调整正常。
这里我们不对于直方图均衡的具体原理进行细究,如想了解清楚请查看此处:直方图均衡化原理
理想情况下,均衡后的连续函数会使所有灰度级的概率密度全部相等
在这里插入图片描述
以下为实际遇到时的处理:
(这里也可以跳转我之前做过的直方图均衡/匹配实验,内含matlab代码:https://blog.csdn.net/weixin_46876169/article/details/137008120?spm=1001.2014.3001.5501)
e.g.一幅图大小为64*64,其灰度级范围为[0,7],归一化的灰度分布如下表所示:
在这里插入图片描述
直方图均衡变换函数为: s k = T ( r k ) = ( L − 1 ) ∑ j = 0 k p r ( r j ) s_k = T(r_k)=(L-1)\sum\limits_{j=0}^kp_r(r_j) sk=T(rk)=(L1)j=0kpr(rj)
可以计算得到: s 0 = 7 × p r ( r 0 ) = 7 ⋅ 0.19 = 1.33 s_0 = 7 \times p_r(r_0) = 7 \cdot 0.19 = 1.33 s0=7×pr(r0)=70.19=1.33 s 1 = 7 p r ( r 0 ) + 7 p r ( r 1 ) = 3.08 s_1= 7p_r(r_0) + 7p_r(r_1) = 3.08 s1=7pr(r0)+7pr(r1)=3.08,同样有s2=4.55,s3=5.67,s4=6.23,s5=6.65,s6=6.86,s7=7.00
将这些小数进行取整到最近的整数:
在这里插入图片描述
通过这一组式子,我们可以得到映射关系,原本灰度级为0的像素映射到1,灰度级为1的像素映射到3,其他类似
在这里插入图片描述
我们可以发现,均衡后的直方图在亮度上整体有了提高,同时尽可能均匀的平铺在所有灰度级中

直方图匹配

有时候直方图均衡处理完的图片并不满足我们需要的效果,比如对于上图我们只想提高亮度,而不想提高其对比度,那么通过直方图均衡这样的方法就没法做到。此时我们可以选取一张我们希望的亮度与对比度的图片,使用直方图匹配的方法来将原直方图变为我们需要的样子。
这里我们仍然忽略繁杂的理论推导,直接来看一看具体的例子,假设变换对象仍然为原来的图片,新的参考图的直方图给在了图中:
在这里插入图片描述
(1)对于原图与参考图均进行直方图均衡:
在这里插入图片描述
在这里插入图片描述
将s的值与G(z)的值相对应,每个s取最接近的G(z)值,当s离两个G(z)值一样接近时,取较小的那个,最终可以得到s对应z的映射,再加上原本r到s的映射,最终就能得到r到z的映射
在这里插入图片描述
在这里插入图片描述
如此就可以得到目标的直方图,需要注意的是,映射完后原图的直方图各灰度级概率密度并不与目标图完全一致,而是指分布一致
在这里插入图片描述

空间滤波

滤波是指通过或拒绝一定范围内的频率分量,例如能够通过低频分量的滤波器叫做低通滤波器,最终效果可以对一幅图片进行模糊处理。
根据执行的操作可以分为:线性空间滤波器和非线性空间滤波器去
对于一个窗口为3x3的滤波器,其输出为各位置上的系数与对应像素值的乘积之和
如果期望图像中的像素变化为以该像素为中心的3x3邻域的平均灰度,可以使用 R = 1 9 ∑ i = 1 9 z i R = \frac{1}{9}\sum\limits_{i=1}^9z_i R=91i=19zi

平滑空间滤波

平滑滤波用于模糊处理和降低噪声
模糊处理经常用于预处理任务,可以去除图像中的一些噪声

平滑线性滤波器

可以归入低通滤波器,主要作用是降低噪声,去除图像中的不相关细节,但也可能导致边缘模糊或者由于灰度级数量不足导致的伪轮廓
在这里插入图片描述
加权平均滤波:
在这里插入图片描述

非线性滤波器

统计排序滤波器是一种非线性滤波器,通过滤波器中包围的图像中所含像素的排序来决定中心像素的值
例如:中值滤波器,将滤波器内灰度的中值代替滤波器中心的值,此外除了取中值,还可以取最大值(最大值滤波器),最小值(最小值滤波器)
中值滤波器对于处理脉冲噪声(椒盐噪声)非常有效

锐化空间滤波器

对于一阶微分和二阶微分的定义:
一阶微分:(1)在恒定区域为0(2)在斜坡或台阶的起点处非0(3)在斜坡上非0
二阶微分:(1)在恒定区域为0(2)在台阶或斜坡的起点处非0(3)在斜坡上为0
在这里插入图片描述

使用拉普拉斯算子进行图像锐化

拉普拉斯算子是一种各向同性微分算子,这种滤波器的响应与其以何方向作用在图像上无关。
对于两个变量的拉普拉斯算子,
∇ 2 f = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 \nabla^2f=\frac{\partial^2f}{\partial x^2}+\frac{\partial^2f}{\partial y^2} 2f=x22f+y22f
将其以离散的形式表述,我们就可以得到:
在这里插入图片描述
对于y也是同理:
在这里插入图片描述
故最终可以得到:
在这里插入图片描述
需要注意的是,拉普拉斯算子所产生的是一种滤波,可以认为是一种滤镜,和原图进行叠加才能起到相应的作用:

当拉普拉斯算子的中心常数为负时,c=-1,否则c=1

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

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

相关文章

在IDEA中使用Git在将多次commit合并为一次commit

案例: 我想要将master分支中的 测试一、测试二、测试三三次commit合并为一次commit 1. 点击Git 2. 双击点击commit所在的分支 3. 右键要合并的多个commit中的第一次提交的commit 4. 点击右键后弹出的菜单中的Interactively Rebase From Here选项 5. 点击测试二…

MySQL排序操作

025排序操作 select .. from .. order by 字段 asc/descselect empno, ename, sal from emp order by sal asc;asc 不写的话,默认升序 多个字段排序 查询员工的编号、姓名、薪资,按照薪资升序排列,如果薪资相同的,再按照姓名升…

二叉树的顺序结构(堆的实现)

前言 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结 构存储。 现实中我们通常把堆 ( 一种二叉树 ) 使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事&…

问题:8255A的端口A工作在方式2时,使用端口C的______作为与CPU和外部设备的联络信号。 #媒体#经验分享#其他

问题:8255A的端口A工作在方式2时,使用端口C的______作为与CPU和外部设备的联络信号。 参考答案如图所示

邮件安全证书,保障通信安全的必备利器

在数字通信日益普及的今天,电子邮件的安全性越来越受到人们的关注。邮件安全证书,作为保障邮件通信安全的重要工具,逐渐走进了大众的视野。本文将为大家揭秘邮件安全证书,解答关于它的常见问题,帮助大家更好地了解和使…

浮点数的精度和精度丢失,如何规避,有简单操作

在日常工作中,如果做财务软件相关肯定会遇到这种问题,凭证金额表面上看是相等的,但程序运算出的结果却是FALSE。 例如:验证凭证金额借方总金额是否等于贷方总金额? 直接sum(借方分录金额1.1借方分录金额2.…

RK3568技术笔记之一 RK3568总体介绍

RK3568是瑞芯微开发出一款很好用的芯片。我先把ROCKCHIP的原厂信息搬过来看看。 首先声明一下,这篇文章里的资讯版权归瑞芯微电子股份有限公司。毕竟是我转过来的嘛。 我自己的心得,版权就归我啦。 主要特性 Quad-core Cortex-A55 up to 2.0GHzMali-G…

认识HTTP状态码(status code)

目录 1、200 OK(访问成功)👇 2、404 Not Found (没有找到资源)👇 3、403 Forbidden (访问拒绝)👇 4、405 Method Not Allowed👇 6、504 Gateway Timeout…

CV Method:经典CNN Backbone总结

文章目录 前言一、ResNet二、ResNeXt三、Res2Net四、SeNet五、ResNeSt六、DenseNet七、CSPNetPytorch Model Code总结 前言 Backbone作为一切深度学习任务的基础,不论是理论还是实际应用都有重要的意义,本文针对经典Backbone进行总结,这些Ba…

[word] word怎样转换成pdf #职场发展#经验分享#职场发展

word怎样转换成pdf word怎样转换成pdf?word格式是办公中常会用到的格式,word格式编辑好了要想转换成pdf格式再来传输的话需要怎么操作呢?小编这就给大家分享下操作方法,一起来学习下吧! 1、安装得力PDF转换器&#x…

【stm32/CubeMX、HAL库】swjtu嵌入式实验七 ADC 实验

相关电路与IO引脚 注意&#xff1a;串口打印重定向后使用printf打印需要在keil里勾选 Use MicroLIB &#xff0c;否则会卡住。 参看&#xff1a;https://zhuanlan.zhihu.com/p/565613666 串口重定向&#xff1a; /* USER CODE BEGIN Includes */#include <stdio.h>//…

锐捷校园网自助服务系统 login_judge.jsf 任意文件读取漏洞复现(XVE-2024-2116)

0x01 产品简介 锐捷校园网自助服务系统是锐捷网络推出的一款面向学校和校园网络管理的解决方案。该系统旨在提供便捷的网络自助服务,使学生、教职员工和网络管理员能够更好地管理和利用校园网络资源。 0x02 漏洞概述 校园网自助服务系统/selfservice/selfservice/module/sc…

apollo 环境配置

输入法 安装输入google pinyin法 sudo apt install fcitx-bin sudo apt install fcitx-table sudo apt-get install fcitx fcitx-googlepinyin -y 最后需要reboot 系统环境 修改文件夹名称为英文 将Ubuntu主文件夹里的中文文件夹名称改成英文_番茄炒鸡蛋z的博客-CSDN博客…

java中事务中遇到锁会造成什么问题,以及该如何解决?

在spring中实现事务有多种方式&#xff0c;主要是两种&#xff1a;一种是声明式事务&#xff0c;一种是编程式事务&#xff0c;今天我们就讲声明式事务中的一种&#xff0c;使用注解Transactional&#xff0c;这个注解的作用就是帮助我们在代码执行完毕之后自动提交事务&#x…

淘宝评论数据爬取全攻略

一、淘宝评论数据爬取的背景与意义 随着互联网的快速发展&#xff0c;电子商务平台如淘宝、京东等在我国市场占有率逐年上升。消费者在购买商品时&#xff0c;除了关注商品的价格、质量等因素外&#xff0c;还会参考其他消费者的评价和评论。淘宝评论数据爬取是指通过技术手段…

C# NX二次开发-设置背景颜色

使用UF函数能直接设置UG背景颜色: 1.设置背景颜色选项为纯色: 2.编写更新背景颜色代码: var nxColor NXColor.Factory._Get(186);var rgb nxColor.GetRgb();double[] arr [rgb.R, rgb.G, rgb.B];theUf.Disp.SetColor(UFConstants.UF_DISP_BACKGROUND_COLOR, UFConstants.UF…

flask轻松入门,概念讲解

Hello World Flask 是轻量级web框架&#xff0c;仅保留了核心功能&#xff1a; 请求响应处理模板渲染URL路由 文章目录 Hello Worldflask命令模式python命令模式两种模式对比修改入口文件配置flask命令修改python命令修改 修改端口和地址flask命令修改python命令修改 修改 URL …

java——顺序表

前言&#xff1a;顺序表是线性表的一种&#xff0c;它是较于数组更加灵活的一种储存方式。线性表通常是逻辑上是连续的一条直线&#xff0c;但在物理上不是连续的。java中已经实现好了一个顺序表&#xff0c;搭配泛型可以支持各种类型的使用&#xff0c;下面就来介绍该如何使用…

Mysql疑难报错排查 - Field ‘XXX‘ doesn‘t have a default value

项目场景&#xff1a; 数据库环境 &#xff1a;mysql8; 工程使用&#xff1a;MyBatisPlus 表情况&#xff1a; 问题描述 某一个插入语句使用了 MyBatisPlus 的 save 方法&#xff0c;因为end_time1 end_time2都并没有值&#xff0c;所以在MyBatisPlus默认情况下&#xff0c;…

如何使自己写的代码易读易懂?

〓● 如果代码可读性不佳、不容易理解&#xff0c;可能造成如下问题&#xff1a; 〓❏ 其他工程师浪费时间解读它&#xff1b; 〓❏ 误解导致引入缺陷&#xff1b; 〓❏ 其他工程师修改时破坏代码。 〓● 提高代码可读性&#xff0c;有时候可能使其变得更为冗长、占用更多的…