博客
关于我
OpenCV系列之高动态范围 | 六十
阅读量:250 次
发布时间:2019-03-01

本文共 2907 字,大约阅读时间需要 9 分钟。

高动态范围成像(HDR)技术教程

目标与意义

本章旨在帮助开发者理解如何通过多帧曝光生成并展示高动态范围(HDR)图像。我们将重点介绍两种经典算法——Debevec和Robertson——以及一种替代方法Mertens融合,展示如何根据不同曝光时间合并图像。同时,我们还将探讨如何通过相机响应函数(CRF)优化HDR合成结果。

高动态范围成像(HDR)的基本原理

HDR成像能够捕捉比标准成像更广的亮度范围,这对于复杂的光照场景至关重要。相机通常以8位(256级)存储图像数据,无法在同一帧中同时捕捉明暗细节。HDR技术通过多帧曝光(不同曝光时间的图像)合成一张完整的高动态范围图像。

获取HDR图像的方法

目前有多种获取HDR图像的方法,其中最常见的是拍摄不同曝光时间的场景图像。合并这些图像需要了解相机响应函数和估算算法的特性。合并后,HDR图像需转换回8位以适配常规显示器,但这个过程称为色调映射可能会引入额外复杂性。

曝光序列HDR合成

在这个教程中,我们将使用四张曝光图像,曝光时间分别为15、2.5、0.25和0.0333秒。这些图像可以从Wikipedia下载。

实现步骤

  • 加载曝光图像到列表中
    使用OpenCV库读取所有曝光图像,并存储在一个列表中。
  • import cv2 as cvimport numpy as np# 假设曝光图像文件名为img0.jpg、img1.jpg等img_fn = ["img0.jpg", "img1.jpg", "img2.jpg", "img3.jpg"]img_list = [cv.imread(fn) for fn in img_fn]exposure_times = np.array([15.0, 2.5, 0.25, 0.0333], dtype=np.float32)
    1. 合并曝光图像为HDR
      OpenCV提供了两种HDR合成算法:cv.createMergeDebevec()cv.createMergeRobertson()。这两种方法适用于不同的场景。
    2. # Debevec 合成merge_debevec = cv.createMergeDebevec()hdr_debevec = merge_debevec.process(img_list, times=exposure_times.copy())# Robertson 合成merge_robertson = cv.createMergeRobertson()hdr_robertson = merge_robertson.process(img_list, times=exposure_times.copy())
      1. 色调图映射
        将32位浮点的HDR图像映射到[0..1]范围内。注意:此过程可能会导致超出范围的值,因此需要后续处理。
      2. # 色调图映射tonemap1 = cv.createTonemap(gamma=2.2)res_debevec = tonemap1.process(hdr_debevec.copy())
        1. Mertens 融合曝光
          这种方法不需要曝光时间数据,并且直接输出[0..1]范围内的图像。
        2. # Mertens 融合merge_mertens = cv.createMergeMertens()res_mertens = merge_mertens.process(img_list)
          1. 转为8位并保存
            为了在常规显示器上查看结果,需要将HDR图像转换为8位。
          2. # 转为8位并保存def convert_to_uint8(image):    return np.clip(image * 255, 0, 255).astype('uint8')# Debevec 结果res_debevec_8bit = convert_to_uint8(res_debevec)cv.imwrite("ldr_debevec.jpg", res_debevec_8bit)# Robertson 结果res_robertson_8bit = convert_to_uint8(res_robertson)cv.imwrite("ldr_robertson.jpg", res_robertson_8bit)# Mertens 结果res_mertens_8bit = convert_to_uint8(res_mertens)cv.imwrite("fusion_mertens.jpg", res_mertens_8bit)

            相机响应功能(CRF)估计

            CRF是HDR算法的重要组成部分,它描述了相机在不同曝光时间下的响应特性。OpenCV提供了两种方法来估计CRF:cv.createCalibrateDebevec()cv.createCalibrateRobertson()

            # 估计 CRF 并生成 HDR 图像cal_debevec = cv.createCalibrateDebevec()crf_debevec = cal_debevec.process(img_list, times=exposure_times)hdr_debevec = merge_debevec.process(img_list, times=exposure_times.copy(), response=crf_debevec.copy())cal_robertson = cv.createCalibrateRobertson()crf_robertson = cal_robertson.process(img_list, times=exposure_times)hdr_robertson = merge_robertson.process(img_list, times=exposure_times.copy(), response=crf_robertson.copy())

            附加资源

          3. Paul E Debevec and Jitendra Malik. Recovering high dynamic range radiance maps from photographs. SIGGRAPH 2008.
          4. Mark A Robertson, Sean Borman, and Robert L Stevenson. Dynamic range improvement through multiple exposures. ICIP 1999.
          5. Tom Mertens, Jan Kautz, and Frank Van Reeth. Exposure fusion. PG'07.
          6. 练习建议

          7. 尝试所有色调映射算法(TonemapDrago、TonemapMantiuk、TonemapReinhard)。
          8. 修改HDR校准和色调图方法中的参数,观察结果的变化。
          9. 如需了解更多OpenCV-Python教程,请关注我们的专栏或扫描二维码加入交流群。

    转载地址:http://reav.baihongyu.com/

    你可能感兴趣的文章
    php.ini maxfileuploads,细说PHP高洛峰文件上传类源文件
    查看>>
    php.ini中常见的配置信息选项
    查看>>
    php.ini配置中有10处设置不当,会使网站存在安全问题
    查看>>
    php/jsp/asp的区别
    查看>>
    php20个主流框架
    查看>>
    php301到https,虚拟主机设置自动301跳转到HTTPS
    查看>>
    php5 apache 配置
    查看>>
    php5 升级 php7 版本遇到的问题处理方法总结
    查看>>
    PHP5.3.3安装Mcrypt扩展
    查看>>
    PHP5.4 + IIS + Win2008 R2 配置
    查看>>
    PHP5.4 pfsocketopen函数判断sock是否存活的bug(由memcached引起)
    查看>>
    Redis从入门到精通
    查看>>
    PHP5.6.x编译报错:Don't know how to define struct flock on this system, set --enable-opcache=no
    查看>>
    php5ts.dll 下载_php5ts.dll下载
    查看>>
    php7
    查看>>
    PHP7 新特性
    查看>>
    PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
    查看>>
    php7.1.6 + redis
    查看>>
    php7中使用php_memcache扩展
    查看>>
    PHP7中十个需要避免的坑
    查看>>