引言
由于受到环境,光线等的影响,拍摄的照片清晰度和对比度比较低,不能够突出图像中的重点。图像增强就是通过一定手段来增强图像的对比度,使得其中的人物或者事物更加明显,有利于后边的识别等处理。本章介绍几个传统的图像增强算法,并给出matlab实现代码,看一看不同算法的实现效果,最后再介绍一下深度学习在图像增强上的应用。
01
直方图均衡
在直方图中,如果灰度级集中于高灰度区域,图像低灰度就不容易分辨,如果灰度级集中于低灰度区域,那么高灰度就不容易分辨。为了能够让高低灰度都容易分辨,最好的办法是将图像进行转换,使得灰度级分布概率相同。这就是直方图均衡的目的。假设图像经过如下变换:
其中L为灰度级。我们的目的是使得灰度级概率分布相等:
变换前灰度级分布和变换后灰度级分布关系为:
因此有:
积分有:
用离散化表示:
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(
版权声明:本文为weixin_42354944原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。