本文介绍改进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. docker 容器操作、应用部署、mysql,redis,nginx、迁移与备份、Dockerfile

    容器操作 # 启动容器 docker start 容器id # 停止容器 docker stop 容器id # 文件拷贝 先创建文件 mkdir:文件夹 vi vim touch:文件 # 容器的文件 ...

  2. Restless API 与 Restful API

    Restful  API: 1.CURD(增删改查) 由请求方式决定 2.请求方式有:get/post/delete/put 3.同一个路径可以进行多个操作 Restless API 1.CURD(增 ...

  3. React课堂笔记1

    一.概要 React是用于构建用户界面的MVVM框架. React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它.认为它可能是将来Web开发的主流工具之一. 官网:https://z ...

  4. Java学习笔记03

    1. 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.所以,我们必须清楚每条语句的执行流程.而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能. 1.1 分 ...

  5. Yapi及Swgger使用+注解

    1.Yapi 1.1 介绍 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供 ...

  6. 如何在 .NET Core WebApi 中处理 MultipartFormDataContent 中的文件

    在上一篇文章(如何在 .NET Core WebApi 中处理 MultipartFormDataContent)中,我们有描述过如何以最简单的方式在 .NET Core WebApi 中处理 Mul ...

  7. 对doccano自动标注使用的默认UIE模型进行微调以提高特定领域的实体识别能力,提高标注速度

    虽然doccano的自动标注使用默认的UIE模型可以识别出一定的实体,但是在特定领域或者因为实体类别名不能被理解很多实体是识别不了的,所以我们可以通过自己标注的数据对模型进行微调来满足我们Auto L ...

  8. node服务容器 serve 和 http-serve

    参考:https://www.cnblogs.com/leee/p/5502727.html 项目打包文件本地起serve运行 不能直接双击index.html文件直接运行 放到http容器里运行 s ...

  9. Spring源码:bean的生命周期(一)

    前言 本节将正式介绍Spring源码细节,将讲解Bean生命周期.请注意,虽然我们不希望过于繁琐地理解Spring源码,但也不要认为Spring源码很简单.在本节中,我们将主要讲解Spring 5.3 ...

  10. C++ Primer 5th 阅读笔记:入门指南

    学习方法 The way to learn a new programming language is to write programs. 学习一门新编程语言的方式是编写程序. 函数(Functio ...