图像增强算法常见于对图像的亮度、对比度、饱和度、色调等进行调节,增加其清晰度,减少噪点等,常见的方法有直方图均衡化、Gamma变换、Laplace变换、Retinex算法、基于深度学习的图像增强。
概述
图像增强算法常见于对图像的亮度、对比度、饱和度、色调等进行调节,增加其清晰度,减少噪点等。
图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则为高通滤波器,当然增强一副图像是为最后获取图像有用信息服务为主。
一般的算法流程可为:图像去燥、增加清晰度(对比度)、灰度化或者获取图像边缘特征或者对图像进行卷积二值化等,上述四个步骡往往可以通过不同的步骡进行实现.后续将针对此内真内容进行专题实验、列举其应用场景和处理特点。
常用图像分类算法
直方图均衡
在直方图中,如果灰度级集中于高灰度区域,图像低灰度就不容易分辨,如果灰度级集中于低灰度区域,那么高灰度就不容易分辨。为了能够让高低灰度都容易分辨,最好的办法是将图像进行转换,使得灰度级分布概率相同。这就是直方图均衡的目的。假设图像经过如下变换:
其中L为灰度级。我们的目的是使得灰度级概率分布相等:
变换前灰度级分布和变换后灰度级分布关系为:
因此有:
用离散化表示:
实际效果如下图所示(左)原图像(右)结果:
算法优缺点:如果直接对彩色图像R,G,B三通道分别均衡化后再合并,极容易出现颜色不均、失真等问题,所以,一般会将RGB图像转换到YCrCb空间,对Y通道进行均衡化(Y通道代表亮度成分)
Gamma变换
Gamma变换主要用于图像修正,将灰度过高或者过低的图片进行修正,增强对比度。变换公式是对每个像素进行乘积运算:
从下图的gamma曲线中可以看出其变换原理:
从图中可以看出当r值大于1,会拉伸图像中灰度级较高的区域,压缩灰度级较低部分;当r值小于1时,会拉伸灰度级较低部分,而压缩灰度级较高部分。这样来调整图像对比度。
实际效果如下图所示(左)r=0.5(右)r=1.5:
Laplace变换
对图像进行二阶微分操作可以突出图像边缘,增强细节。通常希望构造一个同性滤波器,其对图像方向的变化不敏感。一个最简单的同性滤波器就是laplace算子,定义为:
将laplace变换的结果按照一定比例加入到原灰度图像中:
即可以来突出对比度。
Retix算法
视网膜-大脑皮层(Retinex)理论认为世界是无色的,人眼看到的世界是光与物质相互作用的结果,也就是说,映射到人眼中的图像和光的长波(R)、中波(G)、短波(B)以及物体的反射性质有关。
其中I是人眼中看到的图像,R是物体的反射分量,L是环境光照射分量,(x, y)是二维图像对应的位置
它通过估算L来计算R,具体来说,L可以通过高斯模糊和I做卷积运算求得,用公式表示为:
其中F FF是高斯模糊的滤波器, *表示卷积运算
其中 σ 称为高斯周围空间常数(Gaussian Surround Space Constant),也就是算法中所谓的尺度,对图像处理有比较大的影响。
实际效果如下图所示:
基于深度学习的图像增强
LL-NET是第一个用深度学习来增强图像的方法。在其论文中使用自动编码器从表示学习的角度来解决低光图像增强的问题,这些自动编码器经过训练以学习低光图像中的基础信号特征并自适应地增亮和去噪。LL-NET借鉴了SSDA网络的稀疏特性,可以用来去除图像中噪声。运用网络的泛华能力来提供低照度下的测试图片,让网络来学习到图片的特征,从而降低噪声,提高图像对比度。
网络结构如下:
实际效果如下图所示:
文章来源:https://aistudio.baidu.com/projectdetail/5073577
《Android Camera开发入门》、《Camx初认识》已经上架,可以点击了解 -> 小驰成长圈 |期待见证彼此的成长
觉得不错,点个赞呗