116、Gamma校正与色调映射:人眼视觉特性、动态范围压缩与对比度增强的实战
116、Gamma校正与色调映射:人眼视觉特性、动态范围压缩与对比度增强的实战一、一个让我半夜被叫醒的bug2018年某款旗舰机,夜景模式拍出来的照片,暗部细节全黑,高光区域却像被漂白过。用户投诉说“还不如三年前的老机型”。我盯着log看了三个小时,发现ISP输出的raw数据明明有12bit动态范围,但经过Gamma校正后,暗部被压缩到了几乎不可分辨的区间。问题出在Gamma曲线本身——我们用了标准的sRGB Gamma,但sRGB是为8bit显示设计的,对12bit sensor的暗部细节简直是屠杀。后来我换了一种做法:在Gamma之前先做一次色调映射(Tone Mapping),把高动态范围先压缩到人眼可感知的区间,再套Gamma。效果立竿见影。这个教训让我明白:Gamma校正不是简单的幂律曲线,它必须和人眼视觉特性、显示设备特性、以及场景的动态范围一起考虑。二、人眼视觉特性:为什么Gamma曲线长这样人眼对亮度的感知不是线性的。你从0到1增加10个单位的亮度,人眼感觉到的变化幅度,远小于从100到110的变化。这就是韦伯-费希纳定律(Weber-Fechner Law)的简化版:人眼对亮度的响应近似对数关系。Gamma校正的数学形式是 ( L_{out} = L_{in}^\gamma ),其中 (\gamma) 通常取2.2。这个曲线模拟了人眼的非线性响应:暗部被拉伸(因为人眼对暗部更敏感),亮部被压缩(因为人眼对亮部不敏感)。但注意,这个曲线是显示设备的特性——CRT显示器的亮度响应本身就是Gamma 2.2左右的幂律

相关新闻

深入解析PPPwn:PlayStation 4内核级远程代码执行实战指南

深入解析PPPwn:PlayStation 4内核级远程代码执行实战指南

深入解析PPPwn:PlayStation 4内核级远程代码执行实战指南 【免费下载链接】PPPwn PPPwn - PlayStation 4 PPPoE RCE 项目地址: https://gitcode.com/GitHub_Trending/pp/PPPwn PPPwn是一款针对PlayStation 4游戏机内核级安全研究的专业工具,通过P…

2026/9/27 14:48:49 阅读更多 →
Android ---【性能优化】都有哪些情况会发生anr,怎么解决?

Android ---【性能优化】都有哪些情况会发生anr,怎么解决?

前言 Android发生ANR的情况主要包括输入调度超时、广播超时、服务超时等,解决ANR问题的方法包括避免在主线程进行耗时操作、导出ANR日志信息、分析系统资源信息、查看主线程状态等。‌ Android系统中,ANR(Application Not Responding&#xf…

2026/10/2 10:48:39 阅读更多 →
PyPtt社区精选案例:看看别人如何用Python玩转PTT

PyPtt社区精选案例:看看别人如何用Python玩转PTT

PyPtt社区精选案例:看看别人如何用Python玩转PTT 【免费下载链接】PyPtt The best PTT library 项目地址: https://gitcode.com/gh_mirrors/py/PyPtt PyPtt是一款功能强大的PTT库,让开发者能够轻松使用Python与PTT社区进行交互。无论是获取文章、…

2026/10/2 17:52:06 阅读更多 →

最新新闻

PTA图遍历核心:邻接矩阵与邻接表存储及DFS/BFS实战详解

PTA图遍历核心:邻接矩阵与邻接表存储及DFS/BFS实战详解

1. 图的两大存储方案:邻接矩阵与邻接表的选择逻辑 说实话,每次在PTA上碰到图的题目,很多同学的第一反应是"直接开干",结果往往在存储方式这一步就走错了方向。我自己带过不少准备天梯赛和数据结构课程设计的同学&#x…

2026/10/5 8:12:01 阅读更多 →
STM32定时器输入捕获测PWM脉宽:HAL库配置与代码实战

STM32定时器输入捕获测PWM脉宽:HAL库配置与代码实战

1. 为什么建议直接学HAL库的输入捕获很多从标准库转到STM32Cube HAL开发的朋友,第一次接触定时器输入捕获时,最直观的感受是:标准库那套“配置GPIO为复用模式、开定时器时钟、写CCMR/CCER/DIER寄存器、写中断服务函数”的操作,在H…

2026/10/5 8:12:01 阅读更多 →
MMC5603NJ三轴磁力计指南针实现:从I2C驱动到航向角解算

MMC5603NJ三轴磁力计指南针实现:从I2C驱动到航向角解算

做嵌入式这些年,手里过过的传感器少说也有几十种,但但凡涉及姿态、航向类的项目,地磁传感器始终是绕不开的一个角色。MMC5603NJ这块三轴磁力计,最初是朋友推荐给我的,说在无人机、机器人导航和对讲机里用得挺多&#x…

2026/10/5 8:12:01 阅读更多 →
扩散模型精准概念擦除:解决跨编辑干扰的SCIE方法

扩散模型精准概念擦除:解决跨编辑干扰的SCIE方法

1. 这不是“删掉某个概念”,而是让模型学会“不混淆地遗忘”你有没有试过让一个扩散模型忘记“猫”——结果它把“狗”也画得不像了?或者想抹除训练数据里某类特定风格(比如某位艺术家的笔触),模型却开始把所有水彩画都…

2026/10/5 8:12:01 阅读更多 →
开源模拟赛车驾驶舱DIY:openrig选料组装与加固避坑指南

开源模拟赛车驾驶舱DIY:openrig选料组装与加固避坑指南

去年年底我清空客厅一角,铺上地垫,把电钻、内六角扳手和一台没来得及装的直驱方向盘基座一字排开。在那之前的三四个月里,我一直用着一套三百多块钱的入门支架——两根钢管夹住方向盘,踏板靠地板摩擦固定。说实话,它也…

2026/10/5 8:12:01 阅读更多 →
STM32定时器输入捕获测量PWM频率与占空比详解

STM32定时器输入捕获测量PWM频率与占空比详解

很多玩STM32的朋友都问过我同一个问题:怎么量一个PWM信号的频率和占空比?最直接的办法是上示波器,但很多实际项目里我们不仅要知道这个信号长什么样,还要让单片机根据它去做控制,比如解析遥控器输出、读取电调反馈、计…

2026/10/5 8:11:01 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →