opencv案例06-基于opencv图像匹配的消防通道障碍物检测与深度yolo检测的对比

基于图像匹配的消防通道障碍物检测

技术背景

消防通道是指在各种险情发生时,用于消防人员实施营救和被困人员疏散的通道。消防法规定任何单位和个人不得占用、堵塞、封闭消防通道。事实上,由于消防通道通常缺乏管理,导致各种垃圾,物品以及车辆等障碍物常常出现在消防通道中,堵塞消防通道,当险情发生时,将对人们的生命财产带来巨大危害。因此,对消防通道的障碍物进行检测就显得尤为重要。

传统的消防通道障碍物检测主要依靠人工安全检查,指定专门工作人员定期到特定消防通道查看消防通道是否堵塞,此种方法虽然简单易行,不需要依靠复杂设备,但是该方法的缺点一是不能及时发现消防通道是否堵塞,受人工检查的周期影响大;二是较大地依赖工作人员的专业素质和工作态度,主观性强。

消防通道障碍物检测属于图像处理和智能安防领域。
采用固定摄像头,获取清空消防通道障碍物时的背景场景图像与实时监测场景图像,将背景场景图像作为匹配的模板图像,通过对模板图像与实时监测场景图像之间在指定区域内进行图像匹配,判断指定区域内是否存在障碍物,并予以报警。如下图,红色框内不能方有堆积物。有的话就报警提示
在这里插入图片描述

系统按一定时间间隔采集消防通道内指定监测区域的实时场景图像并进行匹配,既能保障系统能够实时检测到障碍物并予以报警,及时保障通道的畅通性,同时也降低了系统开销;另外基于特征的图像匹配用于消防通道障碍物检测,使得通道堵塞判定更加准确有效。

整体的流程图:

在这里插入图片描述

在这里插入图片描述
为了实现上述流程,需要执行一下几个重要步骤:
步骤1,在需要检测的通道架设摄像头,通过摄像头采集通道场景图像;
步骤2,摄像头检测通道系统部署过程中,保存背景模板图像形成背景模板图像集,并设置通道的重点检测区域;
步骤3,对背景模板图像集以及待匹配图像进行降噪预处理;
步骤4,计算每张背景模板图像集中的背景模板图像与待匹配图像的匹配度;
步骤5,计算待匹配图像与背景模板图像集的匹配度,根据背景模板图像集的匹配度与阈值的比较结果,判断当次检测待匹配图像中障碍物是否存在,障碍物存在则报警。

单张背景模板图像同待匹配图像之间的匹配主要包括如下过程:

首先需要在背景模板图像和待匹配图像的指定区域中进行特征点的提取。考虑到消防通道场景中光线问题,采用对光照变化具有一定抗干扰性的Harris角点作为特征点,该类特征点是有灰度图像的二阶导数计算而来,通常存在于图像中像素邻域内出现多个方向上的灰度变化的像素点上,因此能够很好的表示图像中的灰度值的变化范围,而光照变化对图像灰度值的影响在邻域范围内通常很小,因此Harris角点对光照具有一定的稳定性。

图像中像素点x的邻域指的是以x为中心,上下左右相邻的若干的像素组成的像素集。根据S2中获得的指定区域的边界点序列PSeq,在背景模板图像和待匹配图像中生成mask区域(即边界点包围的区域)。在背景模板图像和待匹配图像中的mask区域中分别提取出角点集BackCornerSet(背景角点集)和TestCornerSet(测试角点集)。其中BackCornerSet中有Nb个角点,而TestCornerSet中有Nt个角点。角点的个数根据图像内容不同会有较大变化,因此暂用Nb和Nt表示。角点集中包含各个角点的坐标,用于对各角点在图像中进行定位。

其次需要对背景模板图像和待匹配图像中的各个角点进行特征描述符的提取。所谓特征描述符是指对各个特征点所在像素点的特性进行描述的属性。各像素点最基本的属性是灰度值,但使用灰度值作为特征描述符不仅表示过于简单,而且忽略了该像素点同相邻像素点的关系,使得它并不能有效的表示特征的属性。通常采用特征点所在像素点的邻域内的特性来作为特征描述符。本发明采用以特征点所在像素点为中心的15×15大小的邻域,能够很好地涵盖特征点与影响较大的相邻像素点。对邻域内的像素点计算一阶梯度构成的向量作为特征点的特征描述符,一阶梯度能够减弱光照影响,使得该特征描述符对于光照也有一定的稳定性。部署过程结束后,图像匹配的场景便固定了,因此指定区域内的背景通常不会出现较为明显的旋转和尺度变化,因此一阶梯度作为特征描述符基本能够满足要求。针对的是根据角点集BackCornerSet和TestCornerSet中各角点的坐标分别在背景模板图像和待匹配图像中定位出各个角点,并根据各角点的邻域可计算得到背景模板图像和待匹配图像的特征描述符集BackDescriptorSet(背景特征描述符集)和TestDescriptorSet(测试特征描述符集)。

