首页 > 编程语言 >基于卷积神经网络实现高速公路表面图像裂缝检测程序

基于卷积神经网络实现高速公路表面图像裂缝检测程序

时间:2023-12-09 12:05:39浏览次数:23  
标签:卷积 检测 神经网络 bw Result 图像 裂缝 预处理


作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-AI-002

一,环境介绍

语言环境:Matlab

算法:神经网络CNN

二,项目简介

改革开放以来中国经济的飞速发展,也带动了基础设施建设的大力投入,目前全国公路里程总数己达到550多万公里,这比新中国成立里时的8万公里翻了近七倍。如此大的公路里程数,也带来了维护麻烦,公路在使用的过程中,长期受到车辆的反复磨损,还有雨水浸泡等带来的影响,使得公路经常出现损坏,其中最常见的就是公路中的裂缝,年久失修会造成裂缝越来越大。现有的主要检测还是通过传统的人工检测的方式,时效低,成本高,影响整体的检测和维护进程。如果能开发一套路面裂缝自动检测识别的系统来代替传统路面检修工人的工作,工作效率和成效将会大大提高。

本课题采用Matlab来对目公路的裂缝图像进行处理,主要经过图像预处理、裂缝检测、特征分割提取、目标识别和结果的保存几个步骤,通过这几个步骤来完成对公路列缝的检测和识别,将检测的结果通过程序设计的GUI页面来进行调用处理和展示。本实验设计流程清晰,处理方法简捷、易懂,可以方便地拓展到诸如社会生活中其它有关裂缝检测的应用中去,比如建筑墙面裂缝检测等,具有一定的通用性。

路面裂缝检测识别系统的设计涵盖了四个方面的研究内容:图像预处理、图像分割(二值化)、目标检测识别和图像特征提取保存。其中,图像预处理用于对原始采集的彩色路面裂缝图像进行处理,以改善图像质量。图像分割则将路面裂缝图像转化为二值图像,便于后续的目标检测识别操作。目标检测识别是指对图像中的裂缝目标进行自动化识别和检测。最后,图像特征提取保存会在识别完成后对目标的特征进行提取和保存,为后续数据分析和应用提供支持。这些方面的综合研究和应用,可以有效地提高路面裂缝检测识别的准确性和效率。本次开发设计的裂缝检测系统的整体设计流程图如图2-1所示。

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测

基于卷积神经网络实现高速公路表面图像裂缝检测程序_预处理_02编辑

图2-1设计流程图

针对裂缝图像的特点,在对其进行目标检测和识别之前,必须对其进行图像的预处理,其中主要有:直方图均衡化增强、中值滤波去噪、对比度增强、二值化处理、二值图像滤波等。在二进制处理时,采用了自定义阈值方法和迭代自适应方法;二值图象去噪主要是对连通区的面积去噪,对小范围内的杂讯和噪音进行剔除。

通过对裂隙图像的预处理,提取出能够突出裂隙对象的二值化图像,再结合形态学的区域特征提取出裂隙对象,实现了对裂隙对象的检测和识别。在此基础上,提出了一种新的裂纹识别方法。

在试验过程中,本案例根据以上的处理流程对 GUI进行了设计,以使每一处理步骤都能清楚的显示出试验结果,从而提高了应用程序的简便性。

路面裂纹的检测在视觉上是一种典型的线性物体,所以对其进行增强和定位也是一种线性物体的检测。与常规线性目标相比,道路裂纹具有对象较小、图像对比度不高、自然不连续、分叉、杂点等特性,且仅从整体上表现为线性特征121。传统的基于阈值分割、边缘检测、小波变换等方法通常假定路面裂纹在整个影像上是高反差、良好连续的,而这一假定并不适用于实际工程。受气象条件、路面破损、裂缝劣化等影响,部分裂缝与路面背景的反差很小,导致常规裂缝识别方法难以奏效,故需在裂缝图像处理之前进行预处理。

图像预处理是一种对图像进行预处理的方法,可用于图像的识别和表达。由于各种原因,在获取和传输图像时,常常会造成图像质量的下降。比如,在一幅图画中,如果从主观的视觉角度来看,就会发现这个图画的轮廓位置太过鲜明,太过突兀;由于被探测对象的尺寸、形状等特点,其影像特征较为模糊,定位困难;在图象反差方面,一定的噪音会对图象造成影响;在整个图像中,存在着一些扭曲,变形等现象。因而,所要处理的影像,在视觉直观性与加工的可操作性上,会产生许多的干扰,我们不妨将这些干扰统称为影像品质问题。图像预处理就是指在图像质量的改善处理中,利用一定的计算步骤,展开合适的变换,从而将图像中一些有兴趣的信息凸显出来,消除或减少干扰信息,比如图像对比度增强、图像去噪或边缘提取等处理。通常,裂缝图像的获取都是在户外进行的,因此获取的图像不可避免地带有噪声、畸变等因素,给直接探测与提取裂缝对象带来了困难。为此,本文首先对裂纹影像进行了预处理,以提高影像品质,然后对试验结果进行了优化。图像的预处理主要包括灰度变换,频率变换,直方图变换,噪声去除,锐化,颜色变换等。本文将选取这些方法中的一部分用于对裂纹图像进行预处理。

