ISP-长短曝光融合生成HDR图像
1、高动态范围图像相关
图像的动态范围是指一幅图像中量化的最大亮度与最小噪声的比值。高动态范围HDR(high dynamic range)图像,能够完整表示真实场景中跨度很大的动态范围。采用普通CMOS/CCD图像传感器不能完整呈现亮度层次差异较大的真实场景。场景中较亮的区域,由于过曝光会出现一片白亮,而场景中较暗的区域,由于欠曝光会出现一片黑暗。
另外,由于成本等原因,显示设备的动态范围也较小,如一般的阴极射线管(Cathode RayTube,CRT)、液晶显示器(Liquid Crystal Display,LCD)、LED、等离子显示器等,显示动态范围最大为28(O到255),大多在102个数量级,远远低于现实场景的动态范围,无法做到完全映射。这意味着,即使捕获了亮度差异较大的高动态范围图像,也很难在普通显示设备上完整显示出来。
多帧图像融合
较为经济的解决思路是采用多帧图像融合,图像可以是固定增益采用不同曝光下采集,也可以是同等曝光不同增益下采集。一般情况多采用两帧图像合成,长曝光-短曝光合成或者高增益-低增益合成。
1、**高低增益融合:**指在同样曝光时间条件下,同时输出一路高增益数据和一路低增益数据,根据某种关系将两路数据进行融合。
2、**长短曝光融合:**指在同等增益的条件下,同时输出一路长曝光数据和一路短曝光数据,根据某种关系将两路数据进行融合。
长曝光与高增益数据,保证场景中较暗处细节信息能够完整捕获(高增益类似)。短曝光与低增益数据保证场景中较亮处不至于过曝(低增益类似)。
通过高低增益融合或者长短曝光融合方式融合,这种HDR图像既能够有好的暗部信息,又保证了亮部不过曝,保留了亮度信息。
相比之下笔者觉得长短曝光融合方式效果更佳,因为在光照不足的环境下,高增益数据噪声会较大,合成的图像噪点多。
2、图像融合形成HDR图像
根据Debevec等人提出的相机响应曲线(Camera Response Curve,CRV),采集图像数据计算长曝光与像素值的关系,短曝光与像素值的关系,再利用权重函数,将长曝光、短曝光对应的低动态范围图像数据合成,得到高动态范围图像。
需要sensor支持同时输出长曝光、短曝光图像,通过长短曝光融合方式来形成高动态图像。长短曝光比率是可以配置的(如果sensor支持的话),不同的配比带来不同的效果。
注意事项:
第一,利用sensor输出的图像进行合成,长短曝光比率需要摸索,不是越大越好,合适的比率融合效果更自然。
第二,像素点亮度值与曝光时间成线性关系。对于同一像素点,长曝光相比于短曝光像素响应值更高,信噪比更高。可见光sensor线性度一般都很好,而红外探测器线性度很差,一般需要做均匀性校正之后再进行融合。
第三,一般的合成算法较为复杂,有的利用最小二乘法求解多个方程,有的进行分块融合,有的需要多次迭代处理。
像素过曝光和正常曝光的概念:
(1)过曝光:亮度值>90%最大满阱值
(2)正常曝光:亮度值<=90%最大满阱值
(3)亮度阈值:90%最大满阱值
参考文献:《Recovering high dynamic range radiance maps from photographs》
参考文献:<多曝光融合算法研究及HDR图像合成与色调映射算法设计实现>
参考文献:专利201810097959 .X
参考文献:《基于相机响应曲线的高动态范围图像融合》
3.图像融合方法
可见光sensor的像素线性响应度是很好的,线性区间几乎可以从暗场到满阱值,这为融合参数计算带来便利。
1)采集长短曝光下的数据
固定增益,短曝光间隔相同曝光值采集N组数据,长曝光数据与短曝光保持相同的比率
2)分析长短曝光下响应的曲线参数
3)计算长短曝光数据之间的响应关系
L
e
x
p
=
k
∗
S
e
x
p
+
b
L_{exp} = k*S_{exp}+b
Lexp=k∗Sexp+b
4)按照融合的算法,进行图像融合。
亮度阈值90%最大满阱值,阈值之下用长曝光数据,阈值之上用短曝光拟合的数据
i
f
Y
>
t
h
r
,
H
D
R
=
L
e
x
p
e
l
s
e
Y
<
=
t
h
r
,
H
D
R
=
S
e
x
p
∗
k
+
b
if Y>thr, HDR=L_{exp}\\ else Y<=thr, HDR=S_{exp}*k+b
ifY>thr,HDR=LexpelseY<=thr,HDR=Sexp∗k+b
得到的HDR数据需要移位来压缩动态范围,得到动态范围较好的图像
短曝光图像:
长曝光图像:
融合的HDR图像:
4、测试程序路径
测试程序供参考: https://github.com/AomanHao/AomanHao_example_of_algorithms/tree/main/2-HDR
觉得本文对您有一点帮助,欢迎讨论、点赞、收藏,您的支持激励我多多创作。
我的个人博客主页,欢迎访问
我的CSDN主页,欢迎访问
我的GitHub主页,欢迎访问
我的知乎主页,欢迎访问
ISP-长短曝光融合生成HDR图像的更多相关文章
- [OpenCV实战]24 使用OpenCV进行曝光融合
目录 1 什么是曝光融合 2 曝光融合的原理 3 代码与结果 4 参考 本教程中,我们将了解使用OpenCV的Exposure Fusion(曝光融合). 1 什么是曝光融合 曝光融合是一种将使用不同 ...
- YChaos生成混沌图像
YChaos是一款通过数学公式生成混沌图像的软件,展示混沌之美,数学之美.软件中定义一套简易的脚本语言,用于描述数学表达式.使用时需要先要将数学表达式写成该脚本的形式,解析脚本代码以生成相应的图形与图 ...
- 混沌的艺术--- YChaos通过数学公式生成混沌图像
艺术真得很难吗?也许如同编程一样容易.我写了一套软件,其功能是通过输入数学方程式,生成艺术图像.一提到数学有人可能会发怵,这里请不要担心,生成混沌的数学公式大都很是简单,基本上只用加.减.乘.除.余. ...
- 利用ASP.NET一般处理程序动态生成Web图像(转)
摘自:http://www.cnblogs.com/zhouhb/archive/2011/02/15/1955262.html 一般处理程序的扩展名为ashx,它实现了IHttpHandler接口, ...
- Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
Sift和Surf算法实现两幅图像拼接的过程是一样的,主要分为4大部分: 1. 特征点提取和描述 2. 特征点配对,找到两幅图像中匹配点的位置 3. 通过配对点,生成变换矩阵,并对图像1应用变换矩阵生 ...
- cv2 exposureFusion (曝光融合)
import cv2 import numpy as np import sys filenames = ['./images/memorial0061.jpg', './images/memoria ...
- php生成雪花图像(不美观请见谅)
<?php /* //新建图像 //雪花 @header("Content-Type:image/png"); $w = 500; $h = 500; //create ...
- 对抗生成网络-图像卷积-mnist数据生成(代码) 1.tf.layers.conv2d(卷积操作) 2.tf.layers.conv2d_transpose(反卷积操作) 3.tf.layers.batch_normalize(归一化操作) 4.tf.maximum(用于lrelu) 5.tf.train_variable(训练中所有参数) 6.np.random.uniform(生成正态数据
1. tf.layers.conv2d(input, filter, kernel_size, stride, padding) # 进行卷积操作 参数说明:input输入数据, filter特征图的 ...
- 为训练深度OCR 图像,生成文本图像
https://github.com/Sanster/text_renderer Generate text images for training deep learning ocr model 在 ...
- 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用
jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...
随机推荐
- 亿级Web系统负载均衡几种实现方式
负载均衡(Load Balance)是集群技术(Cluster)的一种应用技术.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web负载均衡.根据实现的原理 ...
- linux 安装 node 和 npm 服务
1.安装文件下载 下载地址:https://nodejs.org/zh-cn/download/ 2.安装步骤 1.将安装包上传到指定位置(我习惯放到:/usr/local/application/目 ...
- 统计计算——Bootstrap总结整理
Bootstrapping Boostrap 有放回的重抽样. 符号定义: 重复抽样的bootstrap \(F^*\) 观测到的样本\(\hat F\),是一个经验分布 真实分布\(F\) Eg. ...
- [Pytorch框架] 2.1.3 神经网络包nn和优化器optm
文章目录 PyTorch 基础 : 神经网络包nn和优化器optm 定义一个网络 损失函数 优化器 PyTorch 基础 : 神经网络包nn和优化器optm torch.nn是专门为神经网络设计的模块 ...
- Python + 超级鹰 识别图形验证码
前言: 一.下载 1.进入官网:http://www.chaojiying.com/,注册完成后,进行登录 2.点击开发文档,点击Python语言示例 3.进行示例下载 4.解压后的文件 注:关注公众 ...
- golang技术栈常见网址
go所有,包含goadmin golang标准库文档 golang修养之路 Golang Profiling: 关于 pprof go问题 go语言设计与实现 go.mod解析 proto3 prot ...
- 2021-08-23:超级水王问题。扩展1:摩尔投票。扩展2:给定一个正数K,返回所有出现次数>N/K的数。
2021-08-23:超级水王问题.扩展1:摩尔投票.扩展2:给定一个正数K,返回所有出现次数>N/K的数. 福大大 答案2021-08-23: 扩展1: 1.如果无候选,当前数就是候选,血为1 ...
- ModuleNotFoundError: No module named 'pyecharts'
ModuleNotFoundError: No module named 'pyecharts' 解决: pip install pyecharts
- ComboBox1 绑定手动创建的DataTable
'************************************************** '*过程名称:DT_PAFORMAL '*功能说明:员工类别 '**************** ...
- Cypress 踩坑记 - DOM 遮挡
Cypress 是一个非常流行的测试工具,然而实际使用过程中发现一些问题,这里做些记录. 问题发现 在 Cypress 下 click 是非常常用的指令,然而在一些特殊场景下 click 并不能如想象 ...