第四章图像增强

第四章图像增强

  • 1_图像增强的概念
  • 2_空间域增强
    • 2.1_图像增强的点运算
      • 2.1.1_灰度变换
      • 2.1.2_直方图均衡化
      • 2.1.3 直方图规定化

1_图像增强的概念

  1. 什么是图像增强:图像增强是采用一系列技术去改善图像的视觉效果,或将图像转换成一种更适合于人或机器进行分析和处理的形式。

  1. 两种图像增强方法:空间域增强、频率域增强
    空间域增强是直接对图像各像素进行处理;
    频率域增强是对图像经傅立叶变换后的频谱成分进行处理,然后逆傅立叶变换获得所需的图像。

本章知识结构图:
在这里插入图片描述

2_空间域增强

2.1_图像增强的点运算

2.1.1_灰度变换

灰度变换可调整图像的灰度动态范围或图像对比度,是图像增强的重要手段之一。

  1. 线性变换
    令图像f(i,j)的灰度范围为[a,b],线性变换后图像g(i,j)的范围为[a´,b´],如图,g(i,j)与f(i,j)之间的关系式为:g(i,j) = d + (b’-d)/(b-a)*(f(i,j) - a)
    在这里插入图片描述
    对曝光不足或过度的图像采用线性变换对图像每一个像素灰度作线性拉伸。可有效地改善图像视觉效果。

  1. 分段线性变换
    在这里插入图片描述

  1. 非线性灰度变换
    例如:对数变换和指数变换

本节总结:当变换的斜率大于1时,效果为水平拉伸(灰度等级密度减小),变换的斜率小于1时,效果为水平缩放(灰度等级密度增大)
下面的例子哪段的斜率大于1,哪段的小于1呢?
在这里插入图片描述
答案是:两头的小于1,中间的大于1

2.1.2_直方图均衡化

由于灰度等级分布均匀,图像动态范围大,图像清晰,所以本方法的思想就是通过对原图像进行某种变换,使原图像的灰度直方图修正为均匀分布的直方图


均衡化原理

  1. 频率较小的某些灰度等级被合并到一个或几个灰度等级中,即频率小的部分被压缩,而频率大的部分被增强。
  2. 直方图均衡化的实质是减少灰度等级换取对比度的扩大。

直方图均衡化的两个规则

  1. 变化图像趋势不得有交叉
    在这里插入图片描述

  1. 确保映射后的像素灰度在允许的范围内

推论:

  1. 结合此图像可知,原图像每一个灰度值的出现次数 和 最后投影到新图像上对应得到的新灰度值的次数相等
  2. 设原图像上两个灰度值a1,a2,对应均衡化之后的新图像上两点b1,b2,若a1<a2,则必有b1<b2(相应的若a1>a2,则必有b1>b2)

均衡化的步骤及原理(本例不采用归一化的方法,也不采用连续的思想,因为那样刚开始不容易理解):
在这里插入图片描述
左图为原图像,右图为映射图像,其中灰度值s为原图中灰度值r映射得到的对应点,由推论2可知:

  1. 若ra < r,则必有sa< s(其中sa是ra映射后的点)

  2. 所以有关系式,若rk对应sk,则∑i=1kP(ri)\sum_{i=1}^{k} P(r_i)i=1kP(ri) = ∑i=1kP(si)\sum_{i=1}^{k} P(s_i)i=1kP(si)

  3. 由于我们尽量让每一段的平均概率(下面简称为均高)都尽量如右图的高(1n\frac{1}{n}n1),所以即可得到每一个对应的sk
    由底长 = 面积/高得
    sk = (∑i=1kP(ri)\sum_{i=1}^{k} P(r_i)i=1kP(ri)) / (1n\frac{1}{n}n1)
    但是这样得到的sk值是不准确的,为什么不准确呢,举例:若灰度值为0到7,可这样计算很有可能会出现小数的结果,所以我们每次取近似值(取距离结果最近的灰度值)


例题:

在这里插入图片描述

2.1.3 直方图规定化