三,系统展示

在试验过程中,本案例根据以上的处理流程对 GUI进行了设计,以使每一处理步骤都能清楚的显示出试验结果,从而提高了应用程序的简便性。软件设计界面具体如图4-1所示,在右侧控制面板中,可以对主算法流程的分步处理结果进行逐步访问,在左侧显示区域中,可以显示图像处理、投影曲线等结果。

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_03

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测_04编辑

在预处理过程中,直方图均衡化增强、中值滤波去噪、图像增强(Gamma矫正)等步骤比较简单,实验结果如图4-2所示。

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_05

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_06编辑

裂缝识别结果如图4-3所示。

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_07

基于卷积神经网络实现高速公路表面图像裂缝检测程序_预处理_08编辑

图4-3 裂缝识别结果

在对裂缝目标进行了检测和定位之后,为了能够准确地获得裂缝的区域信息,本实验采用了经典的像素积分投影的思想,对裂缝的水平、垂直方向进行了积分投影,并绘制投影曲线,进而定位裂缝的具体区域和参数信息,具体代码如下所示。

function[projectr,projectc]=Project(bw)

projectr=sum(bw,2);

projectc=sum(bw,1);

裂缝投影如图4-4所示。

基于卷积神经网络实现高速公路表面图像裂缝检测程序_目标检测_09

基于卷积神经网络实现高速公路表面图像裂缝检测程序_目标检测_10编辑

图4-4 裂缝投影

裂缝判别及特征提取如图4-5所示。

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测_11

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测_12编辑

(a)裂缝标记图像

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_13

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_14编辑

(b)裂缝参数信息

图4-5 裂缝判别及特征提取

四,核心代码展示

function Result=Process_Main(I)
if ndims(I)==3
I1=rgb2gray(I);
else
I1=I;
end
I2=hist_con(I1);
I3=med_process(I2);
I4=adjgamma(I3,2);
[bw,th]=IterProcess(I4);
bw=~bw;
bwn1=bw_filter(bw,15);
bwn2=Identify_Object(bwn1);
[projectr,projectc]=Project(bwn2);
[r,c]=size(bwn2);
bwn3=Judge_Crack(bwn2,I4);
bwn4=Bridge_Crack(bwn3);
[flag,rect]=Judge_Direction(bwn4);
if flag==1
str='横向裂缝';
wdmax=max(projectc);
wdmin=min(projectc);
else
str='纵向裂缝';
wdmax=max(projectr);
wdmin=min(projectr);
end
Result.Image=I1;
Result.hist=I2;
Result.Medfilt=I3;
Result.Enance=I4;
Result.Bw=bw;
Result.BwFilter=bwn1;
Result.CrackRec=bwn2;
Result.Projectr=projectr;
Result.Projectc=projectc;
Result.CrackJudge=bwn3;
Result.CrackBridge=bwn4;
Result.str=str;
Result.rect=rect;
Result.BwEnd=bwn4;
Result.BwArea=bwarea(bwn4);
Result.BwLength=max(rect(3:4));
Result.BwWidthMax=wdmax;
Result.BwWidthMin=wdmin;
Result.BwTh=th;

基于卷积神经网络实现高速公路表面图像裂缝检测程序_预处理_15

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_16

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_17编辑

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测_18

基于卷积神经网络实现高速公路表面图像裂缝检测程序_目标检测_19编辑

基于卷积神经网络实现高速公路表面图像裂缝检测程序_预处理_20

基于卷积神经网络实现高速公路表面图像裂缝检测程序_目标检测_21编辑

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测_22

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测_23编辑

基于卷积神经网络实现高速公路表面图像裂缝检测程序_预处理_24

基于卷积神经网络实现高速公路表面图像裂缝检测程序_目标检测_25编辑

基于卷积神经网络实现高速公路表面图像裂缝检测程序_目标检测_26

基于卷积神经网络实现高速公路表面图像裂缝检测程序_裂缝检测_27编辑

基于卷积神经网络实现高速公路表面图像裂缝检测程序_预处理_28

