基于深度学习的传统图像增强算法

引言
由于受到环境,光线等的影响,拍摄的照片清晰度和对比度比较低,不能够突出图像中的重点。图像增强就是通过一定手段来增强图像的对比度,使得其中的人物或者事物更加明显,有利于后边的识别等处理。本章介绍几个传统的图像增强算法,并给出matlab实现代码,看一看不同算法的实现效果,最后再介绍一下深度学习在图像增强上的应用。
1. 直方图均衡
在直方图中,如果灰度级集中于高灰度区域,图像低灰度就不容易分辨,如果灰度级集中于低灰度区域,那么高灰度就不容易分辨。为了能够让高低灰度都容易分辨,最好的办法是将图像进行转换,使得灰度级分布概率相同。这就是直方图均衡的目的。假设图像经过如下变换:
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(gray);
imwrite(gray, '../output/histogramequal.jpg');
end
处理结果:
图1.1 直方图均衡化结果(左)原图像(右)结果
2. gamma变换
gamma变换主要用于图像修正,将灰度过高或者过低的图片进行修正,增强对比度。变换公式是对每个像素进行乘积运算:
从下图的gamma曲线中可以看出其变换原理:
图2.1 图像gamma变换
从图中可以看出当r值大于1,会拉伸图像中灰度级较高的区域,压缩灰度级较低部分;当r值小于1时,会拉伸灰度级较低部分,而压缩灰度级较高部分。这样来调整图像对比度。
matlab代码:
function imagegamma(r)
imgdata=imread('../data/img0.jpg');
gray=rgb2gray(imgdata);
[grayrow, graycolumn]=size(gray);
gray=double(gray);
for i=1:grayrow
for j=1:graycolumn
gray(i, j)=255*((gray(i, j)/255)^r);
gray(i, j)=round(gray(i, j));
end
end
gray=uint8(gray);
filename='../output/gamma';
filesuf='.jpg';
gammastr=num2str(r);
file=[filename, gammastr, filesuf];
imshow(gray);
imwrite(gray, file);
end
结果如下:
图2.2 gamma变换(左)r=0.5(右)r=1.5
3. laplace变换
对图像进行二阶微分操作可以突出图像边缘,增强细节。通常希望构造一个同性滤波器,其对图像方向的变化不敏感。一个最简单的同性滤波器就是laplace算子,定义为:
matlab代码为:
% g(x, y)=f(x, y)+c*delta2 f(x, y)
function laplace(c)
imgdata=imread('../data/img0.jpg');
gray=rgb2gray(imgdata);
[grayrow, graycolumn]=size(gray);
gray=double(gray);
%laplace
laplaceplate=[0, 1, 0; 1, -4, 1; 0, 1, 0];
laplaceresult=zeros(grayrow, graycolumn);
laplacegray=zeros(grayrow, graycolumn);
laplacegray=double(laplacegray);
for i=1:grayrow
for j=1:graycolumn
for k=-1:1
for n=-1:1
if (i+k>=1) && (i+k=1) && (j+n grayvalue=gray(i+k, j+n);
else
grayvalue=0;
end
laplaceresult(i, j)=laplaceresult(i, j)+laplaceplate(k+2, n+2)*grayvalue;
end
end
laplacegray(i, j)=round(gray(i, j)+c*laplaceresult(i, j));
end
end
maxlaplacegray=max(max(laplacegray));
minlaplacegray=min(min(laplacegray));
laplacegray=((laplacegray-minlaplacegray) .* 255) ./(maxlaplacegray-minlaplacegray);
laplacegray=uint8(laplacegray);
filename='../output/laplace';
filesuf='.jpg';
gammastr=num2str(c);
file=[filename, gammastr, filesuf];
figure('name', 'gray');
imshow(laplacegray);
figure('name', 'laplace');
imshow(laplaceresult);
imwrite(laplacegray, file);
imwrite(laplaceresult, '../output/laplaceresult.jpg');
end
结果为:
图3.1 laplace算子增强(上左)laplace变换结果(上右)c=0.5(下)c=0.8
4. retix算法
retix是一种建立在光学物理特性基础上的算法,假设入射光l(x, y)入射到物体上,经过反射r(x, y),进入到人眼的光变为:
为了降低卷积运算的的运算量,我们取了7x7的高斯卷积模板。
matlab代码为:
function singleretix(c)
imgdata=imread('../data/img0.jpg');
gray=rgb2gray(imgdata);
[grayrow, graycolumn]=size(gray);
gray=double(gray);
gaussconv=zeros(grayrow, graycolumn);
for i=1:grayrow
for j=1:graycolumn
for k=-3:3
for n=-3:3
gaussvalue=two_d_gauss(k, n, c);
if (i+k>=1) && (i+k=1) && (j+n grayvalue=gray(i+k, j+n);
else
grayvalue=0;
end
gaussconv(i, j)=gaussconv(i, j)+grayvalue*gaussvalue;
end
end
end
end
gray=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);
filename='../output/retix';
filesuf='.jpg';
gammastr=num2str(c);
file=[filename, gammastr, filesuf];
figure('name', 'processed');
imshow(reflectgray);
imwrite(reflectgray, file);
end
function res=two_d_gauss(x, y, c)
res=(1/sqrt(2*pi*c))*(-(x^2+y^2)/c^2);
end
结果:
图4.1 retix结果(左)sigma=90(右)sigma=150
5. 基于深度学习的图像增强
ll-net是第一个用深度学习来增强图像的方法。在其论文中使用自动编码器从表示学习的角度来解决低光图像增强的问题,这些自动编码器经过训练以学习低光图像中的基础信号特征并自适应地增亮和去噪。ll-net借鉴了ssda网络的稀疏特性,可以用来去除图像中噪声。运用网络的泛华能力来提供低照度下的测试图片,让网络来学习到图片的特征,从而降低噪声,提高图像对比度。
网络结构如下:
图5.1 ll-net网络结构
结果为:
图5.2 结果
结论
本文介绍了四种传统的图像增强算法,以及一种基于深度学习的方法。


车企竞相“入股”元宇宙,美格智能着力打造制胜秘诀
霍尔传感器AH694在汽车电子节温器模块的应用
受后疫情时代拉动经济的影响,中国联通对 5G 基站进行智能化关闭
纯电动汽车整车结构图及能量回收控制过程
HUAWEIMate 20系列又有什么“黑科技”
基于深度学习的传统图像增强算法
集成放大器冷结补偿的热电偶温度测量系统
手机无线充电的技术原理是什么
rfid标签对于防盗系统有没有什么帮助
IC封装供应链受芯片需求影响 封装现货短缺局势越加严重
苹果iOS11对比谷歌Android O谁更好?两款系统你会选择谁?
英伟达大陆市场定制版新显卡明年推出!
第四季度期末特斯拉拥有现金和现金等价物37亿美元,因此偿债应不是问题
常用的ESD保护器件及原理
浅谈功放A/B/AB/C/D类的区别
小米正在大幅度增加明年的工厂订单?
电子连接器的耐用性
适用于1MP/60fps摄像头、37.5MHz 100MHz、10位/12位的串化器MS933NA
马自达CX-2紧凑SUV,这款新车即将引爆市场,只因售价方面十分给力!对于这款车,你有怎样的看法?
最常见的目标跟踪算法