直方图规定化是使原图像灰度直方图变成规定形状的直方图而对图像作修正的增强方法。
通俗的说就是,你事先知道,若直方图能改为某个形状将会使得图像增强效果最好,所以你就预先设定出来这个形状,并将原图像尽力去拟合成此形状,但是如果直接去拟合,难度很大,所以先将设定好的直方图和原图像的直方图均衡化(设定好的直方图均衡化后会得到其逆变换公式),将原图像的均衡化后的直方图去拟合设定好的并均衡化的直方图,最后利用逆变换公式进行最后一步

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

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

相关文章

springboot发送qq邮件

springboot发送qq邮件1_开启邮箱相关权限并获取邮箱授权码2_实现功能2.1_添加mail的依赖2.1.1_创建工程时添加2.1.2_在工程中添加2.2_配置文件application.properties配置相关信息2.3_实现代码1_开启邮箱相关权限并获取邮箱授权码 进入账户 开启POP3/SMTP服务并生成授权码 …

Spring Cloud Alibaba 深度解密!

说说吧&#xff0c;程序猿们&#xff0c;你们还有谁不是“单身G”&#xff1f;想要“赢取”白富美&#xff0c;当上CTO&#xff0c;走上人生巅峰&#xff0c;不努力怎么可以&#xff1f;别人疯狂购物&#xff0c;你疯狂学习&#xff0c;努力30天&#xff0c;向阿里P6迈进&#…

安卓连接真机调试

安卓连接真机调试一、打开开发者模式二、打开USB调试三、最后连接数据线这里使用荣耀20pro为例一、打开开发者模式 点击版本号&#xff0c;多点几下直到打开开发者模式 二、打开USB调试 系统与更新——>开发人员选项 三、最后连接数据线 连接数据线并选择MIDI模式

3W字!带你玩转「消息队列」

1. 消息队列解决了什么问题消息中间件是目前比较流行的一个中间件&#xff0c;其中RabbitMQ更是占有一定的市场份额&#xff0c;主要用来做异步处理、应用解耦、流量削峰、日志处理等等方面。1. 异步处理一个用户登陆网址注册&#xff0c;然后系统发短信跟邮件告知注册成功&…

okhttp_utils的使用以及与服务端springboot交互中遇到的问题

okhttp_utils的使用以及与服务端springboot交互中遇到的问题1_okhttp_utils在Android studio中的引入方法2_okhttputils的使用举例3_get和post的简单使用3_图片的上传3.1_单张图片的上传3.1.1_获取安卓本地图片问题3.1.2_okhttputils上传图片代码3.1.3_服务端接收图片3.2_单张图…

算法系列之图--DFS

深度优先搜索使用的策略是&#xff0c;只要与可能就在图中尽量“深入”。DFS总是对最近才发现的结点v出发边进行探索&#xff0c;知道该结点的所有出发边都被发现为止。一旦v的所有出发边都被发现了&#xff0c;搜索就回溯到v的前驱结点&#xff08;v是经该结点才被发现的&…

这8种常见的SQL错误用法,你还在用吗?

来源 | yq.aliyun.com/articles/72501MySQL 在近几年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在 MySQL 数据库之上&#xff0c;甚至是从 Oracle 迁移到 MySQL上来。但也存在部分客户在使用 MySQL 数据库的过程中遇到一些比如响应时间慢&#xff0c…

千万不要这样写代码!9种常见的OOM场景演示

《Java虚拟机规范》里规定除了程序计数器外&#xff0c;虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能&#xff0c;我们本文就来演示一下这些错误的使用场景。一. StackOverflowError1.1 写个 bugpublic class StackOverflowErrorDemo {public static v…

MySQL数据库安装与配置详解

目录 一、概述 二、MySQL安装 三、安装成功验证 四、NavicatforMySQL下载及使用 一、概述 MySQL版本&#xff1a;5.7.17 下载地址&#xff1a;http://rj.baidu.com/soft/detail/12585.html?ald 客户端工具&#xff1a;NavicatforMySQL 绿色版下载地址&#xff1a;http://www.c…

