[Python图像处理] 使用OpenCV创建色调图

使用OpenCV创建色调图

    • 色调映射和高动态范围成像
    • 应用色调映射
    • 相关链接

色调映射和高动态范围成像

高动态范围 (High Dynamic Range, HDR) 技术用于摄影成像,以再现比标准数字成像或摄影技术更大的动态范围的亮度。标准成像技术仅允许在一定范围内区分亮度,在范围之外,由于在明亮的区域没有差别,因此没有可见的特征,因为所有的东西都是纯白色的,而在黑暗的区域同样没有差别,因为所有东西都是纯黑的。图像中色调值(可测量光强度)的最大值和最小值之间的比率被称为动态范围。
由于打印和显示对比度的局限性,必须压缩输入 HDR 图像的扩展亮度范围才能使其可见,将 HDR 图像渲染到标准监视器或打印设备的方法称为色调映射。色调映射将图像的强度改变到高水平或高动态范围,降低 HDR 图像的整体对比度以便于在具有较低动态范围的设备或打印输出上显示,并且可以应用于生成具有保留的局部对比度的图像。

应用色调映射

在本节中,我们将学习如何使用 OpenCV 函数在 HDR 图像上应用色调映射。HDR 图像中像素的理论最大值可以是任意的。我们假设 HDR 图像是通过合并多个曝光图像创建的。
OpenCV 提供了四种色调映射算法实现:

  • Drago
  • Durand
  • Reinhard
  • Mantiuk

本节中,我们将介绍 DragoDurand 色调映射算法,色调音调映射算法的常见参数如下:

  • 参数 gamma 通过应用伽马校正来压缩动态范围:
    • γ = 1 γ= 1 γ=1:不进行校正
    • γ < 1 γ<1 γ<1:使图像变暗
    • γ > 1 γ> 1 γ>1:使图像变亮
  • 参数 saturation 用于增加或减少饱和量;当饱和度高时,颜色会丰富而强烈;饱和值接近零,使颜色淡如灰度图像
  • 参数 contrast 用于控制对比度

我们首先下载 HDR 图像 ( .hdr 文件),我们使用 HDR 图像作为输入,并使用色调映射算法显示该图像。

(1) 导入所需的库,并从磁盘中读取 HDR 图像:

import cv2
import numpy as np
#from skimage import img_as_ubyte
import matplotlib.pylab as plt

hdr_image = cv2.imread("snowman.hdr", -1)

(2) 使用 DragoToneMap 方法获取 BGR 彩色图像,将其转换为 RGB 图像。由于获得的图像的亮度较低,因此可以通过将其乘以一个正常数增加亮度:

tonemap_drago = cv2.createTonemapDrago(1.0, 0.7)
ldr_drago = tonemap_drago.process(hdr_image)
ldr_drago = 3 * ldr_drago
ldr_drago = cv2.cvtColor(ldr_drago, cv2.COLOR_BGR2RGB)

(3) 使用 DurandToneMap 方法获取 BGR 彩色图像,将其转换为 RGB 图像:

# tonemap_durand = cv2.createTonemapReinhard(1.5,4,1.0,1,1)
# ldr_durand = tonemap_durand.process(hdr_image)
# ldr_durand = 3 * ldr_durand
# ldr_durand = cv2.cvtColor(ldr_durand, cv2.COLOR_BGR2RGB)

(4) 最后,使用色调映射绘制从 HDR 图像获得的输出图像:

plt.figure(figsize=(20,20))
plt.subplot(111), plt.imshow(ldr_drago), plt.axis('off'), plt.title('Tone mapping with Drago\'s method', size=10)
# plt.subplot(212), plt.imshow(ldr_durand), plt.axis('off'), plt.title('Tone mapping with Durand\'s method', size=10)
plt.tight_layout()
plt.show()

HDR 图

相关链接

