0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:AI加速微信公众号 作者:AI加速微信公众号 2020-11-11 16:28 次阅读

引言

由于受到环境,光线等的影响,拍摄的照片清晰度和对比度比较低,不能够突出图像中的重点。图像增强就是通过一定手段来增强图像的对比度,使得其中的人物或者事物更加明显,有利于后边的识别等处理。本章介绍几个传统的图像增强算法,并给出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;
fori=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 结果

结论

本文介绍了四种传统的图像增强算法,以及一种基于深度学习的方法。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像增强算法

    关注

    0

    文章

    4

    浏览量

    5368
  • 深度学习
    +关注

    关注

    73

    文章

    5415

    浏览量

    120485
收藏 人收藏

    评论

    相关推荐

    图像识别算法都有哪些方法

    传统方法和基于 深度 学习的方法。 传统 图像识别 算法1.1 边缘检测 边缘检测是
    的头像 发表于07-16 11:14 3263次阅读

    图像识别算法的提升有哪些

    引言 图像识别是计算机视觉领域的核心任务之一,旨在使计算机能够自动地识别和理解 图像中的内容。随着计算机硬件的发展和 深度 学习技术的突破, 图像
    的头像 发表于07-16 11:12 366次阅读

    深度学习算法在嵌入式平台上的部署

    随着人工智能技术的飞速发展, 深度 学习 算法在各个领域的应用日益广泛。然而,将 深度 学习 算法部署到资源
    的头像 发表于07-15 10:03 610次阅读

    利用Matlab函数实现深度学习算法

    在Matlab中实现 深度 学习 算法是一个复杂但强大的过程,可以应用于各种领域,如 图像识别、自然语言处理、时间序列预测等。这里,我将概述一个基本的流程,包括环境设置、数据准备、模型设计、训
    的头像 发表于07-14 14:21 921次阅读

    深度学习的基本原理与核心算法

    随着大数据时代的到来, 传统机器 学习方法在处理复杂模式上的局限性日益凸显。 深度 学习(Deep Learning)作为一种新兴的人工智能技术,以其强大的非线性表达能力和自
    的头像 发表于07-04 11:44 850次阅读

    深度学习传统机器学习的对比

    在人工智能的浪潮中,机器 学习深度 学习无疑是两大核心驱动力。它们各自以其独特的方式推动着技术的进步,为众多领域带来了革命性的变化。然而,尽管它们都属于机器 学习的范畴,但
    的头像 发表于07-01 11:40 510次阅读

    深度解析深度学习下的语义SLAM

    随着 深度 学习技术的兴起,计算机视觉的许多 传统领域都取得了突破性进展,例如目标的检测、识别和分类等领域。近年来,研究人员开始在视觉SLAM 算法中引入
    发表于04-23 17:18 903次阅读
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>学习</b>下的语义SLAM

    详解深度学习、神经网络与卷积神经网络的应用

    在如今的网络时代,错综复杂的大数据和网络环境,让 传统信息处理理论、人工智能与人工神经网络都面临巨大的挑战。近些年, 深度 学习逐渐走进人们的视线,通过 深度
    的头像 发表于01-11 10:51 1498次阅读
    详解<b class='flag-5'>深度</b><b class='flag-5'>学习</b>、神经网络与卷积神经网络的应用

    目前主流的深度学习算法模型和应用案例

    深度 学习在科学计算中获得了广泛的普及,其 算法被广泛用于解决复杂问题的行业。所有 深度 学习 算法都使用
    的头像 发表于01-03 10:28 1092次阅读
    目前主流的<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>算法</b>模型和应用案例

    深度学习如何训练出好的模型

    算法工程、数据派THU 深度 学习在近年来得到了广泛的应用,从 图像识别、语音识别到自然语言处理等领域都有了卓越的表现。但是,要训练出一个高效准确的 深度
    的头像 发表于12-07 12:38 914次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>如何训练出好的模型

    关于利用传统图像处理方法瑕疵检测总结

    最近做 图像处理与识别相关的事情,先从OpenCV/Matlab入手,看 传统 算法在瑕疵检测方向能做到什么程度。   因之前并没有相关的经验,乍开始生怕闭门造车,遂多方搜寻,相关的会议与论述很多,不乏
    的头像 发表于11-20 15:19 628次阅读

    深度学习算法传统机器视觉助力工业外观检测

    在很多人眼里, 深度 学习是一个非常神奇的技术,是人工智能的未来,是机器 学习的圣杯。今天深视创新带您一起揭开他神秘的面纱,了解什么才是 深度 学习
    的头像 发表于11-09 10:58 549次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>算法</b>和<b class='flag-5'>传统</b>机器视觉助力工业外观检测

    深度学习图像语义分割指标介绍

    深度 学习图像语义分割上已经取得了重大进展与明显的效果,产生了很多专注于 图像语义分割的模型与基准数据集,这些基准数据集提供了一套统一的批判模型的标准,多数时候我们评价一个模型的性能会从
    发表于10-09 15:26 297次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>图像</b>语义分割指标介绍

    瑞萨电子深度学习算法在缺陷检测领域的应用

    浪费大量的人力成本。因此,越来越多的工程师开始将 深度 学习 算法引入缺陷检测领域,因为 深度 学习在特征提取和定位方面取得了非常好的效果。
    的头像 发表于09-22 12:19 697次阅读
    瑞萨电子<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>算法</b>在缺陷检测领域的应用

    深度学习在医学图像分割与病变识别中的应用实战

    地观察和分析。然而,医学 图像常常具有复杂的结构、噪声干扰和不同的病变特征,使得 传统图像处理方法难以取得令人满意的结果。基于 深度 学习的方法通
    发表于09-04 11:11