Infrared Image Enhancement
一个基于 Python / OpenCV 的红外图像增强开源工具箱,面向 12/14/16 位热成像数据到 8 位显示的动态范围压缩和细节增强问题。
项目背景
红外热成像原始数据通常是 12 / 14 / 16 位单通道图像,包含较宽的温度动态范围。但普通显示设备和人眼感知一般只能稳定查看 8 位灰度图,直接线性拉伸时很容易出现画面发灰、局部对比度不足、目标边缘和纹理不清晰的问题。
这个项目来自我对红外图像增强问题的一次个人研究和开源实现。早期接触到相关需求时,技术路线更多关注深度学习和图像超分方向;后来我重新回到这个问题,借助 AI 工具辅助做资料调研和方案拆解,尝试从传统图像处理角度实现一个可复现、可调参、可批处理的 DDE-like 红外增强工具箱。
项目目标
我希望这个项目不是只给出一段脚本,而是整理成一个相对完整的工程化小工具:
- 可以处理 16 位 TIF / TIFF 红外图像,并输出适合显示的 8 位增强结果。
- 提供线性拉伸基线,便于对比增强效果。
- 支持单图处理、批处理、预设参数、无参考指标评估和中间结果可视化。
- 保留算法设计文档,说明分解、增强、融合和参数调优思路。
- 通过 Python 包和 CLI 命令暴露能力,方便后续复用和二次实验。
核心思路
当前实现采用分解类红外增强策略:先将原始图像拆分为基础层和细节层,再分别进行动态范围压缩、局部细节增强、噪声门控和热点保护,最后融合并映射到 8 位显示范围。
这条路线更关注可解释性和可控性。相比直接训练一个端到端模型,传统分解方法更容易看清每个参数对结果的影响,也更适合在缺少配对训练数据的情况下做工程验证。


Zenmuse 红外样例对比:左侧为线性拉伸结果,右侧为当前 DDE-like 管线输出。
我的工作
- 调研红外图像显示增强、DDE 类算法和高动态范围单通道图像显示问题,整理公式拆解和实现方案。
- 使用 Python / OpenCV 实现多尺度边缘保持分解、基础层动态范围压缩、细节层增益、噪声门控、热点保护和百分位映射。
- 设计
balanced、detail_plus、noise_safe、hot_scene、radiometric_safe等参数预设,便于不同场景下快速试验。 - 封装命令行工具,支持单图增强、批处理、线性基线生成、指标评估和中间结果可视化。
- 补充自动化测试,验证核心指标和处理管线,避免后续调参或重构破坏基本功能。
- 整理中英文 README、样例数据来源说明和设计文档,使项目可以作为一个独立开源工具阅读和复现。


道路夜景样例对比:增强后目标轮廓、局部纹理和背景层次更容易被观察。
技术实现
项目采用轻量 Python 包结构组织:
ir_dde/:核心增强管线、滤波、tone mapping、指标和参数预设。ir_dde/cli/:命令行入口,包括增强、批处理、线性基线、评估和可视化。tests/:最小自动化测试,覆盖指标和核心处理流程。docs/:DDE 公式拆解、实现计划和 README 展示素材。examples/:单图和批处理样例,便于直接复现效果。
从工程角度看,这个项目重点不是追求某个固定场景下的最强视觉效果,而是把红外增强问题拆成可解释、可调试、可复现的处理流程。这样后续无论继续优化传统增强参数,还是接入学习型方法,都有一个清晰的基线工程。
复盘
这个项目让我重新把注意力放回图像处理本身:数据位深、显示映射、局部对比度、噪声放大、热点保护和参数鲁棒性。相比只看最终增强图像好不好看,我更在意整个处理链路是否可解释、可调试、可复现。
AI 工具在资料调研和实现拆解阶段帮了不少忙,让我能更快把零散资料整理成可运行的工程版本。但最终效果还是靠人工判断:算法选择是否合理,参数是否可解释,样例是否有代表性,README 是否说清楚了适用范围和局限。