AI_Plays/ISP/Fast_ISP_Progress.ipynb at main · ameengee/AI_Plays · GitHub

Gamma Correction(伽马校正)是图像处理中的一个重要步骤,目的是调整图像的亮度,使其更符合人眼的感知显示设备的特性

为什么需要 Gamma Correction?

人眼对亮度的感知是非线性的

  • 低亮度更敏感,对高亮度不敏感

  • 如果我们不进行校正,线性存储的图像在显示设备上会显得过暗或不自然。

多数显示设备(如显示器)也不是线性显示亮度的,而是有自身的非线性响应曲线(通常是 2.2 的幂函数)。

Gamma Correction 原理

Gamma 校正的核心公式:

 ➤ 从线性亮度 → 非线性(编码):

I_corrected = I_input ** (1 / gamma)

 ➤ 从非线性(解码) → 线性亮度(反伽马):

I_linear = I_encoded ** gamma

其中:

  • I_input 是归一化的像素值(0.0 ~ 1.0)

  • gamma 是伽马值,通常为 2.2(sRGB 标准)

  • I_corrected 是校正后的值(也归一化)

 代码:

def GAC(cfa_img, gamma):"""Gamma correction for demosaiced RGB image.Args:cfa_img: np.ndarray, dtype=uint8 or float, range [0,255] or [0,1]gamma: float, e.g., 2.2Returns:gac_img: np.ndarray, dtype=uint8, gamma-corrected RGB image"""# 1. Convert to float and normalizecfa_img = cfa_img.astype(np.float32) / 255.0# 2. Apply gamma correctiongac_img = np.power(cfa_img, 1.0 / gamma)# 3. Scale back to 0~255gac_img = np.clip(gac_img * 255.0, 0, 255).astype(np.uint8)return gac_img

np.power()

np.power(a, b)a ** b 对于 NumPy 数组来说功能是一样的,作用都是逐元素幂运算,但:

np.power更明确、健壮、推荐的方式,尤其是在处理多维数组、广播、类型转换时更可控。

np.power 的优势

场景为什么更好
类型控制更安全会自动广播并转换成合适的 dtype(比如 float64)避免整型幂出错
更显式语义在写图像处理/科学计算时,用 np.power 一看就知道是「逐元素幂运算」,可读性强
兼容广播比如 np.power(array, scalar)np.power(array1, array2) 都支持
链式操作稳定np.clipnp.sqrt 等 NumPy 函数一起用时更一致、少坑

 

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI提取伴奏,实现卡拉OK效果 —— 「suno api/luno api/kuka api」

导读 喜欢唱歌,却总苦于找不到纯净的伴奏?或者你想把喜欢的歌曲翻唱一遍,却被人声干扰搞得头大?现在,AI技术已经悄悄解决了这个问题。借助AI智能工具,你可以轻松提取任何一首歌的伴奏,享受宛如…

pip介绍

pip是什么? pip(Pip Installs Packages)是Python的官方管理工具,用于安装、升级、卸载和管理Python第三方库及其依赖关系。它是Python生态系统的核心组件,通过连接PyPI(Python Package Index)这…

机器学习20-线性网络思考

机器学习20-线性网络思考 针对线性网络的基础问题,使用基础示例进行解释 1-核心知识点 1-线性模型家族的线性回归和逻辑回归分别是什么,线性模型家族还有没有其他的模型 线性模型家族是一系列基于线性假设的统计模型,它们假设因变量和自变量…

【科研绘图系列】R语言绘制世界地图分布(world map)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理准备画图画图总结系统信息介绍 本教程旨在通过R语言及其相关地理空间分析包,展示如何对环境数据进行空间聚类分析,并将结果可视化。教程从读…

Armbian 25.5.1 Noble Gnome 开启远程桌面功能

sudo apt install gnome-remote-desktop ----长话短说 故障表现 Ubuntu 25版本点击远程桌面功能没有任何反应, WIN_20250630_00_53_24_Pro 最后 armbian 官方社区充满了傲慢,一言不合就关闭话题,问题都没有解决就给我关闭了 最后检索到英文网站,说到了这么一句话,检查远程桌…

嵌入式 Linux 入门:从裸机到系统级开发的第一步

随着嵌入式系统应用的不断深入,很多 MCU 项目开发者会在某个阶段遇到瓶颈:系统越来越复杂、任务越来越多、通信越来越频繁、性能要求越来越高。 这时候,从 MCU / RTOS 过渡到 嵌入式 Linux 开发 就成为一次技术升级的关键转折点。 本文将带…

详解 Blazor 组件传值

父子组件传值 在 Blazor 中&#xff0c;组件之间的通信可以通过 [Parameter] 参数和 EventCallback<T> 事件回调实现。下面分别给出 父组件传递值给子组件 和 子组件传递值给父组件 的简单示例。 1.1 父组件传递值给子组件 步骤&#xff1a; 在子组件中定义 public 属…

力扣热题100再刷

