本文介绍的是一种比较实用的低照度图像增强算法,选自2004年Tao的一篇论文,名称是《An Integrated Neighborhood Dependent Approach for Nonlinear Enhancement of Color Images 》

概述

图像中暗区图像增强的基本机制是对图像的亮度进行动态范围压缩,但是图像的对比度会下降,输出图像看起来会变灰。为了提高图像的整体质量,必须应用对比度增强过程来恢复甚至增强原始图像的对比度信息。本文采用亮度提升和对比度增强两个独立模块分别处理。

1、通过使用非线性传递函数实现的亮度提升。可以手动或自动调整该传递函数以实现适当的亮度增强。

2、图像通过对比度增强进行处理,与传统技术不同,对比度增强是基于处理后(中心)像素及其周围相邻像素的强度信息的自适应过程。通过使用具有高斯核卷积来获得周围像素的亮度信息。具有相同亮度的像素可能根据其邻近像素具有不同的输出。可以最佳地增强图像对比度和细节,同时可以在不降低图像质量的情况下控制动态范围扩展。

算法过程

1、RGB图像

I

r

g

b

I^{rgb}

Irgb转为灰度图像

Y

Y

Y,并归一化为

Y

n

Y_{n}

Yn​

2、根据下式进行非线性转换

Y

n

=

(

Y

n

0.24

+

(

1

Y

n

)

0.5

+

Y

n

2

)

2

