High Dynamic Range Imaging

一.背景介绍

​ 今天,大多数数字图像和成像设备每通道使用8位,因此将设备的动态范围限制为两个数量级(实际上是256级),而人眼可以适应变化十个数量级的照明条件。当我们拍摄现实世界场景的照片时,明亮区域可能曝光过度,而暗区域可能曝光不足,因此我们无法使用单次曝光捕获所有细节。HDR成像适用于每通道使用8位以上(通常为32位浮点值)的图像,从而允许更宽的动态范围。

获得HDR图像的方法有很多种,但最常见的方法是使用不同曝光值拍摄的场景照片。要结合这种曝光,了解相机的响应函数是有用的,并且有估算它的算法。混合HDR图像后,必须将其转换回8位以在常规显示器上查看。此过程称为色调映射。当场景或相机的物体在镜头之间移动时会出现额外的复杂性,因为应该注册和对齐具有不同曝光的图像。

在本教程中,我们将展示如何从曝光序列生成和显示HDR图像。在我们的例子中,图像已经对齐,没有移动的物体。我们还展示了一种称为曝光融合的替代方法,可产生低动态范围图像。

二.代码实现

#include <opencv2/photo.hpp>
#include "opencv2/imgcodecs.hpp"
#include <opencv2/highgui.hpp>
#include <vector>
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;
void loadExposureSeq(String, vector<Mat>&, vector<float>&);
int main(int, char**argv)
{vector<Mat> images;vector<float> times;loadExposureSeq(argv[1], images, times);Mat response;Ptr<CalibrateDebevec> calibrate = createCalibrateDebevec();calibrate->process(images, response, times);Mat hdr;Ptr<MergeDebevec> merge_debevec = createMergeDebevec();merge_debevec->process(images, hdr, times, response);Mat ldr;Ptr<TonemapDurand> tonemap = createTonemapDurand(2.2f);tonemap->process(hdr, ldr);Mat fusion;Ptr<MergeMertens> merge_mertens = createMergeMertens();merge_mertens->process(images, fusion);imwrite("fusion.png", fusion * 255);imwrite("ldr.png", ldr * 255);imwrite("hdr.hdr", hdr);return 0;
}
void loadExposureSeq(String path, vector<Mat>& images, vector<float>& times)
{path = path + std::string("/");ifstream list_file((path + "list.txt").c_str());string name;float val;while(list_file >> name >> val) {Mat img = imread(path + name);images.push_back(img);times.push_back(1 / val);}list_file.close();
}

High Dynamic Range Imaging相关推荐

  1. Faster Read: Deep High Dynamic Range Imaging with Large Foreground Motions

    ECCV 2018, Hong Kong University of Science and Technology, Tencent Youtu,  U of Oxford 论文名称: Deep Hi ...

  2. 3.1 TMO MATLAB 框架(Advanced High Dynamic Range Imaging )

    3.1 TMO MATLAB 框架(Advanced High Dynamic Range Imaging ) 通常,无论属于哪一类TMO,都有两个共同的步骤. 本节描述了大多数但不是全部TMO使用的 ...

  3. 3.2.3 Quantization Techniques(HDR量化)(Advanced High Dynamic Range Imaging)Schlick TMO

    3.2.3 Quantization Techniques(HDR量化)(Advanced High Dynamic Range Imaging)Schlick TMO Schlick [341]提出 ...

  4. 2.1.2 Capturing HDR Videos(Advanced High Dynamic Range Imaging )

    2.1.2 Capturing HDR Videos(Advanced High Dynamic Range Imaging ) 目录 2.1.2 Capturing HDR Videos(Advan ...

  5. 论文解读:Deep High Dynamic Range Imaging of Dynamic Scenes

    Deep High Dynamic Range Imaging of Dynamic Scenes Abstract 这篇文章介绍了一种在动态场景中,如何将不同曝光的图像进行融合从而得到高动态图像的方 ...

  6. 高动态范围光照(High Dynamic Range Imaging,简称HDRI或HDR)

    1  HDR基本概念 高动态范围光照(High Dynamic Range Imaging,简称HDRI或HDR),是一种表达超过了显示器所能表现的亮度范围的图像映射技术,已成为目前游戏应用不可或缺的 ...

  7. HDR(High Dynamic Range Imaging)在摄影中指高动态范围成像

    HDR(High Dynamic RangeImaging)在摄影中指高动态范围成像.国内的教程基本语焉不详,找到一篇比较详尽的国外教程翻译出来,希望对大家有帮助.^_^ 原文地址:http://ph ...

  8. 【论文学习】UPHDR-GAN: Generative Adversarial Network forHigh Dynamic Range Imaging with Unpaired Data

    UPHDR-GAN:基于非配对数据的高动态范围成像生成对抗网络 摘要 introduction 主要贡献 proposed method 网络框图 网络详介 1.输入 2.生成器输出 3.生成器 4. ...

  9. Python+OpenCV:高动态范围(High Dynamic Range, HDR)

    Python+OpenCV:高动态范围(High Dynamic Range, HDR) 目标 Learn how to generate and display HDR image from an ...

最新文章

  1. iptables连接跟踪ip_conntrack
  2. intelliJ idea运行新的test功能时,报错:class not found ..... empty test suite
  3. [Qt教程] 第20篇 2D绘图(十)图形视图框架(下)
  4. Luogu1979 NOIP2013D2T3 华容道 搜索、最短路
  5. 代码健壮性 —— 边界条件的判断
  6. c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 .
  7. [原创]Java开发如何在线打开Word文件
  8. 市县城镇开发边界内1:500地形图无人机航测实践(M300 RTK+P1+大疆智图+航天远景采集软件)
  9. 思科路由器虚拟服务器,解读CISCO路由器基本设置方法
  10. 防止浏览器自动填充表单
  11. 决OBS Studio录制的视频为黑屏的问题
  12. 如何用VBA从EXCEL表取数据?问题1:1次性整体写入,还是循环写入数组呢? 问题2:取得数据后如何定位需要的那个?
  13. VS2010 调试C++项目 fatal error LNK1123 错误解决办法
  14. mysql不锁表加索引
  15. ubuntu修改用户名和home对应的目录名
  16. C语言作业第二次总结
  17. NOIP2016 总结
  18. prometheus杂碎
  19. 【Scratch】青少年蓝桥杯_每日一题_12.09_地球绕太阳转,月球绕地球转
  20. JS买股票的最好时机

热门文章

  1. ZCU106基本资料学习记录
  2. 联署计划点击有效期限及最低支付金额的确定
  3. android强制关掉应用,android应用程序强制关闭执行此查询
  4. vue.js基础学习(数组更新)
  5. 推荐四部值得刷10遍的网络小说,部部经典,让你一次看过瘾!
  6. java实现阿里云云通信短信通知发送
  7. 将Flash制作的AIR应用移植到iOS设备
  8. 数据库---JDBC编程
  9. python爬取无讼案例网,并对爬取结果进行多元回归分析
  10. html锚点滑动效果,【转载】HTML锚点效果改进平滑移动页面滚动特效实现技术