160.相交链表 读一遍A&#xff0c;一个set存节点&#xff0c;遍历B的时候判断即可。复习下set的STL&#xff1a;set有set和unordered_set&#xff0c;同样有insert&#xff0c;find&#xff0c;count&#xff0c;对于set而言&#xff0c;自动从小到大排序&#xff0c;还有&…

MySQL常用函数性能优化及索引影响分析

MySQL 常用函数性能优化指南&#xff08;含索引影响分析&#xff09; 以下是 MySQL 函数使用指南&#xff0c;新增性能影响评级、索引失效分析和优化方案&#xff0c;帮助您高效使用函数&#xff1a; &#x1f4dc; 一、字符串处理函数&#xff08;含性能分析&#xff09; 函…

莫队(基础版)优雅的暴力

莫队算法是一种离线算法&#xff0c;常用于高效处理区间查询问题。它通过合理排序和移动左右端点来减少时间复杂度。 基本思想 莫队算法的核心思想是将所有查询离线排序&#xff01;&#xff01;&#xff08;找出一个过起来最快的查询顺序&#xff09;&#xff0c;然后通过移动…

✨ Python 高级定制 | 美化 Word 表格边框与样式(收货记录增强版)

之前我们完成了 Excel 数据提取、Word 表格写入与合并&#xff0c;现在继续 为 Word 表格添加高级样式 装扮&#xff0c;包括单元格边框、背景填色、居中对齐、粗体、高亮行/列等&#xff0c;进一步增强表格的可读性与专业性。 &#x1f58c;️ 样式设置函数 1. 设置单元格边框…

Clickhouse源码分析-TTL执行流程

第一种情况&#xff1a;无ttl_only_drop_parts配置 总体示例以及说明 如果没有ttl_only_drop_parts的配置&#xff0c;过期数据的删除&#xff08;这里是删除&#xff0c;是将过期的数据从这个part删除&#xff0c;并将过期的数据构成一个part&#xff0c;这个过期的part标记…

elementui修改radio字体的颜色和圆圈的样式

改完 <div class"choose"><el-radio-group v-model"radioNum"><el-radio label"1" size"large">Option 1</el-radio><el-radio label"2" size"large">Option 2</el-radio>&l…

力扣3381. 长度可被 K 整除的子数组的最大元素和

由于数据范围是2*10^5所以必然是遍历一次&#xff0c;子数组必定要用到前缀和&#xff0c;之前的题目中总是遇到的是子数组的和能不能被k整除&#xff0c;而这里不一样的是子数组的长度能不能被k整除&#xff0c;如果单纯的枚举长度必定超时&#xff0c;而看看题解得出的思路&a…

基于SSM的勤工助学系统的设计与实现

第1章 摘要 基于SSM框架的勤工助学系统旨在为学生、用工部门和管理员提供高效便捷的管理平台。系统包括学生端、用工部门端和管理员端&#xff0c;涵盖了从岗位发布、申请审核、工时记录、薪资管理到数据统计等完整的功能需求。 学生可以通过系统首页浏览最新的岗位信息和公告&…

2025年06月30日Github流行趋势

项目名称&#xff1a;twenty 项目地址 URL&#xff1a;https://github.com/twentyhq/twenty项目语言&#xff1a;TypeScript历史 star 数&#xff1a;31,774今日 star 数&#xff1a;1,002项目维护者&#xff1a;charlesBochet, lucasbordeau, FelixMalfait, Weiko, bosiraphae…

creo 2.0学习笔记

Creo软件从入门到精通——杜书森 1.1 Creo基本建模过程介绍 新建-零件-改名称-取消使用默认模板&#xff0c;是因为默认的是英制尺寸&#xff0c;自定义可选择mmns_part_solid&#xff0c;模板主要是设置模型的单位拉伸-选取FRONT-点击草绘视图&#xff0c;可进行草绘旋转——…

ZNS初步认识—GPT

1. ZNS SSD 的基本概念 Zoned Namespace (ZNS): ZNS 是一种新的NVMe接口规范&#xff0c;它将SSD的逻辑块地址空间划分为多个独立的、固定大小的“区域”&#xff08;Zones&#xff09;。区域 (Zone): ZNS SSD 的基本管理单元。每个区域都有自己的写入指针&#xff08;write p…

【seismic unix生成可执行文件-sh文件】

Shell脚本文件&#xff08;.sh文件&#xff09;简介 Shell脚本文件&#xff08;通常以.sh为扩展名&#xff09;是一种包含Shell命令的文本文件&#xff0c;用于在Unix/Linux系统中自动化执行任务。它由Shell解释器&#xff08;如Bash、Zsh等&#xff09;逐行执行&#xff0c;常…

Debezium日常分享系列之:在 Kubernetes 上部署 Debezium

Debezium日常分享系列之&#xff1a;在 Kubernetes 上部署 Debezium 先决条件步骤部署数据源 (MySQL)登录 MySQL db将数据插入其中部署 Kafka部署 kafdrop部署 Debezium 连接器创建 Debezium 连接器 Debezium 可以无缝部署在 Kubernetes&#xff08;一个用于容器编排的开源平台…