Python图像处理【1】图像与视频处理基础
Python图像处理【2】探索Python图像处理库
Python图像处理【3】Python图像处理库应用
Python图像处理【4】图像线性变换
Python图像处理【5】图像扭曲/逆扭曲
Python图像处理【6】通过哈希查找重复和类似的图像
Python图像处理【7】采样、卷积与离散傅里叶变换
Python图像处理【8】使用低通滤波器模糊图像
Python图像处理【9】使用高通滤波器执行边缘检测
Python图像处理【10】基于离散余弦变换的图像压缩
Python图像处理【11】利用反卷积执行图像去模糊
Python图像处理【12】基于小波变换执行图像去噪
Python图像处理【13】使用PIL执行图像降噪
Python图像处理【14】基于非线性滤波器的图像去噪
Python图像处理【15】基于非锐化掩码锐化图像
Python图像处理【16】OpenCV直方图均衡化
Python图像处理【17】指纹增强和细节提取
Python图像处理【18】边缘检测详解
Python图像处理【19】基于霍夫变换的目标检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/372168.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

yolov8使用旋转框自己做数据集检测

主要在数据集制作&#xff0c;训练的步骤和目标检测是一样的 1.数据集标注主要使用rolabelimg工具&#xff0c;这个工具不能在线安装 得下载源代码 然后运行 标注好数据保存会是一个xml文件 2.把xml文件转换成dota的xml文件&#xff0c;然后把dota的xml文件转换成dota的txt文件…

Java List的合并与切分

在Java开发中经常遇到list结构数据的处理&#xff0c;如List的合并或拆分&#xff0c;记录下来&#xff0c;方便备查。 一、List 合并 两个list数据的合并处理&#xff0c;可使用Java8 新特性的stream流&#xff0c;根据实际需要遍历取值。 1、定义 UserInfo 对象 订单bean…

【知识图谱--第一讲概论】

深度学习–连接主义 知识图谱–符号主义 表示 有属性图和RDF图两种 RDF由三元组表示&#xff1a;Subject - Predicate - Object 存储 图数据库 抽取 融合 推理 问答 图算法

基于SpringBoot+Vue的师生疫情健康信息管理登记平台,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Acwing---830. 单调栈

单调栈 1.题目2.基本思想3.代码实现 1.题目 给定一个长度为 N N N 的整数数列&#xff0c;输出每个数左边第一个比它小的数&#xff0c;如果不存在则输出 − 1 −1 −1。 输入格式 第一行包含整数 N N N&#xff0c;表示数列长度。 第二行包含 N N N 个整数&#xff0c…

vue2+html2pdf下载PDF,PDF分页切割

问题&#xff1a; PDF下载下来后&#xff0c;文档内容被暴力分割。 解决方案&#xff1a; HTML <!-- 打印按钮 --> <el-button type"primary" size"small" class"el-icon-download right_btn" click"downloadPDF">PDF&…

最短编辑距离问题与动态规划----LeetCode 72.编辑距离

动态规划&#xff08;Dynamic Programming, DP&#xff09;是解决复杂问题的一个强大工具&#xff0c;它将问题分解成更小的子问题&#xff0c;并使用这些子问题的解决方案来构建整体问题的解决方案。在深入探讨最短编辑距离问题之前&#xff0c;让我们先理解什么是动态规划&am…

CGAL的二维分段的Delaunay图

本章描述了CGAL的二维分段Delaunay图。我们从定义一节中的一些定义开始。2D段Delaunay图形包的软件设计在“软件设计”一节中进行了描述。在“几何特征”一节中&#xff0c;我们讨论了2D段Delaunay图包的几何特征&#xff0c;在“段Delaunay图层次结构”一节&#xff0c;简要描…

【Shell的运行原理以及Linux当中的权限问题】

Shell的运行原理以及Linux当中的权限问题 Shell的运行原理Linux当中的权限问题Linux权限的概念如何实现用户账号之间的切换如何仅提升当前指令的权限如何将普通用户添加到信任列表 Linux权限管理文件访问者的分类 (人)文件类型和访问权限 (事物属性)文件权限值的表示方法文件访…

