原论文信息如下:

   论文标题: Tuning adaptive gamma correction (TAGC) for enhancing images in low light

  发表日期: 2025年07月

  作者: Ghufran Alhamzawi, Alfoudi Ali Saeed, Suha Mohammed Hadi等

  发表单位: University of Al-Qadisiyah, University of Information Technology and Communications等

  原文链接:

    http://arxiv.org/pdf/2507.19574v1=

  AGC的核心思想非常巧妙:它通过分析图像的亮度分布,自动计算出最适合的伽马校正参数。整个过程完全自动化,不需要任何人工干预。具体来说,它分为四个步骤:

    1. 计算亮度因子(L)根据人眼对不同颜色的敏感度,给RGB三个通道赋予不同权重。

            

    2. 计算平均颜色因子(μ)取RGB三个通道的平均值,作为整体颜色基准。

              

    3. 计算自适应伽马系数(γ)结合亮度因子和平均颜色因子,动态调整伽马值。

           

    4. 应用自适应伽马校正使用计算出的伽马值对图像进行增强处理。

          

  以上都是针对单个像素处理的。

  这个算法弄成代码也不是很复杂的,分享如下:

void IM_TAGC_Enhancement(unsigned char *Src, unsigned char *Dest, int Width, int Height, int Stride)
{
int Channel = Stride / Width;
float Inv255 = 1.0f / 255;
if (Channel == 3)
{
for (int Y = 0; Y < Height; Y++)
{
unsigned char *LinePS = Src + Y * Stride;
unsigned char *LinePD = Dest + Y * Stride;
for (int X = 0; X < Width; X++)
{
float Blue = LinePS[0] * Inv255;
float Green = LinePS[1] * Inv255;
float Red = LinePS[2] * Inv255;
float L = 0.2126f * Red + 0.7152 * Green + 0.0722 * Blue;
float A = (Blue + Green + Red) / 3;
float Gamma = 5.0f + (0.5f - L) * (1 - A) - 2 * L;
LinePD[0] = ClampToByte((int)(powf(Blue, 2 / Gamma) * 255 + 0.4999999f));
LinePD[1] = ClampToByte((int)(powf(Green, 2 / Gamma) * 255 + 0.4999999f));
LinePD[2] = ClampToByte((int)(powf(Red, 2 / Gamma) * 255 + 0.4999999f));
LinePS += 3;
LinePD += 3;
}
}
}
}

  效果吗,确实能做到作者论文里的效果的,说明作者是没有作假的。

        

        

  不过对有些图像的处理效果就还是有点灰蒙蒙的,整体对比度不高。

  至于算法的速度并不像有些文章里说的可以满足4K视频实时增强的,虽然上面提供的代码只是示意代码,可以进行大量的优化,但是最后的pow函数是个非常耗时的过程,而且似乎没有设么好的办法去避免这个计算,不算前面文章那个pow(x,1.5)可以转换为x * sqrt(x)。

  不过这个点和我一样还在研究传统算法的,又是伊拉克的团队,这份精神还是值得表扬的。

