当前位置: 首页 > news >正文

OpenCV计算摄影学(11)色调映射算法类cv::TonemapDrago

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::TonemapDrago 是 OpenCV 中实现的基于 Paul Debevec 和 Jorge Moraleda 以及后来由 Rogier van de Weijer 和 Theo Drago 改进的色调映射算法的一个具体类。该算法特别适用于高动态范围(HDR)图像到低动态范围(LDR)图像的转换,目的是让 HDR 图像能够在标准显示器上显示,同时尽可能地保留原始图像中的细节和色彩。

主要特点

  • 全局与局部对比度:cv::TonemapDrago 算法通过平衡图像的全局和局部对比度来增强视觉效果。它能够自适应调整图像亮度,避免过度曝光或曝光不足的问题。

  • 参数调节:

    • Gamma (γ): 控制输出图像的伽马校正值,默认值为1.0。伽马校正影响中间亮度级别的表现。
    • Saturation: 控制色彩饱和度,默认值为1.0。增加这个值会使颜色更加鲜艳,但过高可能导致不自然的颜色表现。
    • Bias: 控制压缩曲线的偏置,用于调整亮区和暗区之间的权重。默认值通常设置为0.85,但是你可以根据需要进行调整以获得最佳效果。

方法介绍

  • createTonemapDrago(float gamma = 1.0f, float saturation = 1.0f): 创建一个 cv::TonemapDrago 对象,并允许用户指定初始的伽马值和饱和度值。

  • process(InputArray src, OutputArray dst): 这是核心方法,用于执行色调映射操作。src 参数应为32位浮点型、BGR格式的HDR图像,而 dst 则为经过色调映射后的LDR图像。

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/photo.hpp>

using namespace cv;

int main()
{
    // 加载HDR图像
    Mat hdr = imread( "path_to_hdr_image.hdr", IMREAD_ANYDEPTH );

    if ( hdr.empty() )
    {
        printf( "Could not open or find the HDR image.\n" );
        return -1;
    }

    // 创建TonemapDrago对象并设置参数
    Ptr< TonemapDrago > tonemapDrago = createTonemapDrago( 1.0, 1.0 );
    Mat ldr;

    // 执行色调映射
    tonemapDrago->process( hdr, ldr );

    // 将像素值归一化到[0, 1]范围内,然后转换到8位无符号整数
    ldr *= 255;
    ldr.convertTo( ldr, CV_8U );

    // 显示结果
    imshow( "Original HDR Image", hdr );
    imshow( "Tone-mapped LDR Image", ldr );
    waitKey( 0 );

    return 0;
}

运行结果

在这里插入图片描述

相关文章:

  • 【量化策略】网格交易策略
  • 本地安装git
  • Sass基础
  • Django框架下html文件无法格式化的解决方案
  • 初识Qt · Qt的基本认识和基本项目代码解释
  • Firefox缩小标签页高度以及自定义调整
  • PDF文本转曲线轮廓 ​PDF转图片、提取文本和图片
  • 高性能采集服务上线回顾
  • Leetcode 209 长度最小的子数组
  • RX580双卡32GB显存跑DeepSeek-R17b、8b、14b、32b实测
  • vue3+vant4+js的移动端项目,每次部署完项目后,部分点击跳转至新页面的事件就失效了,不跳转,也不报错,如何解决?
  • Linux知识-第一天
  • SpringBoot集成Netty实现Ws和Tcp通信
  • 初探WebAssembly
  • 什么是组态软件?
  • Kotlin 类委托与属性委托
  • 图论-岛屿数量
  • 什么是分布式和微服务?
  • 第一章:6.差分+前缀和(一个区域整体添加一个数)
  • EVOAGENT: Towards Automatic Multi-Agent Generation via Evolutionary Algorithms
  • 马云再次现身阿里打卡创业公寓“湖畔小屋”,鼓励员工坚持创业精神
  • 中国词学研究会原会长、华东师大教授马兴荣逝世,享年101岁
  • 七大交响乐团在沪“神仙斗法”,时代交响奏出何等时代新声
  • 正荣地产:董事会主席、行政总裁辞任,拟投入更多精力推动境内债重组等工作
  • 牛市早报|央行宣布降准降息,公募基金改革最新方案落地
  • 公募基金解读“一揽子金融政策”:增量财政空间或打开,有助于维持A股活力