本文介绍改进INDANE算法的低照度图像增强改进算法(AINDANE算法),《Adaptive and integrated neighborhood-dependent approach for nonlinear enhancement of color images》
INDANE算法文章链接

概述

改进算法同样采用亮度提升和对比度增强两个独立模块分别处理。

1、通过使用非线性传递函数实现的亮度提升。

2、图像通过对比度增强进行处理

算法过程

1、RGB图像

I

r

g

b

I^{rgb}

Irgb转为灰度图像

Y

Y

Y,并归一化为

Y

n

Y_{n}

Yn​

Y

(

x

,

y

)

=

76.245

∗

I

r

(

x

,

y

)

+

19.685

∗

I

g

(

x

,

y

)

+

29.071

∗

I

b

(

x

,

y

)

255

Y(x,y)=\frac{76.245*I^{r}(x,y)+19.685*I^{g}(x,y)+29.071*I^{b}(x,y)}{255}

Y(x,y)=25576.245∗Ir(x,y)+19.685∗Ig(x,y)+29.071∗Ib(x,y)​

Y

n

(

x

,

y

)

=

Y

(

x

,

y

)

255

Y_{n}(x,y)=\frac{Y(x,y)}{255}

Yn​(x,y)=255Y(x,y)​

2、亮度调节:根据下式进行非线性转换,同样是一个非线性gamma映射曲线

Y

n

′

=

(

Y

n

(

0.75

z

+

0.25

)

+

(

1

−

Y

n

)

∗

0.4

∗

(

1

−

z

)

+

Y

n

(

2

−

z

)

)

2

Y_{n}^{'}=\frac{(Y_{n}^{(0.75z+0.25)}+(1-Y_{n})*0.4*(1-z)+Y_{n}^{(2-z)})}{2}

Yn′​=2(Yn(0.75z+0.25)​+(1−Yn​)∗0.4∗(1−z)+Yn(2−z)​)​

其中,改进项是

z

z

z受图像统计数据影响对不同照度图像有不同处理。

z

=

{

0

,

f

o

r

L

<

=

50

L

−

50

100

,

f

o

r

50

<

L

<

=

150

1

,

f

o

r

L

>

150

z=\begin{cases} 0,for L<=50\\ \frac{L-50}{100},for50<L<=150\\1,for L>150 \end{cases}

z=⎩

⎨

⎧​0,forL<=50100L−50​,for50<L<=1501,forL>150​

式中的

L

L

L 表示灰度图像

Y

Y

Y的累计直方图到1%像素总数时的灰阶值,如果

Y

Y

Y很亮,90%的像素值都大于150,则Z=1,则

Y

n

′

=

Y

n

Y_{n}^{'}=Y_{n}

Yn′​=Yn​,相当不处理,优化了正常照度过度提亮的问题。

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

)

R(x,y)

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

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

)

]

p

r(x,y)=[\frac{Y'(x, y)}{Y(x, y)}]^{p}

r(x,y)=[Y(x,y)Y′(x,y)​]p

其中,改进项是引入参数

p

p

p 改善图像对比度,

p

p

p受图像标准差影响对数据有不同处理,

p

p

p计算如下:

p

=

{

3

,

f

o

r

σ

<

=

3

27

−

2

σ

7

,

f

o

r

3

<

σ

<

=

7

1

,

f

o

r

σ

>

7

p=\begin{cases} 3,for \sigma<=3\\ \frac{27-2\sigma}{7},for3<\sigma<=7\\1,for \sigma>7 \end{cases}

p=⎩

⎨

⎧​3,forσ<=3727−2σ​,for3<σ<=71,forσ>7​

其中,

σ

\sigma

σ表示全局图像均方差(global standard deviation)。当全局均方差小于3时表示图像对比度很差,此时

P

P

P取大值。

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处理效果、AINDANE处理效果




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




图、测试图像3、INDANE处理效果、AINDANE处理效果




图、测试图像4、INDANE处理效果、AINDANE处理效果

算法总结

相较INDANE算法,主要改进点在步骤2、4统计图像数据对亮度调节和对比度增强两个模块进行分别优化,达到算法应用普适化的效果,即对正常照度对比度好的图像微处理。

【阅读笔记】低照度图像增强-《Adaptive and integrated neighborhood-dependent approach for nonlinear enhancement of的更多相关文章

  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. 【前端基础】(二)promise异步编排

    ☆promise异步编排 javascript众所周知只能支持单线程,因此各种网络请求必须异步发送,导致可能会出现很多问题,比如如下我们有三个文件,现在要求进行如下请求: ① 查出当前用户信息 ② 根 ...

  2. pytorch图像处理基础

    pytorch 图像预处理transforms from torchvision.transforms import transforms transforms.Compose() 作用:将一系列的t ...

  3. odoo 开发入门教程系列-模块交互

    模块交互 在上一章中,我们使用继承来修改模块的行为.在我们的房地产场景中,我们希望更进一步,能够为客户生成发票.Odoo提供了一个开发票模块,因此直接从我们的房地产模块创建发票是很简单的,也就是说,一 ...

  4. DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

    DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮. 这场风潮对数字世 ...

  5. HDCTF_2023

    pwnner 附件 有后门函数,seed是一个固定值, //伪随机数 #include <stdio.h> #include <stdlib.h> int main() { i ...

  6. Sementic Kernel 案例之网梯科技在线教育

    2023年4月25日,微软公布了2023年第一季度财报,营收528亿美元, 微软CEO纳德称,「世界上最先进的AI模型与世界上最通用的用户界面--自然语言--相结合,开创了一个新的计算时代.」该公司有 ...

  7. 希望所有计算机学生能看到这篇c语言教程

    大部分程序员走入编程世界第一个学习的语言就是C语言. 作为一门古老的编程语言,c语言拥有48年的发展历程. 为什么要学习 C语言? C语言是学习计算机程序设计语言的入门语言.最全面的编程面试网站 C语 ...

  8. 2020-11-15:手写代码:行有序、列也有序的二维数组中,找num,找到返回true,否则false?

    福哥答案2020-11-15: 此题来源于leetcode240和剑指 Offer(第 2 版)面试题4.1.线性查找.从二维数组的坐下角开始查找.如果当前元素等于目标值,则返回 true.如果当前元 ...

  9. 2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量。选择num个居民点建立num个 邮局,使

    2021-04-30:一条直线上有居民点,邮局只能建在居民点上.给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量.选择num个居民点建立num个 邮局,使 ...

  10. Rust如何引入源码作为依赖

    问题描述 通常我们在rust项目中引入第三方依赖包时,会直接指定包的版本,这种方式指定后,Cargo在编译时会从crates.io这个源中下载这些依赖包. [package] name = " ...