[快速阅读十一] 伊拉克团队的TAGC(低光增强效果)算法实现。的更多相关文章

  1. 201904<<快速阅读术>>

    在看过了几本数之后,发现原来培养读书的习惯好像也不太难,“将读书融入生活,框定读书时间” 生活中,我确实也是这样执行了.利用每天上下班的时间听书,有些觉得可以读快的书籍用了1.5倍速度在听,难懂的部分 ...

  2. SpeedReader for Mac(快速阅读器)v1.6免费版

    SpeedReader for Mac是一款运行在Mac平台上的阅读软件,通过这款软件就可以自行调整阅读速度.通过SpeedReader Mac版用户可以将想要阅读的内容拖入到软件中,调整速度和字体, ...

  3. 快速上手项目远程团队协作--CODING(新手向)

    快速上手项目远程团队协作--CODING(新手向) CODING网址:https://e.coding.net/signin 前言:之前用过github,用过微软的Azure协作(https://az ...

  4. 十一、从头到尾彻底解析Hash 表算法

    在研究MonetDB时深入的学习了hash算法,看了作者的文章很有感触,所以转发,希望能够使更多人受益! 十一.从头到尾彻底解析Hash 表算法 作者:July.wuliming.pkuoliver  ...

  5. 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)

    再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...

  6. 快速阅读《QT5.9 c++开发指南》1

    简介:<QT5.9 c++开发指南>的作者是和i三位主要从事地球物理探测仪器设计.数据处理方法研究和软件开发等工作的博士们,这本书以QT Widget为主要内容,比较全面地教授了QT开发桌 ...

  7. 5分钟快速部署PESCMS TEAM 团队任务管理系统开发版

    所在的公司也经历过小团队的发展,为了高效率,通常都是面对面交流,很多时候事情谈论过后不久就已经淡忘了.而且工作任务不能全局观察,成员之间基本上都要主动去询问,效率反而低下.所以今天就介绍一款中小团队的 ...

  8. Spark Netty与Jetty (源码阅读十一)

    spark呢,对Netty API又做了一层封装,那么Netty是什么呢~是个鬼.它基于NIO的服务端客户端框架,具体不再说了,下面开始. 创建了一个线程工厂,生成的线程都给定一个前缀名. 像一般的n ...

  9. 快速阅读《QT5.9 c++开发指南》2

    1.sample2_2 信号和槽 MFC中最让人印象深刻的就是"消息映射",这里有理由相信,"信号和槽"是这种功能的发扬和扩展.通过简单的 connect(ui ...

  10. No.1110_第十一次团队会议

    今天项目进展很多,第一轮迭代基本已经完成了,但是产品还没有发布,主要是因为大家还是太困了,所以再等一等明天再发布吧. 现在队员们急需补觉,因为最近实在是太辛苦了,很多人都没有休息好.现在已经基本完成了 ...

随机推荐

  1. Ocelot和Consul 实现网关API 服务注册 负载均衡

    Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butterfly ...

  2. 第2讲、Tensor高级操作与自动求导详解

    1. 前言 在深度学习模型中,Tensor是最基本的运算单元.本文将深入探讨PyTorch中两个核心概念: Tensor的广播机制(Broadcasting) 自动求导(Autograd)机制 这些知 ...

  3. MVVM - Model和ViewModel的创建和配置

    MVVM-Model和ViewModel的创建和配置 本文同时为b站WPF课程的笔记,相关示例代码 简介 MVVM:Model-View-ViewModel,是一种软件架构的模式.通过引入一个中间层V ...

  4. CSP2020复赛前小结

    今天用windows下的GUIDE打了一些板子,以下是我遇到的问题. 语言 未定义返回值类型的函数 inline isnum(char ch) { return ch>='0'&& ...

  5. linux系统自定义登录提示信息

    centos7配置说明 这里对于centos7.x系统,可以直接编辑/etc/motd文件,增加定制的提示信息,并可以通过不同颜色展示. vim /etc/motd ^[[32m 设备IP地址: 10 ...

  6. AI生成的一篇官网代码,有兴趣可以参考一下

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...

  7. Win10环境安装Anaconda(3-2021.05)+Tensorflow(2.6)

    Win10环境安装Anaconda(3-2021.05)+Tensorflow(2.6) ​ 在学习机器学习的过程中会用到许多Python库,例如tensorflow.pandas等,用到的时候单独去 ...

  8. 国贸股份 x 袋鼠云:推进全链业务深度数字化,为产业综合服务插上数字化翅膀

    数据治理是推动大型集团企业转型升级.提升竞争优势.实现高质量发展的重要引擎.通过全链数据结构化,实现业务对象.业务规则.业务流程数字化,推进全链业务深度数字化,夯实数据运营底座. 厦门国贸集团股份有限 ...

  9. [CF878E]Numbers on the blackboard

    E - Numbers on the blackboard 最后的答案肯定为\(\sum_{l\leq i\leq r} 2^{p_i}\times a_i\) 然后这个\(p\)满足以下限制: \( ...

  10. Vertx 实现webapi实战项目(二)

      消息解析:消息序列化和反序列化---上传json解析和返回json编码. 整理下工程项目 一:实现消息接口,在imp文件夹下新建接口MessageFactory 1 /****** 2 * 消息编 ...