An adaptive gamma correction for image enhancement 低照度图像自适应gamma矫正
文章目录
- 前言
- 一、算法流程
- 二、效果展示
- 总结
前言
文章主要对图像增强算法进行综述,并比较之前直方图均衡化算法的优缺点提出一种新的基于Gamma增强的算法。算法的主要步骤:
1、色彩空间转换,BGR转换到HSV空间,选取V空间(亮度空间),计算V空间的均值和方差;
2、图像分类,规避传统直方图均衡化的缺点,根据V的均值将图像分成亮图像和暗图像,根据V的方差将图像分成低对比度和高对比度;不同亮度和对比度的图像分配不同的增益和对比度参数;
3、曲线转换,根据不同的分类分配不同的增益系数c和转换函数曲线控制系数r,根据Gamma理论对V空间进行增强,最后增强后的V空间和原始的S、V空间合并得到新的BGR空间。
一、算法流程
主要分为三个步骤,流程图如图所示:
算法流程图
1、色彩空间转换
将BGR色彩空间转至HSV空间,并分离通道,只对V亮度空间进行处理;把V空间类型转成浮点类型,计算其均值和方差;
2、图像分类
根据计算的均值μ\muμ和方差σ\sigmaσ,分配不同的系数,文章中定义:
μ\muμ<=0.5认为是暗图像,反之是亮图像
4*σ\sigmaσ<=1/3认为是低对比度,反之是高对比度
3、曲线转换
Gamma的公式:IoI_oIo = c*IiI_iIi^γ\gammaγ
其中,参数c 是增益系数,参数γ\gammaγ 是Gamma系数,IiI_iIi是输入图像,IoI_oIo是输出图像;
3.1 低对比度图像
低对比度图像,低对比度图像意味着大多数像素值较低并且具有相似的像素值,应该把像素拉伸到更大的范围来增强对比度,参数c定义为:
c= 1/(1 + Heaviside(0.5 − μ\muμ) × (k − 1))
其中,k = IiI_iIi^γ\gammaγ + (1 - IiI_iIi^γ\gammaγ) * μ\muμ^σ\sigmaσ
Heaviside是个符号操作,定义为:
Heaviside(x) = 0, if x<=0;
反之,Heaviside(x) =1,if x>0
3.1.1 亮图像
低对比度的亮图像,μ\muμ是大于0.5的,图像的亮度较高只需要增强细节的对比度,此时c=1,变换曲线在IoI_oIo = IiI_iIi的下方,图像整体亮度降低,灰度值较低的像素点对比度降低,灰度值高的对比度增加,更又利于分辨高灰度值的图像细节,转换函数变成:
IoI_oIo = IiI_iIi^γ\gammaγ
论文中选取γ\gammaγ = -log2\log_2log2(σ\sigmaσ),对于临界点,γ\gammaγ_min = −log2(0.0833) = 3.585。
3.1.2 暗图像
低对比度暗图像的灰度集中在小部分区域并且集中在灰度均值附近,需要将直方图拉升到较大的范围,此时c = k,变换曲线在IoI_oIo = IiI_iIi的上方,陡峭部分曲线的值随 σ\sigmaσ移动,图像的整体亮度增加,灰度值较低的像素点对比度增强,灰度值高的对比度降低,更又利于分辨低灰度值的图像细节,转换函数为:
IoI_oIo = IiI_iIi^γ\gammaγ/k
3.2 高对比度
高对比度图像,亮度调整比对比度增强重要,这时的γ\gammaγ取值范围在1附近,保证图像的对比度变换范围不大,文章里γ\gammaγ取值:
γ\gammaγ = exp(1-(μ\muμ + σ\sigmaσ)/2)
3.2.1 暗图像
对于高对比度的暗图像,均值和方差都小于0.5,因此γ\gammaγ>=1,转换曲线在IoI_oIo = IiI_iIi的上方,图像均值和方差越小,增强的曲线越陡峭;对于暗图像均值接近于0.5的,转换曲线接近于一条直线;
3.2.2亮图像
对于高对比度的亮图像,图像有较好的亮度和对比度,均值和方差都接近于0.5,转换曲线接近于直线。
二、效果展示
选取低照度的图片,运行该代码后,图像增强效果如图所示:
原始低照度图片
增强后的图片
总结
该方法对于暗图像增强有显著的提升,但是也存在较大的问题,对于高对比度高亮度的图片,会存在过增强和丢失细节等问题。
An adaptive gamma correction for image enhancement 低照度图像自适应gamma矫正相关推荐
- Gamma Correction/Gamma校正/灰度校正/亮度校正(已更正) - 部分 DCC 中的线性工作流配置
文章目录 也可以简单参考 SIGGRAPH 2010 的 PBS 的 Gamma-Correct Unity 中的 gamma.linear 工作流 Unity BRP 管线中的 shaderlab ...
- OpenGL Gamma Correction伽马校正的实例
OpenGL Gamma Correction伽马校正 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> # ...
- Gamma Correction
一. 伽马校正简介: 伽马校正用来对照相机等电子设备传感器的非线性光电转换特性进行校正.如果图像原样显示在显示器等上,画面就会显得很暗.伽马校正通过预先增大 RGB 的值来排除影响,达到对图像校正的目 ...
- 【论文阅读】Locally Adaptive Color Correction for Underwater Image Dehazing and Matching
论文:Locally Adaptive Color Correction for Underwater Image Dehazing and Matching 作者:Codruta O. Ancuti ...
- Gamma Correction sRGB texture
文章目录 显示器gamma值的由来 gamma encode 图形渲染中的gamma问题 gamma correction sRGB texture 效果对比 正确的Linear/SRGB转换公式 参 ...
- OpenGL学习脚印:伽马校正(Gamma Correction)
写在前面 由于CRT,LED等显示设备显示颜色时并非按照线性方式工作,因此我们在程序中输出的颜色,最终输出到显示器上时会产生亮度减弱的现象,这种现象在计算光照和实时渲染时对图形质量有一定影响,需要我们 ...
- Gamma Correction(伽马校正)
定义 Gamma correction, gamma nonlinearity, gamma encoding, or often simply gamma, is the name of a non ...
- ISP——Gamma Correction
现象 上图是百度上找的一张图,是电子发烧友网站的网友的,如果发现侵权了请告知.觉得这张图能很好的看出不同gamma曲线带给人的直观感受的变化.从上往下看左侧黑色块黑得越来越严重,对比度也在逐渐加深.但 ...
- 伽马矫正(Gamma correction)
在学习HOG描述子时,对图像进行预处理中使用了伽马矫正这个方法,这里对伽马矫正进行简要的介绍. 伽马矫正也称幂律变换,一般用于平滑的扩展暗调的细节.进行伽马矫正的原因是因为人类的眼睛在感知光线时,眼睛 ...
最新文章
- access突然需要登录_早知道早好,微信小程序登录开发需要注意的事项
- 多线程和多进程的差别(小结)
- IE内嵌google chrome frame解决浏览器兼容问题
- Oracle 跨resetlogs的恢复
- 有关内存释放的一些问题
- Android中文API(130) —— Html
- 福禄克宣布推出 FiberLert,口袋大小的实时光纤探测器
- 彻底了解JS中难懂的闭包
- wince手机投屏代码_除了 iOS,这些手机系统你肯定没用过
- string类用法Java_Java中String类的用法
- 微信小程序开发教程+工具插件
- The Tangled Web: A Guide to Securing Modern Web Applications 原版pdf
- 如何用PS缩小图片而清晰度不变?
- 数学建模与数据分析中的主成分分析
- 【View基础知识】TouchSlop、VelocityTracker、GestureDetector、Scroller
- 华为mate50os鸿蒙,华为Mate50将如期发布,屏下镜头+鸿蒙OS,再见iPhone12
- vue 服务器代码更新 浏览器页面不更新
- 为什么要学网络安全?如何学习网络安全?这3个理由告诉你(自己整理的50G网安资料)
- 自然语音处理(NLP)系列(四)——命名实体识别 (NER)
- 姓名脱敏-除姓外为星号*