然后对背景模板图像和待匹配图像中提取出的特征描述符集进行匹配。匹配过程中,本发明采用欧式距离来计算两个特征描述符之间的相似度。对BackCornerSet和假设A为BackCornerSet中的任意一角点,B为TestCornerSet中的任意一角点,计算A到B1、B2、…、BNt各角点对应的特征描述符的相似度,选出相似度最大的角点Bj(j的可能取值为1到Nt之中任意整数),则A角点至Bj角点单向匹配;计算B到A1、A2、…、ANb各角点对应的特征描述符的相似度,选出相似度最大的角点Aj(j的可能取值为1到Nb之中任意整数),则B角点至Aj角点单向匹配。当且仅当A角点至B角点单向匹配的同时B角点至A角点也单向匹配的时候,A角点和B角点匹配,则A角点与B角点为一个匹配对。对BackCornerSet和TestCornerSet中角点进行匹配后,得到包含Q个匹配成功的匹配集MatchPairs。

最后需要对匹配对进行修正。匹配成功的匹配集MatchPairs中可能存在有同一角点同时匹配上多个角点的情况,同时也可能存在误匹配的焦点对,因此我们需要对MatchPairs进行修正。由于摄像头固定的情况下,获取的图像中指定区域内的背景内容不会发生较大变化,因此可以认为背景模板图像中的检测到的角点与在待匹配图像中的相应位置的匹配的角点之间的相对位移应该很小。基于这个原理,计算MatchPairs中各匹配对的两个角点的相对位移,如果位移偏差大于阈值Δs,则认为该匹配对为误匹配对。Δs的阈值可以设为5个像素(以适应物理环境的变化如摄像头抖动造成的图像内容偏移)。
对MatchPairs中的误匹配对进行删除操作,完成MatchPairs的修正。修正后的MatchPairs中含有Q*个匹配对。

基于深度学习的障碍物检测研究

YOLO是一种端到端的图像检测框架,其核心过程就是将整张图片作为网络的输入,可以在输出层直接得到物体的检测边界框,并标注其检测到得所属类别。YOLO使用了网格而非传统的滑动窗口,首先将一幅图片分成S * S个网格,每个网格需要预测一个中心点落在这个网格当中的物体;每个网格需要预测B个边界框(boundingbox),每个边界框都要回归一个位置信息,包括x,y,w,h,分别代表坐标信息和尺寸信息,同时还要再输出一个置信度值(confidencescore)。

效果如下图所示:
在这里插入图片描述
基于深度检测比opencv 的效率和准确度要高,但是深度安全通道检测有一个弊端 就是 必须要提前明确通道里会放哪些障碍物,这个就很容易被吐槽了,意味着你的模型到实际生产过程中需要不断对新的障碍物去训练识别。当然,这个也要看你自己的业务场景了。如果你的障碍物是固定的,那深度检测肯定是你的不二选择了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/115615.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux上vscode中.cpp文件中引入头文件.hpp时报错:找不到头文件(启用错误钵形曲线)

当在.cpp文件中引入系统给定的头文件时&#xff1a;#include < iostream > 或者引入自定义的头文件 &#xff1a;#include <success.hpp> 报错&#xff1a;找不到相应的头文件&#xff0c;即在引入头文件的改行底下标出红波浪线 解决方法为&#xff1a; &#…

【LeetCode算法系列题解】第11~15题

CONTENTS LeetCode 11. 盛最多水的容器&#xff08;中等&#xff09;LeetCode 12. 整数转罗马数字&#xff08;中等&#xff09;LeetCode 13. 罗马数字转整数&#xff08;简单&#xff09;LeetCode 14. 最长公共前缀&#xff08;简单&#xff09;LeetCode 15. 三数之和&#xf…

渗透测试漏洞原理之---【XSS 跨站脚本攻击】

文章目录 1、跨站 脚本攻击1.1、漏洞描述1.2、漏洞原理1.3、漏洞危害1.4、漏洞验证1.5、漏洞分类1.5.1、反射性XSS1.5.2、存储型XSS1.5.3、DOM型XSS 2、XSS攻防2.1、XSS构造2.1.1、利用<>2.1.2、JavaScript伪协议2.1.3、时间响应 2.2、XSS变形方式2.2.1、大小写转换2.2.2…

【c语言】结构体内存对齐,位段,枚举,联合

之前学完结构体&#xff0c;有没有对结构体的大小会很疑惑呢&#xff1f;&#xff1f;其实结构体在内存中存储时会存在内存对齐&#xff0c;捎带讲讲位段&#xff0c;枚举&#xff0c;和联合&#xff0c;跟着小张一起学习吧 结构体内存对齐 结构体的对齐规则: 第一个成员在与结…

计算机视觉-LeNet

目录 LeNet LeNet在手写数字识别上的应用 LeNet在眼疾识别数据集iChallenge-PM上的应用 LeNet LeNet是最早的卷积神经网络之一。1998年&#xff0c;Yann LeCun第一次将LeNet卷积神经网络应用到图像分类上&#xff0c;在手写数字识别任务中取得了巨大成功。LeNet通过连续使用…

Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移

