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=Lexp​elseY<=thr,HDR=Sexp​∗k+b

得到的HDR数据需要移位来压缩动态范围,得到动态范围较好的图像

短曝光图像:

长曝光图像:

融合的HDR图像:

4、测试程序路径

测试程序供参考: https://github.com/AomanHao/AomanHao_example_of_algorithms/tree/main/2-HDR


觉得本文对您有一点帮助,欢迎讨论、点赞、收藏,您的支持激励我多多创作。

我的个人博客主页,欢迎访问

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

ISP-长短曝光融合生成HDR图像的更多相关文章

  1. [OpenCV实战]24 使用OpenCV进行曝光融合

    目录 1 什么是曝光融合 2 曝光融合的原理 3 代码与结果 4 参考 本教程中,我们将了解使用OpenCV的Exposure Fusion(曝光融合). 1 什么是曝光融合 曝光融合是一种将使用不同 ...

  2. YChaos生成混沌图像

    YChaos是一款通过数学公式生成混沌图像的软件,展示混沌之美,数学之美.软件中定义一套简易的脚本语言,用于描述数学表达式.使用时需要先要将数学表达式写成该脚本的形式,解析脚本代码以生成相应的图形与图 ...

  3. 混沌的艺术--- YChaos通过数学公式生成混沌图像

    艺术真得很难吗?也许如同编程一样容易.我写了一套软件,其功能是通过输入数学方程式,生成艺术图像.一提到数学有人可能会发怵,这里请不要担心,生成混沌的数学公式大都很是简单,基本上只用加.减.乘.除.余. ...

  4. 利用ASP.NET一般处理程序动态生成Web图像(转)

    摘自:http://www.cnblogs.com/zhouhb/archive/2011/02/15/1955262.html 一般处理程序的扩展名为ashx,它实现了IHttpHandler接口, ...

  5. Opencv Sift和Surf特征实现图像无缝拼接生成全景图像

    Sift和Surf算法实现两幅图像拼接的过程是一样的,主要分为4大部分: 1. 特征点提取和描述 2. 特征点配对,找到两幅图像中匹配点的位置 3. 通过配对点,生成变换矩阵,并对图像1应用变换矩阵生 ...

  6. cv2 exposureFusion (曝光融合)

    import cv2 import numpy as np import sys filenames = ['./images/memorial0061.jpg', './images/memoria ...

  7. php生成雪花图像(不美观请见谅)

    <?php /*  //新建图像 //雪花  @header("Content-Type:image/png"); $w = 500; $h = 500; //create ...

  8. 对抗生成网络-图像卷积-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特征图的 ...

  9. 为训练深度OCR 图像,生成文本图像

    https://github.com/Sanster/text_renderer Generate text images for training deep learning ocr model 在 ...

  10. 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用

    jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...

随机推荐

  1. 微服务为什么要用到 API 网关?

    本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志. 作者程小兰,API7.ai 技术工程师,Apache APISIX Contrib ...

  2. Java设计模式【单例模式】

    Java设计模式[单例模式] 单例模式 单例模式(Singleton Pattern)是一种创建型设计模式,其主要目的是确保一个类只有一个实例,并提供对该实例的唯一访问点. 优缺点 优点: 提供了对唯 ...

  3. 2020-08-27:OpenStack与Docker的区别?

    福哥答案2020-08-27: 此答案来自qq群巨佬:openstack是个体系一个完整的方案系统 基于虚拟机 docker只是一个内核上特殊模式跑与其他系统进程隔离的进程的软件方案真正与docker ...

  4. 2021-01-29:redis同步机制是怎样的?

    福哥答案2021-01-30: [答案1:](https://italk.mashibing.com/question/detail/ques_00006009)全量同步master服务器会开启一个后 ...

  5. 2022-04-24:位集 Bitset 是一种能以紧凑形式存储位的数据结构。 请你实现 Bitset 类。 Bitset(int size) 用 size 个位初始化 Bitset ,所有位都是 0

    2022-04-24:位集 Bitset 是一种能以紧凑形式存储位的数据结构. 请你实现 Bitset 类. Bitset(int size) 用 size 个位初始化 Bitset ,所有位都是 0 ...

  6. 向量数据库Pinecone,治疗ChatGPT幻觉的药方?

    大白话了解新鲜事,今天讲讲以Pinecone为代表的向量数据库.向量数据库Pinecone一夜爆火,4月27日B轮拿到了1亿美元的融资,估值达到7.5亿美元,一个2021年刚刚推出的数据库产品,火爆背 ...

  7. 对promise的简单理解

    随着ES6的推行它的许多新特性受到了广大开发者的好评,比如promise,为什么使用这个promise呢,他具体能帮我们做些啥? 其实从字面意思上来理解promise就是承诺,比如:你命令你的手下本月 ...

  8. Java流程控制和循环(基础语法学习)

    一.流程控制 1.定义 ​ 在一个Java程序中,各条语句的执行对程序的结果有直接影响,也就是说 各个语句的执行顺序对程序的结果有直接影响. ​ 在程序中 ,可能出现不同的执行顺序,必须 自上而下顺序 ...

  9. OCR -- 文本检测 - 训练DB文字检测模型

    百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Infer ...

  10. allure的安装与配置

    一.安装配置JDK 说明:以win10系统为例 1.Oracle官网下载JDK:https://www.oracle.com/java/technologies/downloads/ 请下载安装JDK ...