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;
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 结果

结论

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

编辑:hfy

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

    关注

    0

    文章

    4

    浏览量

    5473
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123915
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课(11大系列课程,共5000+分钟)

    ,形成\"传统视觉算法深度学习建模→工业级部署\"的完整技术链,帮助学员掌握从0到1搭建缺陷检测系统的能力,响应制造业\"提质降本增效\"的核心需求。 团购课程
    发表于 12-04 09:28

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战可(11大系列课程,共5000+分钟)

    %)为主要就业领域 本次团购通过整合11大系列课程,形成\"传统视觉算法深度学习建模→工业级部署\"的完整技术链,帮助学员掌握从0到1搭建缺陷检测系统的能力,响应制造业\"提
    发表于 12-03 13:50

    从0到1,10+年资深LabVIEW专家,手把手教你攻克机器视觉+深度学习(5000分钟实战课)

    “告别检测系统能力缺陷!10+年LabVIEW视觉资深专家手把手教你:5000+分钟高清教程(含工具、算法原理、实战操作、项目优化全流程讲解)”——从传统视觉算法深度
    的头像 发表于 12-02 08:07 114次阅读
    从0到1,10+年资深LabVIEW专家,手把手教你攻克机器视觉+<b class='flag-5'>深度</b><b class='flag-5'>学习</b>(5000分钟实战课)

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于
    的头像 发表于 11-27 10:19 58次阅读

    京东拍立淘API开发指南:从零开始构建图像搜索应用

    京东图片识别搜索API(拍立淘)是基于深度学习的视觉搜索服务,通过卷积神经网络提取图像特征向量,结合近似最近邻搜索算法实现商品精准匹配‌。该技术解决了
    的头像 发表于 11-09 17:40 1958次阅读

    基于FPGA的CLAHE图像增强算法设计

    CLAHE图像增强算法又称为对比度有限的自适应直方图均衡算法,其算法原理是通过有限的调整图像局部
    的头像 发表于 10-15 10:14 406次阅读
    基于FPGA的CLAHE<b class='flag-5'>图像</b><b class='flag-5'>增强</b><b class='flag-5'>算法</b>设计

    Photonis 科学图像增强器介绍

    对于寻求先进图像增强技术的增强相机制造商,Photonis 提供具有无与伦比规格的科学级图像增强管。其中包括市场领先的信噪比 (SNR)、卓
    的头像 发表于 09-19 09:20 233次阅读
    Photonis 科学<b class='flag-5'>图像</b><b class='flag-5'>增强</b>器介绍

    深度学习对工业物联网有哪些帮助

    、实施路径三个维度展开分析: 一、深度学习如何突破工业物联网的技术瓶颈? 1. 非结构化数据处理:解锁“沉睡数据”价值 传统困境 :工业物联网中70%以上的数据为非结构化数据(如设备振动波形、红外
    的头像 发表于 08-20 14:56 765次阅读

    自动驾驶中Transformer大模型会取代深度学习吗?

    [首发于智驾最前沿微信公众号]近年来,随着ChatGPT、Claude、文心一言等大语言模型在生成文本、对话交互等领域的惊艳表现,“Transformer架构是否正在取代传统深度学习”这一话题一直被
    的头像 发表于 08-13 09:15 3923次阅读
    自动驾驶中Transformer大模型会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?

    【高云GW5AT-LV60 开发套件试用体验】基于开发板进行深度学习实践,并尽量实现皮肤病理图片的识别

    Equalization,对比度受限自适应直方图均衡化)是一种改进的直方图均衡化算法,主要用于增强图像的局部对比度,同时避免传统直方图均衡化可能导致的过度
    发表于 06-11 22:35

    基于RV1126开发板实现自学习图像分类方案

    在RV1126开发板上实现自学习:在识别前对物体图片进行模型学习,训练完成后通过算法分类得出图像的模型ID。 方案设计逻辑流程图,方案代码分为分为两个业务流程,主体代码负
    的头像 发表于 04-21 13:37 11次阅读
    基于RV1126开发板实现自<b class='flag-5'>学习</b><b class='flag-5'>图像</b>分类方案

    可智能深度学习的AI摄像机模组方案

    、方案优势 500/800万像素CMOS传感器。 专业级海思Hi3519DV500、 Hi3403/3402、星宸SSC338G。 可内嵌智能深度学习人脸算法,机动车识别、车牌识别、非机动车识别
    发表于 03-21 11:28

    SLAMTEC Aurora:把深度学习“卷”进机器人日常

    在人工智能和机器人技术飞速发展的今天,深度学习与SLAM(同步定位与地图构建)技术的结合,正引领着智能机器人行业迈向新的高度。最近科技圈顶流DeepSeek简直杀疯了!靠着逆天的深度学习
    的头像 发表于 02-19 15:49 727次阅读

    BP神经网络与深度学习的关系

    ),是一种多层前馈神经网络,它通过反向传播算法进行训练。BP神经网络由输入层、一个或多个隐藏层和输出层组成,通过逐层递减的方式调整网络权重,目的是最小化网络的输出误差。 二、深度学习的定义与发展
    的头像 发表于 02-12 15:15 1358次阅读

    传统机器学习方法和应用指导

    用于开发生物学数据的机器学习方法。尽管深度学习(一般指神经网络算法)是一个强大的工具,目前也非常流行,但它的应用领域仍然有限。与深度
    的头像 发表于 12-30 09:16 1982次阅读
    <b class='flag-5'>传统</b>机器<b class='flag-5'>学习</b>方法和应用指导