首先思考一个问题&#xff1a;如果 Dubbo 应用使用 ZooKeeper 作为注册中心&#xff0c;现在需要切换到新的 ZooKeeper 实例&#xff0c;如何做到流量无损&#xff1f; 本文提供解决这个问题的一种方案。 场景 有两个基于 Dubbo 的微服务应用&#xff0c;一个是服务提供者&…

CXL 内存交织(Memory Interleaving)

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

Java 读取TIFF JPEG GIF PNG PDF

Java 读取TIFF JPEG GIF PNG PDF 本文解决方法基于开源 tesseract 下载适合自己系统版本的tesseract &#xff0c;官网链接&#xff1a;https://digi.bib.uni-mannheim.de/tesseract/ 2. 下载之后安装&#xff0c;安装的时候选择选择语言包&#xff0c;我选择了中文和英文 3.…

恒运资本:股票跌100%后怎么办?

在股票市场里&#xff0c;股票价格跌涨是日常的现象&#xff0c;有时候涨到令人惊喜&#xff0c;有时候却一路跌向谷底。股价跌到零的情况并不常见&#xff0c;可是&#xff0c;假如是跌了100%怎么办呢&#xff1f; 在探究该问题前&#xff0c;咱们需要了解股票跌100%是怎样的…

微服务之Nacos

1 版本说明 官网地址&#xff1a; https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.1 2021.x 分支 适配 SpringBoot 2.4, Spring Cloud 2021.x 版本及以上的Spring Cloud Alibaba 版本如下表&#xff08;最新版本用*标记&am…

腾讯音乐如何基于大模型 + OLAP 构建智能数据服务平台

本文导读&#xff1a; 当前&#xff0c;大语言模型的应用正在全球范围内引发新一轮的技术革命与商业浪潮。腾讯音乐作为中国领先在线音乐娱乐平台&#xff0c;利用庞大用户群与多元场景的优势&#xff0c;持续探索大模型赛道的多元应用。本文将详细介绍腾讯音乐如何基于 Apach…

LeetCode-455-分发饼干-贪心算法

题目描述&#xff1a; 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff…

企业级数据共享规模化模式

数据共享正在成为企业数据战略的重要元素。对于公司而言&#xff0c;Amazon Data Exchange 这样的亚马逊云科技服务提供了与其他公司共享增值数据或从这些数据获利的途径。一些企业希望有一个数据共享平台&#xff0c;他们可以在该平台上建立协作和战略方法&#xff0c;在封闭、…

联邦学习FedAvg-基于去中心化数据的深度网络高效通信学习

随着计算机算力的提升&#xff0c;机器学习作为海量数据的分析处理技术&#xff0c;已经广泛服务于人类社会。 然而&#xff0c;机器学习技术的发展过程中面临两大挑战&#xff1a;一是数据安全难以得到保障&#xff0c;隐私泄露问题亟待解决&#xff1b;二是网络安全隔离和行业…

使用飞桨实现的第一个AI项目——波士顿的房价预测

part1.首先引入相应的函数库: 值得说明的地方&#xff1a; &#xff08;1&#xff09;首先&#xff0c;numpy是一个python库&#xff0c;主要用于提供线性代数中的矩阵或者多维数组的运算函数&#xff0c;利用import numpy as np引入numpy&#xff0c;并将np作为它的别名 part…

linux字符串处理

目录 1. C 截取字符串,截取两个子串中间的字符串linux串口AT指令 2. 获取该字符串后面的字符串用 strstr() 函数查找需要提取的特定字符串&#xff0c;然后通过指针运算获取该字符串后面的字符串用 strtok() 函数分割字符串&#xff0c;找到需要提取的特定字符串后&#xff0c;…

如何在小程序中给会员设置备注

给会员设置备注是一项非常有用的功能&#xff0c;它可以帮助商家更好地管理和了解自己的会员。下面是一个简单的教程&#xff0c;告诉商家如何在小程序中给会员设置备注。 1. 找到指定的会员卡。在管理员后台->会员管理处&#xff0c;找到需要设置备注的会员卡。也支持对会…

宠物赛道,用AI定制宠物头像搞钱项目教程

今天给大家介绍一个非常有趣&#xff0c;而粉丝价值又极高&#xff0c;用AI去定制宠物头像或合照的AI项目。 接触过宠物行业应该知道&#xff0c;获取1位铲屎官到私域&#xff0c;这类用户的价值是极高的&#xff0c;一个宠物粉&#xff0c;是连铲个屎都要花钱的&#xff0c;每…

USRP 简介,对于NI软件无线电你所需要了解的一切

什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…

本地部署 Stable Diffusion(Mac 系统)

在 Mac 系统本地部署 Stable Diffusion 与在 Windows 系统下本地部署的方法本质上是差不多的。 一、安装 Homebrew Homebrew 是一个流行的 macOS &#xff08;或 Linux&#xff09;软件包管理器&#xff0c;用于自动下载、编译和安装各种命令行工具和应用程序。有关说明请访问官…