基于卷积神经网络实现高速公路表面图像裂缝检测程序_预处理_29编辑

基于卷积神经网络实现高速公路表面图像裂缝检测程序_目标检测_30

基于卷积神经网络实现高速公路表面图像裂缝检测程序_去噪_31编辑



标签:卷积,检测,神经网络,bw,Result,图像,裂缝,预处理
From: https://blog.51cto.com/u_16147814/8746687

相关文章

  • 神经网络优化篇:详解偏差,方差(Bias /Variance)
    偏差,方差注意到,几乎所有机器学习从业人员都期望深刻理解偏差和方差,这两个概念易学难精,即使自己认为已经理解了偏差和方差的基本概念,却总有一些意想不到的新东西出现。关于深度学习的误差问题,另一个趋势是对偏差和方差的权衡研究甚浅,可能听说过这两个概念,但深度学习的误差很少权衡......
  • 神经网络优化篇:详解训练,验证,测试集(Train / Dev / Test sets)
    训练,验证,测试集在配置训练、验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创建高效的神经网络。训练神经网络时,需要做出很多决策,例如:神经网络分多少层每层含有多少个隐藏单元学习速率是多少各层采用哪些激活函数创建新应用的过程中,不可能从一开始......
  • 神经网络Python代码完整版及其代码解析
     1、读取数据集和标签集1defloadDataSet():2data=[]3label=[]4fr=open('testSet.txt')5forlineinfr.readlines():#循环读写,fr是一个已经打开的文件对象,readline()函数会读取文件中的一行内容6lineArr=lin......
  • 神经网络入门篇:深度学习和大脑的关联性(What does this have to do with the brain?)
    深度学习和大脑的关联性开始讲故事(手动狗头)深度学习和大脑有什么关联性吗?关联不大。那么为什么会说深度学习和大脑相关呢?当你在实现一个神经网络的时候,那些公式是你在做的东西,你会做前向传播、反向传播、梯度下降法,其实很难表述这些公式具体做了什么,深度学习像大脑这样的类......
  • 聊聊神经网络模型流程与卷积神经网络的实现
    神经网络模型流程神经网络模型的搭建流程,整理下自己的思路,这个过程不会细分出来,而是主流程。在这里我主要是把整个流程分为两个主流程,即预训练与推理。预训练过程主要是生成超参数文件与搭设神经网络结构;而推理过程就是在应用超参数与神经网络。卷积神经网络的实现在聊聊卷......
  • SPSS modeler利用类神经网络对茅台股价涨跌幅度进行预测
    全文链接:https://tecdat.cn/?p=34459原文出处:拓端数据部落公众号分析师:XuZhang数据变得越来越重要,其核心应用“预测”也成为各个行业以及产业变革的重要力量。对于股市来说,用人工智能来对股价进行预测成为量化投资的一个重要手段。本项目帮助客户运用powerBI获取网易财经上茅......
  • 神经网络入门篇:详解参数VS超参数(Parameters vs Hyperparameters)
    参数VS超参数什么是超参数?比如算法中的learningrate\(a\)(学习率)、iterations(梯度下降法循环的数量)、\(L\)(隐藏层数目)、\({{n}^{[l]}}\)(隐藏层单元数目)、choiceofactivationfunction(激活函数的选择)都需要来设置,这些数字实际上控制了最后的参数\(W\)和\(b\)的值,所以它们......
  • 聊聊 神经网络模型 预训练生成超参数实现
    概述在上一篇博客中,已经阐述了预训练过程中,神经网络中超参数的计算逻辑,本文,从程序实现的角度,将数学计算转换为程序代码,最终生成超参数文件;并将替换聊聊神经网络模型示例程序——数字的推理预测中已训练好的超参数文件,推理预测数字,最终比对下两者的精确度。神经网络层实现首......
  • 聊聊 神经网络模型 传播计算逻辑
    概述预训练过程就是在不断地更新权重超参数与偏置超参数,最后选择合适的超参数,生成超参数文件。上一篇博客是使用已有的预训练超参数文件,要训练自己的超参数,需要对神经网络层中前向传播与反向传播计算熟悉,了解计算逻辑,才能不断地更新选择合适的超参数。神经网络计算详解整个神......
  • 机器学习中的典型算法——卷积神经网络(CNN)
    1.机器学习的定位AI,是我们当今这个时代的热门话题,那AI到底是啥?通过翻译可知:人工智能,而人工智能的四个核心要素:-数据-算法-算力-场景然后机器学习是人工智能的一部分,机器学习里面又有新的特例:深度学习。通俗来说机器学习即使用机器去学习一部分数据,然后去预测新的数据所属......