【红外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 ...
随机推荐
- 基于ElementUI封装Excel数据导入组件
由于前端项目使用的是Vue-cli3.0 + TypeScript的架构,所以该组件也是基于ts语法封装的,组件的完整代码如下: <template> <div id="m ...
- React父组件调用子组件的方法
16.3.0之前的设置方法为 var HelloMessage = React.createClass({ childMethod: function(){ alert("组件之间通信成功& ...
- maxmind geoip2使用笔记
客户需求如下,nginx的访问日志中ip,匹配出对应的国家,省份和城市,然后给我了一个maxmind的连接参考. 查找资料,有做成hive udf的使用方式, 我们项目中一直使用 waterdrop ...
- 2019 ICPC 陕西西安邀请赛 D. Miku and Generals
传送门:https://nanti.jisuanke.com/t/39271 题意: 给你n个人,每个人有一个权值 a_i ,(a_i是可以被100整除的))现在需要你将n个人分成两组,有m个关系 ...
- Android studio 使用git仓库记录
studio 绑定git settings --> verson control -->git 在项目文件目录右击打开git bash here操作界面 查看git项目安装位置 找到id_ ...
- c++ unordered_map 自定义key
C++11新增了一类散列容器包括unordered_set, unordered_map, unordered_multiset, unordered_multimap, 即之前熟悉的hash_set ...
- Elasticsearch慢查询故障诊断
最近在做ES搜索调优,看了一些lucene搜索的文档和代码,本文用于总结调优过程中学到的知识和自己的思考. 在抓到ES慢查询之后,会通过profile或者kibana的Search Profiler ...
- 牛客训练赛55 E 树
很妙的一个树形DP问题,简单考虑了一下就过了 https://ac.nowcoder.com/acm/contest/2927/E 主要就是推公式(公式有点长呀) 大概就是这样,其实挺简单的. #in ...
- macaca安装(mac)
macaca 安装 安装Homebrew/Node/npm/cnpm/carthage 这些工具的安装参见 appium 环境搭建 安装相关工具 $ brew install usbmuxd $ br ...
- mysql主从之配置基本环境
实验环境 master 192.168.132.121 主库 slave 192.168.132.122 从库 一 mysql的使用介绍 1.1 mysql单台服务器特点 缺点 单台服务器如 ...