Y_{n}^{'}=\frac{(Y_{n}^{0.24}+(1-Y_{n})*0.5+Y_{n}^{2})}{2}

Yn′​=2(Yn0.24​+(1−Yn​)∗0.5+Yn2​)​

这种变换可以很大程度上提高暗像素(区域)的亮度,而亮像素(区域)的亮度增强较低,甚至是负增强。从而达到较好的效果

一个非线性gamma映射曲线

3、对灰度图像

Y

Y

Y进行不同尺度的高斯核函数卷积运算,得到模糊图像

Y

Y'

Y′,卷积公式如下:

Y

(

x

,

y

)

=

Y

(

x

,

y

)

G

(

x

,

y

)

Y'(x, y) = Y(x, y) * G(x, y)

Y′(x,y)=Y(x,y)∗G(x,y)

高斯卷积核

G

(

x

,

y

)

G(x,y)

G(x,y)如下:

G

(

x

,

y

)

=

K

e

(

(

x

2

+

y

2

)

c

2

)

G(x,y)=K*e^{(\frac{-(x^2+y^2)}{c^2})}

G(x,y)=K∗e(c2−(x2+y2)​)

其中,

K

K

K函数

K

e

(

(

x

2

+

y

2

)

c

2

)

d

x

d

y

=

1

\iint K*e^{(\frac{-(x^2+y^2)}{c^2})}dxdy=1

∬K∗e(c2−(x2+y2)​)dxdy=1

其中,

c

c

c是高斯函数尺度;

4、通过下式得到增强系数

R

R

R

R

(

x

,

y

)

=

255

Y

n

(

x

,

y

)

r

(

x

,

y

)

R(x,y) =255* Y_{n}^{'}(x,y)^{r(x,y)}

R(x,y)=255∗Yn′​(x,y)r(x,y)

其中,

r

(

x

,

y

)

r(x,y)

r(x,y)如下

r

(

x

,

y

)

=

Y

(

x

,

y

)

Y

(

x

,

y

)

r(x,y)=\frac{Y'(x, y)}{Y(x, y)}

r(x,y)=Y(x,y)Y′(x,y)​

中心像素的亮度可以根据

R

(

x

y

)

R(x,y)

R(x,y)是否大于或小于1(由较亮像素或较暗像素包围)而增加或减少。

5、为了获得最佳的图像增强效果,使用不同尺度的多个卷积结果进行对比度增强。最终的输出是基于多个尺度的对比度增强结果的线性组合

R

(

x

,

y

)

=

i

w

i

R

i

(

x

,

y

)

R(x,y)=\sum_{i}w_{i}R_{i}(x,y)

R(x,y)=i∑​wi​Ri​(x,y)

尺度选择5, 20 and 240,权重为取均值

6、RGB三通道等比例恢复

R

j

(

x

,

y

)

=

R

(

x

,

y

)

I

j

(

(

x

,

y

)

I

(

(

x

,

y

)

λ

R_{j}(x,y)=R(x,y)*\frac{I_{j}((x,y)}{I((x,y)}*\lambda

Rj​(x,y)=R(x,y)∗I((x,y)Ij​((x,y)​∗λ

其中,

j

j

j表示rgb三通道分量,

R

j

R_j

Rj​是增强图像。

λ

\lambda

λ表示色调调节因子,通常取1也可,输出的彩色图像可以通过色彩饱和度和白平衡调整进一步细化。

效果对比


图、测试图像1、INDANE处理效果


图、测试图像2、INDANE处理效果

算法总结

算法本质是暗区提亮gamma曲线映射实现,亮区不处理或者轻微处理。后续对比度处理精细化增强系数,需要多尺度高斯核函数卷积。
非线性gamma曲线如图下蓝线,线性映射如黄色线:

【阅读笔记】低照度图像增强-《An Integrated Neighborhood Dependent...的更多相关文章

  1. Mysql DOC阅读笔记

    Mysql DOC阅读笔记 转自我的Github Speed of SELECT Statements 合理利用索引 隔离调试查询中花费高的部分,例如函数调用是在结果集中的行执行还是全表中的行执行 最 ...

  2. [置顶] 人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  3. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  4. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  5. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  6. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  7. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  8. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

  9. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  10. Hadoop阅读笔记(五)——重返Hadoop目录结构

    常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...

随机推荐

  1. mysql数据库常见优化方法

    1,创建适当的索引(主键索引.唯一索引.普通索引.全文索引.空间索引). 2,对sql语句进行优化--->慢查询(explain). 3,使用分表技术(水平分表,垂直分表),分区技术. 4,读写 ...

  2. DeFi-W3

    Gas Fee 每一笔交易都会产生Gas Fee. GWei ETH的最小单位 出价(gas fee)的高低会影响交易上联的速度,越快就价格越高. gas fee是跟具体的计算量有关的 Smart c ...

  3. DRF的Serializer组件(源码分析)

    DRF的Serializer组件(源码分析) 1. 数据校验 drf中为我们提供了Serializer,他主要有两大功能: 对请求数据校验(底层调用Django的Form和ModelForm) 对数据 ...

  4. 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟

    目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 CH32V 存储容量命 ...

  5. Redis之消息队列实现

    文章目录 秒杀场景 采用消息队列实现 List实现消息队列 PubSub(发布订阅)实现消息队列 基于Stream实现消息队列 消费者组 实践 总结 秒杀问题是非常重要且比较难实现的,如果不进行架构的 ...

  6. FreeSSL申请免费证书

    FreeSSL申请免费证书 FreeSSL 是一个免费证书和 SSL 证书管理平台.旨在为个人和小型企业提供免费 SSL 证书,以加强他们的网站和应用程序的安全性.与传统的 SSL 证书颁发机构不同, ...

  7. 【Redis】持久化实现(RDB、AOF)

    一.Redis RDB 持久化 1.RDB 工作原理 RDB(Redis Database)基于时间进行生成数据快照,默认只保留当前最新数据状态,优点时执行速度较快,但上次数据保存点到当前时间点之间的 ...

  8. DevOps|AGI : 智能时代研发效能平台新引擎(上)

    AGI 的出现,给了我们一个新视角去审视我们做过的系统,尤其是研发效能平台.研发效能平台作为一个工具平台,本质就是提高公司整体产研的效率.AGI 的快速进步大家已经有目共睹,本文就是在项目协同,代码管 ...

  9. 2021-06-01:K个逆序对数组。给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数。逆序对的定义如下:对于数组的第i个和第 j个元素,如果满

    2021-06-01:K个逆序对数组.给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数.逆序对的定义如下:对于数组的第i个和第 j个元素,如果满 ...

  10. 2021-10-19:缺失的区间。给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。力扣163。

    2021-10-19:缺失的区间.给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间.力扣163. 福大大 答案2021-1 ...