引言
由于受到环境,光线等的影响,拍摄的照片清晰度和对比度比较低,不能够突出图像中的重点。图像增强就是通过一定手段来增强图像的对比度,使得其中的人物或者事物更加明显,有利于后边的识别等处理。本章介绍几个传统的图像增强算法,并给出matlab实现代码,看一看不同算法的实现效果,最后再介绍一下深度学习在图像增强上的应用。
01
直方图均衡
在直方图中,如果灰度级集中于高灰度区域,图像低灰度就不容易分辨,如果灰度级集中于低灰度区域,那么高灰度就不容易分辨。为了能够让高低灰度都容易分辨,最好的办法是将图像进行转换,使得灰度级分布概率相同。这就是直方图均衡的目的。假设图像经过如下变换:
![97fa282abae94b547a9ab22e75a318b8.png](https://img-blog.csdnimg.cn/img_convert/97fa282abae94b547a9ab22e75a318b8.png)
其中L为灰度级。我们的目的是使得灰度级概率分布相等:
![4c894691212b24a26fcd18bd8e458079.png](https://img-blog.csdnimg.cn/img_convert/4c894691212b24a26fcd18bd8e458079.png)
变换前灰度级分布和变换后灰度级分布关系为:
![49ccba09514b8511e55cc4eedeaf8dfc.png](https://img-blog.csdnimg.cn/img_convert/49ccba09514b8511e55cc4eedeaf8dfc.png)
因此有:
![ede2c8bc1e2899257681075379cca9f2.png](https://img-blog.csdnimg.cn/img_convert/ede2c8bc1e2899257681075379cca9f2.png)
积分有:
![bb6eb92a1c105c49ade5d610ae25f34f.png](https://img-blog.csdnimg.cn/img_convert/bb6eb92a1c105c49ade5d610ae25f34f.png)
用离散化表示:
![daa402935a213da1ce467df0057fb73d.png](https://img-blog.csdnimg.cn/img_convert/daa402935a213da1ce467df0057fb73d.png)
Matlab代码如下:
function histogramEqual imgData=imread('../data/img0.jpg'); gray=rgb2gray(imgData); imshow(gray); imwrite(gray, '../data/gray0.jpg'); %calculate histogram histgramData=linspace(0, 0, 256); [grayRow, grayColumn]=size(gray); grayPixelNumber=grayRow*grayColumn; for i=1:grayRow for j=1:grayColumn histgramData(gray(i, j)+1)=histgramData(gray(i, j)+1)+1; end end %histogram equalization histogramIntegral=linspace(0, 0, 256); for i=1:256 for j=1:i histogramIntegral(i)=histogramIntegral(i)+histgramData(j); end end for i=1:grayRow for j=1:grayColumn gray(i, j)=round(255*histogramIntegral(gray(i, j)+1)/grayPixelNumber); end end imshow(