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 的效率和准确度要高,但是深度安全通道检测有一个弊端 就是 必须要提前明确通道里会放哪些障碍物,这个就很容易被吐槽了,意味着你的模型到实际生产过程中需要不断对新的障碍物去训练识别。当然,这个也要看你自己的业务场景了。如果你的障碍物是固定的,那深度检测肯定是你的不二选择了。
相关文章:

opencv案例06-基于opencv图像匹配的消防通道障碍物检测与深度yolo检测的对比
基于图像匹配的消防通道障碍物检测 技术背景 消防通道是指在各种险情发生时,用于消防人员实施营救和被困人员疏散的通道。消防法规定任何单位和个人不得占用、堵塞、封闭消防通道。事实上,由于消防通道通常缺乏管理,导致各种垃圾࿰…...

练习2:88. 合并两个有序数组
这里写自定义目录标题 题目解体思路代码 题目 给你两个按非递减顺序排列的整数数组 nums1 和 nums2,另有两个整数 m和 n ,分别表示 nums1 和 nums2中的元素数目。 请你合并nums2 到 nums1 中,使合并后的数组同样按非递减顺序排列。 注意&a…...

【代码随想录day23】不同路径
题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 示…...

SpringBoot 博客网站
SpringBoot 博客网站 系统功能 登录注册 博客列表展示 搜索 分类 个人中心 文章分类管理 我的文章管理 发布文章 开发环境和技术 开发语言:Java 使用框架: SpringBoot jpa H2 Spring Boot是一个用于构建Java应用程序的开源框架,它是Spring框架的一…...

【分布式搜索引擎elasticsearch】
文章目录 1.elasticsearch基础索引和映射索引库操作索引库操作总结 文档操作文档操作总结 RestAPIRestClient操作文档 1.elasticsearch基础 什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能 什么是…...

wireshark 流量抓包例题
一、题目一(1.pcap) 题目要求: 1.黑客攻击的第一个受害主机的网卡IP地址 2.黑客对URL的哪一个参数实施了SQL注入 3.第一个受害主机网站数据库的表前缀(加上下划线例如abc) 4.第一个受害主机网站数据库的名字 看到题目SQL注入,…...
【Axure视频教程】表格编号函数
今天教大家在Axure里如何使用表格编号函数,包括表格编号函数的基本原理、在需要翻页的中继器表格里如何正确使用该函数、函数作为条件的应用,包括让指定第几行的元件默认变色效果以及更新对应第几行内容的效果。该教程主要讲解表格编号函数,不…...
大数据-玩转数据-Flink定时器
一、说明 基于处理时间或者事件时间处理过一个元素之后, 注册一个定时器, 然后指定的时间执行. Context和OnTimerContext所持有的TimerService对象拥有以下方法: currentProcessingTime(): Long 返回当前处理时间 currentWatermark(): Long 返回当前watermark的时间戳 registe…...

Linux 操作系统实战视频课 - GPIO 基础介绍
文章目录 一、GPIO 概念说明二、视频讲解沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解 GPIO 。 一、GPIO 概念说明 ARM 平台中的 GPIO(通用输入/输出)是用于与外部设备进行数字输入和输出通信的重要硬件接口。ARM 平台的 GPIO 特性可以根据具体的芯…...
ChatGPT在医疗保健信息管理和电子病历中的应用前景如何?
ChatGPT在医疗保健信息管理和电子病历中有着广阔的应用前景,可以提高医疗保健行业的效率、准确性和可访问性。本文将详细讨论ChatGPT在医疗保健信息管理和电子病历中的应用前景,以及相关的益处和挑战。 ### 1. ChatGPT在医疗保健信息管理中的应用前景 …...

安防监控/视频存储/视频汇聚平台EasyCVR接入海康Ehome车载设备出现收流超时的原因排查
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚平台既具…...
【zookeeper】zookeeper监控指标查看
zookeeper 监控指标 日常工作中,我们有时候需要对zookeeper集群的状态进行检查,下面分享一些常用的方法。 zookeeper获取监控指标已知的有两种方式: 通过zookeeper自带的四字命令 (four letter words command )获取各…...

Flink 如何处理反压?
分析&回答 什么是反压(backpressure) 反压通常是从某个节点传导至数据源并降低数据源(比如 Kafka consumer)的摄入速率。反压意味着数据管道中某个节点成为瓶颈,处理速率跟不上上游发送数据的速率,而…...

JAVA基础-JDBC
本博客记录JAVA基础JDBC部分的学习内容 JDBC基本概念 JDBC : JAVA链接数据库,是JAVA链接数据库的技术的统称,包含如下两部分: 1. JAVA提供的JDBC规范(即各种数据库接口)存储在java.sql 和 javax.sql中的api 2. 各个数…...

嵌入式学习笔记(1)ARM的编程模式和7种工作模式
ARM提供的指令集 ARM态-ARM指令集(32-bit) Thumb态-Thumb指令集(16-bit) Thumb2态-Thumb2指令集(16 & 32 bit) Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在…...

[NSSCTF Round #15NSSCTF 2nd]——Web、Misc、Crypto方向 详细Writeup
前言 虽然师傅们已经尽力了,但是没拿到前十有点可惜,题很好吃,明年再来() 关于wp: 因为我没有学过misc,但是比赛的时候还是运气好出了三道,所以wp就只把做题步骤给出,也…...

Metasploit“MSF”连接postgresql时因排序规则版本不匹配导致无法连接
一、问题 更新Kali之后使用Metasploit时出现一个问题,连接postgresql时因排序规则版本不匹配导致无法连接 警告: database "msf" has a collation version mismatch DETAIL: The database was created using collation version 2.36, but the operati…...
CCF CSP题解:矩阵运算(202305-2)
链接和思路 OJ链接:传送门 本题要求计算1个公式: ( W ⋅ ( Q K T ) ) V \left(\mathbf{W} \cdot (\mathbf{Q} \times \mathbf{K}^{T})\right) \times \mathbf{V} (W⋅(QKT))V 其中, Q \mathbf{Q} Q、 K \mathbf{K} K和 V \mathbf{V} V均…...

划分字母区间【贪心算法】
划分字母区间 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。…...

低代码的探索之路
Gartner发布报告指出,2023年全球低代码开发平台市场规模将达到345亿美元,比2022年增长20%。 目前,国内外已经有许多低代码平台,包括OutSystems、Mendix、Appian、Microsoft Power App等。这些平台提供了丰富的功能和工具ÿ…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...