求求你,不要再使用!=null判空了!

对于Java程序员来说&#xff0c;null是令人头痛的东西。时常会受到空指针异常&#xff08;NPE&#xff09;的骚扰。连Java的发明者都承认这是他的一项巨大失误。那么&#xff0c;有什么办法可以避免在代码中写大量的判空语句呢&#xff1f;有人说可以使用 JDK8提供的 Optional …

JDBC(Java语言连接数据库)

JDBC&#xff08;Java语言连接数据库&#xff09;JDBC本质整体结构基层实现过程&#xff08;即用记事本而不是idea&#xff09;第一种实现方式第二种实现方式乐观锁和悲观锁乐观锁悲观锁JDBC本质 整体结构 基层实现过程&#xff08;即用记事本而不是idea&#xff09; 第一种实…

那些牛逼的数据分析师,SQL用的到底有多溜

从各大招聘网站中可以看到&#xff0c;今年招聘信息少了很多&#xff0c;但数据分析相关岗位有一定增加&#xff0c;而数据分析能力几乎已成为每个岗位的必备技能。是什么原因让企业如此重视“数据人才”&#xff1f;伴随滴滴出行、智慧营销等的落地商用&#xff0c;部分企业尝…

knn机器学习算法_K-最近邻居(KNN)算法| 机器学习

knn机器学习算法Goal: To classify a query point (with 2 features) using training data of 2 classes using KNN. 目标&#xff1a;使用KNN使用2类的训练数据对查询点(具有2个要素)进行分类。 K最近邻居(KNN) (K- Nearest Neighbor (KNN)) KNN is a basic machine learning…

Linux 指令的分类 (man page 可查看)

man page 常用按键 转载于:https://www.cnblogs.com/aoun/p/4324350.html

Springboot遇到的问题

Springboot遇到的问题1_访问4041.1_url错误1.2_controller和启动项不在同级目录1.3_未加ResponseBody2_字母后端显示大写&#xff0c;传到前端变为小写2.1_Data注释问题1_访问404 1.1_url错误 1.2_controller和启动项不在同级目录 1.3_未加ResponseBody 在方法上面加&#…

45 张图深度解析 Netty 架构与原理

作为一个学 Java 的&#xff0c;如果没有研究过 Netty&#xff0c;那么你对 Java 语言的使用和理解仅仅停留在表面水平&#xff0c;会点 SSH 写几个 MVC&#xff0c;访问数据库和缓存&#xff0c;这些只是初等 Java 程序员干的事。如果你要进阶&#xff0c;想了解 Java 服务器的…

ajax实现浏览器前进后退-location.hash与模拟iframe

为什么80%的码农都做不了架构师&#xff1f;>>> Aajx实现无数据刷新时&#xff0c;我们会遇到浏览器前进后退失效的问题以及URL不友好的问题。 实现方式有两种 1、支持onhashchange事件的&#xff0c;通过更新和读取location.hash的方式来实现 /* 因为Javascript对…

java环境变量配置以及遇到的一些问题

java环境变量配置以及遇到的一些问题1_下载2_配置环境变量2.1_配置JAVA_HOME2.2_配置CLASS_PATH2.2_配置系统路径PATH3_遇到的问题3.1_输入java -version无效3.2_javac无效1_下载 2_配置环境变量 打开我的电脑&#xff0c;右击空白处点击属性 点击高级系统设置 点击环境变量…

c fputc 函数重写_使用示例的C语言中的fputc()函数

c fputc 函数重写C中的fputc()函数 (fputc() function in C) Prototype: 原型&#xff1a; int fputc(const char ch, FILE *filename);Parameters: 参数&#xff1a; const char ch, FILE *filenameReturn type: int 返回类型&#xff1a; int Use of function: 使用功能&a…

信息系统状态过程图_操作系统中的增强型过程状态图

信息系统状态过程图The enhanced process state diagram was introduced for maintaining the degree of multiprogramming by the Operating System. The degree of multiprogramming is the maximum number of processes that can be handled by the main memory at a partic…