MacOS系统电脑远程桌面控制windows系统电脑【内网穿透】

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1…

自动化测试的ROI

ROI模型树 提升ROI的基础出发点&#xff1a;增加运行次数 手段&#xff1a;测试左移、测试右移 测试左移&#xff08;测试阶段&#xff09; 原始测试流程&#xff1a; 软件生命周期&#xff1a;软件需求分析、软件设计、软件开发、单元测试、集成测试、系统测试开发阶段&…

ideaIU-2023.2.1安装教程

ideaIU-2023.2.1安装教程 一、ideaIU-2023.2.1安装1.1 下载IdeaIU-2023.2.1安装包1.2 安装ideaIU-2023.2.1 二、ideaIU-2023.2.1激活 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 一、ideaIU-2023.2.1安装 1.1 下载IdeaIU-2023.2.1安装包…

import blind_watermark ModuleNotFoundError: No module named ‘blind_watermark‘

Traceback (most recent call last): File "d:\python\PYTHON_VSCOD\demo.py", line 1, in <module> import blind_watermark ModuleNotFoundError: No module named blind_watermark 如何选择正确的解释器 在 Visual Studio Code (VS Code) 中更改 Python 解释…

5.0 HDFS 集群服务建立教程

HDFS 集群是建立在 Hadoop 集群之上的&#xff0c;由于 HDFS 是 Hadoop 最主要的守护进程&#xff0c;所以 HDFS 集群的配置过程是 Hadoop 集群配置过程的代表。 使用 Docker 可以更加方便地、高效地构建出一个集群环境。 每台计算机中的配置 Hadoop 如何配置集群、不同的计…

YOLOv5独家改进:上采样算子 | 超轻量高效动态上采样DySample,效果秒杀CAFFE,助力小目标检测

💡💡💡本文独家改进:一种超轻量高效动态上采样DySample, 具有更少的参数、FLOPs,效果秒杀CAFFE和YOLOv5网络中的nn.Upsample 💡💡💡在多个数据集下验证能够涨点,尤其在小目标检测领域涨点显著。 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/cate…

多线程生命周期与通信(二)通信

线程自启动时&#xff0c;就拥有了自己的栈空间。然后会一直运行直到结束。多线程的目的是多条线程执行不同的逻辑业务从而能够提升业务整体的响应速度&#xff0c;如果线程仅仅是孤零零的执行&#xff0c;不同的逻辑业务就不能最终汇聚成一个完整的业务那么多线程也就失去了意…

Windows10安装PCL1.14.0及点云配准

一、下载visual studio2022 下载网址&#xff1a;Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com) 安装的时候选择"使用C的桌面开发“&#xff0c;同时可以修改文件路径&#xff0c;可以放在D盘。修改文件路径的时候&#xff0c;共享组件、…

Web APIs 2 事件

Web APIs 2 事件 事件监听案例&#xff1a;广告关闭案例&#xff1a;随机问答 事件监听版本事件类型案例&#xff1a;轮播图完整焦点事件键盘事件输入事件案例&#xff1a;评论字数统计 事件对象获取事件对象事件对象常用属性案例&#xff1a;评论回车发布 环境对象this回调函数…

电脑怎么扫描纸质文件?6步轻松完成扫描!

“由于工作的需要&#xff0c;我要将部分纸质文件扫描到电脑上&#xff0c;不知道应该怎么操作会更方便呢&#xff1f;希望大家给我出出主意。” 随着科技的进步&#xff0c;电脑已经成为了我们日常生活和工作中不可或缺的工具。除了传统的文字处理和数据处理&#xff0c;电脑还…

【漏洞库】O2OA系统

O2OA invoke 后台远程命令执行漏洞 CNVD-2020-18740 漏洞描述 O2OA是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动OA、文档分享、流程审批、数据协作等众多功能,满足企业各类管理和协作需求。 O2OA系…
最新文章