【红外DDE算法】聊聊红外图像增强算法的历史进程(第一回)
宽动态红外图像增强算法综述
回顾过去
带你回顾宽动态红外图像增强算法的历史进程,历来学者的一步步革命(新的算法框架提出),一步步改革(改进优化),从简单粗暴到细致全面。
正所谓是:改革没有完成时,只有进行时。没有完美的算法,也没有最好的算法,只有更好更优秀的算法。
展望未来
以现在看90年代的算法,那时候的算法是有点粗糙,但是正是在这一点点的积累上,才有了现在较之优秀完美的算法。
正所谓是:站在巨人的肩膀,我们看得更远,不积跬步无以至千里。
目录
为什么需要该算法?
摘要
主要的三类算法思路大致介绍
第一类:基于映射的宽动态图像增强算法
第二类:基于图像分层的宽动态图像增强算法
第三类:基于梯度域的宽动态图像增强算法
三类算法的对比与优缺点分析
1.关于为什么需要宽动态红外图像增强算法?
详见我之前的文章《数字细节增强算法的缘由与效果(我对FLIR文档详解)》
https://blog.csdn.net/hahahahhahha/article/details/102978112.
2.摘要:
从三类算法开始介绍,基于映射的宽动态图像增强算法,基于图像分层的宽动态图像增强算法,基于梯度域的宽动态图像增强算法。
3.主要的三类算法思路大致介绍
早期的算法(大概1999年之前),主要是基于映射的。实现简单,复杂度低,但是细节不够凸显。
为此,学者提出了基于图像分层的算法(大概是从2001年开始),这种算法是将原始图像分为基础层和细节层,然后分别处理,以保证在压缩动态范围的前提下凸显细节信息,这类算法在细节增强上有了很大提升,但是容易产生 梯度反转 和 光晕现象。
为解决 梯度反转 和 光晕现象,学者又提出了基于梯度域的算法,但是不如第二类算法的细节效果好。
4.第一类:基于映射的宽动态图像增强算法
包括有:自增益的线性映射,Gamma 曲线,直方图投影等。
4.1 自增益的线性映射**
Iout(i,j)=255*Iin(i,j)/(max(Iin)-min(Iin));
最大值和最小值都是去掉极值之后得到的。
如何去极值呢?留给你自己思考吧。
4.2 Gamma 曲线
不同的Gamma参数 对应不同的效果,时好时坏,得手动调试,无法自适应。
还有就是无法消除或者越过“空缺灰度值”,因为gamma曲线无法做到分段处理。
4.3 借助直方图
4.3.1 最原始的直方图均衡
在某些场景上效果不错,但是缺点也很明显,过度增强,噪声过度放大,丢细节,褪色。
4.3.2 平台直方图均衡
最原始的直方图均给我们带来了一种高对比度的视觉体验,但它问题多多。
就丢细节这一点,FLIR在它的文档中已经明确说明:FLIR的DDE不是HE(直方图均衡)。我的这篇文章中对此有说明 https://blog.csdn.net/hahahahhahha/article/details/102978112.
它的水洗效果washed-out褪色 ,它的噪声放大更是无法容忍。
因此,学者又提出了一些优化办法。1995年,Vickers 提出了基于阈值的平台直方图均衡算法(plateau histogram equalization ,PHE) 。
4.3.3 自适应直方图均衡
1987年,PIZER等人还提出了自适应直方图均衡算法(adaptive histogram equalization ,AHE),这是一种不同于最原始的直方图均衡它是分区域的,从此打开了直方图均衡的另一扇窗,大家才知道原来还可以这么玩,也便有了“全局global”和“局部local ”之说。
AHE的优点是能够凸显局部细节,但是其缺点也是很恼人的,那就是很容易放大噪声。
4.3.4 限制对比度的自适应直方图均衡
1994年,ZUIDER VELD提出了对比度限制的自适应直方图均衡(CLAHE)算法,发表了举世瞩目的经典论文《contrast limited adaptive histogram equalization 》(强烈推荐学习),在算法在医学图像处理,安检图像处理有着非常广泛的应用。该算法从娘胎里就带来了光晕现象,还需改善。
MATLAB的Image toolbox 中有相关函数adapthisteq,我个人觉得:输入参数为手动,不能自适应,只是16-16,或者8-6,不适用于16bit到8bit 的红外图像处理。要想用,那就看原论文,自己写代码。
4.3.5 直方图映射
2009年,南理工的左超等人,在其论文中提出了一种改进型的直方图映射(modified histogram projection),该算法是在原始直方图均衡的基础上改进,不会放大噪声,类似普通的线性映射,与普通线性映射的区别是,该算法能够有效的越过(或者消除)“空缺灰度值”,在高动态的红外图像压缩中,能够得到一种类似“自适应的分段线性映射”的方法。对于灰度跨越过大的图像,效果很好。比如:一个人手上拿着一个很热的水杯。
结束语:
这一回用一首打油诗做个总结:
红外图像宽动态,
算法分为三大派。
基于映射第一类,
各路学者太有才。
全局局部都能搞,
是否线性无所谓。
噪声抑制很关键,
图像效果得改善。
时间有限,先写这么多。
下回聊重点聊:
“基于图像分层的宽动态图像增强算法”。
【红外DDE算法】聊聊红外图像增强算法的历史进程(第一回)的更多相关文章
- 【红外DDE算法】数字细节增强算法的缘由与效果(我对FLIR文档详解)
[红外DDE算法]数字细节增强算法的缘由与效果(我对FLIR文档详解) 1. 为什么红外系统中图像大多是14bit(甚至更高)?一个红外系统的性能经常以其探测的范围来区别,以及其对最小等效温差指标.首 ...
- 分布式系统的Raft算法——在失联阶段这个老Leader的任何更新都不能算commit,都回滚,接受新的Leader的新的更新 意味着还是可能丢数据!!!
过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑. 来自Stanford的新的分布式协议研究称为R ...
- LeetCode初级算法--字符串02:字符串中的第一个唯一字符
LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...
- MicroPython TPYBoard v102 无线红外遥控舵机(基于红外解/编码模块)
转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 红外解码/编码模块介绍 模块上搭载了红外接收头.红外 ...
- Self-organizing Maps及其改进算法Neural gas聚类在异常进程事件识别可行性初探
catalogue . SOM简介 . SOM模型在应用中的设计细节 . SOM功能分析 . Self-Organizing Maps with TensorFlow . SOM在异常进程事件中自动分 ...
- 算法 -- 四种方法获取的最长“回文串”,并对时间复杂进行分析对比&PHP
https://blog.csdn.net/hongyuancao/article/details/82962382 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就 ...
- 算法进阶面试题01——KMP算法详解、输出含两次原子串的最短串、判断T1是否包含T2子树、Manacher算法详解、使字符串成为最短回文串
1.KMP算法详解与应用 子序列:可以连续可以不连续. 子数组/串:要连续 暴力方法:逐个位置比对. KMP:让前面的,指导后面. 概念建设: d的最长前缀与最长后缀的匹配长度为3.(前缀不能到最后一 ...
- 牛客寒假算法基础集训营4 I Applese 的回文串
链接:https://ac.nowcoder.com/acm/contest/330/I来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是回文串. ...
- 【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
问题描述 算法 Algorithms (第四版)书中,第1章:基础编程模型第15题: 结果: 编写一个静态方法 histogram(), 接受一个整型数组a[] 和一个整数M为参数,并返回一个大小为M ...
随机推荐
- linux一个例子驱动
我们介绍的驱动称为 short (Simple Hardware Operations and Raw Tests). 所有它做 的是读和写几个 8-位 端口, 从你在加载时选择的开始. 缺省地, 它 ...
- 【t092】迷之阶梯
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在经过地球防卫小队的数学家连续多日的工作之后,外星人发的密码终于得以破解.它告诉我们在地球某一处的古老 ...
- LightOJ - 1284 Lights inside 3D Grid (概率计算)
题面: You are given a 3D grid, which has dimensions X, Y and Z. Each of the X x Y x Z cells contains a ...
- 小白学 Python 爬虫(30):代理基础
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- rest_framework框架之认证功能的使用和源码实现流程分析
rest_framework框架之认证的使用和源码实现流程分析 一.认证功能的源码流程 创建视图函数 Note 创建视图函数后,前端发起请求,url分配路由,执行视图类,视图类中执行对应方法必须经过d ...
- 【一起学源码-微服务】Nexflix Eureka 源码十:服务下线及实例摘除,一个client下线到底多久才会被其他实例感知?
前言 前情回顾 上一讲我们讲了 client端向server端发送心跳检查,也是默认每30钟发送一次,server端接收后会更新注册表的一个时间戳属性,然后一次心跳(续约)也就完成了. 本讲目录 这一 ...
- vmware安装ubuntu的简单配置
介绍:ubuntu是一个桌面体验比较好的linux操作系统,尝试使用vmware安装一个虚拟机试用一下,做个简单记录,安装操作系统步骤省略 一.配置root用户,并使用root登录图像界面 Ubunt ...
- C# 字符串与二进制的相互转换
/// <summary> /// 将字符串转成二进制 /// </summary> /// <param name="s"></para ...
- 洛谷训练新手村之“BOSS战-入门综合练习2”题解
P1426 小鱼会有危险吗 题目链接:https://www.luogu.com.cn/problem/P1426 题目大意: 有一次,小鱼要从A处沿直线往右边游,小鱼第一秒可以游7米,从第二秒开始每 ...
- web前端安全——常见的web攻击方法
面试题:你所了解的web攻击? 1.xss攻击 2.CSRF攻击 3.网络劫持攻击 4.控制台注入代码 5.钓鱼 6.DDoS攻击 7.SQL注入攻击 8.点击劫持 一.xss攻击 XSS攻击:跨站脚 ...