%histogramequalizationhistogramIntegral=linspace(0,0,256);fori=1:256forj=1:ihistogramIntegral(i)=histogramIntegral(i)+histgramData(j);endend
fori=1:grayRowforj=1:grayColumngray(i,j)=round(255*histogramIntegral(gray(i,j)+1)/grayPixelNumber);endend
处理结果:
图1.1直方图均衡化结果(左)原图像(右)结果
2.Gamma变换
Gamma变换主要用于图像修正,将灰度过高或者过低的图片进行修正,增强对比度。变换公式是对每个像素进行乘积运算:
从下图的gamma曲线中可以看出其变换原理:
图2.1图像gamma变换
从图中可以看出当r值大于1,会拉伸图像中灰度级较高的区域,压缩灰度级较低部分;当r值小于1时,会拉伸灰度级较低部分,而压缩灰度级较高部分。这样来调整图像对比度。
Matlab代码:functionimageGamma(r)
gray=double(gray);
fori=1:grayRowforj=1:grayColumngray(i,j)=255*((gray(i,j)/255)^r);gray(i,j)=round(gray(i,j));endendgray=uint8(gray);
end
结果如下:
图2.2gamma变换(左)r=0.5(右)r=1.5
3.Laplace变换
Matlab代码为:
%g(x,y)=f(x,y)+c*delta2f(x,y)
functionlaplace(c)
结果为:
图3.1laplace算子增强(上左)laplace变换结果(上右)C=0.5(下)C=0.8
4.Retix算法
为了降低卷积运算的的运算量,我们取了7x7的高斯卷积模板。
functionsingleRetix(c)
gaussConv=zeros(grayRow,grayColumn);fori=1:grayRowforj=1:grayColumnfork=-3:3forn=-3:3gaussValue=two_d_gauss(k,n,c);if(i+k>=1)&&(i+k=1)&&(j+ngrayValue=gray(i+k,j+n);elsegrayValue=0;endgaussConv(i,j)=gaussConv(i,j)+grayValue*gaussValue;endendendendgray=log(gray);gaussConv=log(gaussConv);reflectGray=exp(gray-gaussConv);maxReflectGray=max(max(reflectGray));minReflectGray=min(min(reflectGray));reflectGray=((reflectGray-minReflectGray).*255)./(maxReflectGray-minReflectGray);reflectGray=uint8(reflectGray);
functionres=two_d_gauss(x,y,c)res=(1/sqrt(2*pi*c))*(-(x^2+y^2)/c^2);end
结果:
图4.1Retix结果(左)sigma=90(右)sigma=150
5.基于深度学习的图像增强
网络结构如下:
图5.1LL-NET网络结构
图5.2结果
结论
本文介绍了四种传统的图像增强算法,以及一种基于深度学习的方法。
编辑:hfy
长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)