从对图像增强什么都不知道开始吧。随便搜搜,看的有些乱。
几个概念:
来源:https://zhidao.baidu.com/question/589306011787844365.html
-
ISO:CCD或者CMOS感光元件的感光速度。ISO数值越高就说明该感光元器件的感光能力越强。
-
曝光:是指被摄影物体发出或反射的光线,通过照相机镜头投射到感光片上。
-
ISO的计算公式为H*S=0.8(S感光度,H为曝光量),从公式中我们可以看出,感光度越高,对曝光量的要求就越少。变形公式:H=0.8/s,相同曝光量的前提下,iso50时的曝光时间为iso100时的曝光时间的两倍。
评价指标:
-
峰值信噪比-PSNR(Peak Signal to Noise Ratio):
即增强后的图片X与对应的ground truth图片Y计算MSE,采用平方应该是放大误差。但感觉这样子的话对ground truth要求比较高,一般网络的输出或处理后的图片是较为平滑的,反而ground truth可能存在噪声点。应该先平滑Y吗?n为精度位数,一般为8。
M S E = 1 H ∗ W ∑ i = 1 H ∑ j = 1 W ( X ( i , j ) − Y ( i , j ) ) 2 MSE={1\over H*W} \sum_{i=1}^{H}\sum_{j=1}^{W}(X(i,j)-Y(i,j))^2 MSE=H∗W1i=1∑Hj=1∑W(X(i,j)−Y(i,j))2
P S N R = 10 log 10 ( 2 n − 1 ) 2 M S E PSNR=10\log10{(2^n-1)^2\over{MSE}} PSNR=10log10MSE(2n−1)2 -
结构相似SSIM
SSIM取值为【-1,1】当x与y一致时,SSIM值为1。c1,c1为调节系数。 S S I M ( x , y ) = ( 2 μ x μ y + c 1 ) ( 2 σ x y + x 2 ) ( μ x 2 + μ y 2 + c 1 ) ( σ x 2 + σ y 2 + c 2 ) SSIM(x,y) ={(2\mu _x \mu _y + c1)(2\sigma_{xy}+x2)\over (\mu_x^2+\mu_y^2+c1)(\sigma_x^2+\sigma_y^2+c2) } SSIM(x,y)=(μx2+μy2+c1)(σx2+σy2+c2)(2μxμy+c1)(2σxy+x2)
paper1:Learning to See in the Dark
introduction:
提高照片亮度的方法
- 增加拍照时ISO的设置==》容易引进噪声
- 通过后处理,直方图均衡等==》并不能解决SNR(信噪比signal to noise ratio,噪声还是噪声)
- 增加曝光时间==》时间长容易因相机抖动或物体走动变得模糊
- 开闪光灯等。。。
dataset:we introduce a dataset of raw short-exposure low-light images, with
corresponding long-exposure reference images。
数据集5094张,即训练时一组图片对应的低曝光和高曝光图片。输入为RAW格式的图像(还有一个参数,曝光时间的ratio: ratio of exposure times between input and reference images),输出为RGB图像
网络与语义分割类似,采用FCN。部分细节论文没细说(还有一些概念不是很清楚,没去仔细了解。如X-trans,black level等)
loss为L1 loss,即对应的高曝光图像转RGB格式后再与输出计算loss。
result:
由于自己想要的是能对普通暗光图像增强的。而不是RAW格式的。剩下的没仔细看。
paper2:Deep Retinex Decomposition for Low-Light Enhancement
Retinex理论:
人眼感知颜色是光和物质的相互结果,是光和物质共同产生的结果。
S
(
x
,
y
)
=
R
(
x
,
y
)
∗
L
(
x
,
y
)
(1)
S(x,y)=R(x,y)*L(x,y) \tag 1
S(x,y)=R(x,y)∗L(x,y)(1)
ln
R
(
x
,
y
)
=
ln
S
(
x
,
y
)
−
ln
L
(
x
,
y
)
(2)
\ln R(x,y) = \ln S(x,y) - \ln L(x,y) \tag2
lnR(x,y)=lnS(x,y)−lnL(x,y)(2)
其中
S
(
x
,
y
)
S(x,y)
S(x,y)即人眼所感知到的图像,
R
(
x
,
y
)
R(x,y)
R(x,y)为反射图像(能反映图像真实模样),
L
(
x
,
y
)
L(x,y)
L(x,y)为光照分量。
即,retinex的目标即去除光照影响,得到图像的真实模样。故Retinex理论基本围绕根据S,如何去求得光照分量L,从而得到真实的R(即公式2)。
注:查阅时发现S,R,L的叫法不一。
这篇paper中是用
S
(
s
o
u
r
c
e
)
=
R
(
r
e
f
l
e
c
t
a
n
c
e
)
∗
I
(
i
l
l
u
m
i
n
a
t
i
o
n
)
S(source)=R(reflectance)*I(illumination)
S(source)=R(reflectance)∗I(illumination)表示
- Reflectance describes the intrinsic property of captured objects, which is considered to be consistent under any lightness conditions.
- The illumination represents the various lightness on objects. On low-light images, it usually suffers from darkness and unbalanced illumination distributions.
正文
dataset:作者合成的数据集LOL(Low-light)
网络结构:
网络分3部分, decomposition, adjustment, and reconstruction
- Decomposition:负责将图像分解成reflectance部分和illumination部分。
输入:正常亮度图 S n o r m a l S_{normal} Snormal和低光照图 S l o w S_{low} Slow。
decom-net:即将图像分解,权重共享。(因为做的是同一件事,即将原图分解成R分量和I分量)
由retinex理论,2张输入分解出来的reflectance分量应该相同。 - Adjustment:负责去噪和亮度增强
Denoising Operatio:去掉低光图像所带的大量噪声
Enhance-Net:即对低光照图像的亮度分量进行加强 - Reconstruction
根据 S = R ∗ I S=R*I S=R∗I恢复图像
loss设计:
- decompose-net部分 loss设计:
Loss分2个部分,一部分为decompose-net部分,和enhence-net部分。
注:在retinex理论中有假设光照分量是平滑的。(因为照射过来的光基本可以认为是一致的,而物体的细节部分由Reflect部分表示)
L o s s ( d e c o m − n e t ) = L r e c o n + λ i r L i r + λ i s L i s (1) Loss_{(decom-net)} =L_{recon}+\lambda_{ir}L_{ir}+\lambda_{is}L_{is} \tag1 Loss(decom−net)=Lrecon+λirLir+λisLis(1)
L r e c o n = ∑ i = l o w , n o r m a l ∑ j = l o w , n o r m a l λ i j ∣ ∣ R i ∗ I j − S j ∣ ∣ 1 (2) L_{recon} = \sum_{i=low,normal} \sum_{j=low,normal} \lambda_{ij}||R_i*I_j-S_j||_1 \tag2 Lrecon=i=low,normal∑j=low,normal∑λij∣∣Ri∗Ij−Sj∣∣1(2)
L i r = ∣ ∣ R l o w − R n o r m a l ∣ ∣ 1 (3) L_{ir}=||R_{low}-R_{normal}||_1 \tag3 Lir=∣∣Rlow−Rnormal∣∣1(3)
其中 L r e c o n 和 L i r L_{recon}和L_{ir} Lrecon和Lir很好理解。
对于 L i s L_{is} Lis为平滑亮度分量的loss, ∇ I i \nabla I_i ∇Ii表示的是梯度大小(包括水平和竖直方向),本来需要限制亮度平滑的话,只需要 m i n ∇ I i min\nabla I_i min∇Ii就足够了。但实际上,在物体强结构边缘处就会有问题。虽然假设前提中光照分亮应该平滑,但如下图。方块的四个面材质相同,表现出来的R分量应该相同,但是向光测很亮,背光测的光照分量不应该与向光测相同。因此在结构变化处应该降低其权重 e − λ g R i e^{-\lambda_g R_i} e−λgRi
L i s = ∑ i = l o w , n o r m a l ∣ ∣ ∇ I i ∗ e − λ g R i ∣ ∣ (4) L_{is}=\sum_{i=low,normal}||\nabla I_i*e^{-\lambda_g R_i}|| \tag4 Lis=i=low,normal∑∣∣∇Ii∗e−λgRi∣∣(4)
- enhence-net部分 loss设计:
L o s s ( E n h e n c e − n e t ) = L r e c o n + λ L i s (6) Loss_{(Enhence-net)}=L_{recon} + \lambda L_{is} \tag6 Loss(Enhence−net)=Lrecon+λLis(6)
L r e c o n = ∣ ∣ R l o w ∗ I ^ − S n o r m a l ∣ ∣ 1 (7) L_{recon}=||R_{low}*\hat I- S_{normal}||_1 \tag7 Lrecon=∣∣Rlow∗I^−Snormal∣∣1(7)
L i s 与 L r e c o n L_{is}与L{recon} Lis与Lrecon与decom-net的loss都一样,只是 I ^ \hat I I^为增强后的 I I I
Denoising on Reflectance:
采用的BM3D去噪算法。同时we use a illumination relative strategy (see supplementary material).具体实现没看。
result:
小结
开始时觉得Learning to See in the Dark中的一个参数amplification ratio有点累赘。但应该是挺有必要的一个参数。不然一个暗光图像可以对应很多正常亮度的图像(对应不同的亮度值,亮暗这种直观的感受,本来就是一个范围值),反之也是。若没这个参数限制,则网络的输出值应该不能有很稳定的表现。但是这个参数应该也只限于RAW的数据集才可用吧。
猜测Deep Retinex Decomposition for Low-Light Enhancement的结果有点失真可能有这方面的原因,即不知道该把图像增强到哪种程度。