差值平方和匹配_机器学习实战 | 简单目标识别与意图分析之模板匹配

(点击上方快速关注并设置为星标,一起学Python)

一天,我正在学校楼下撸猫,同学发来消息,他的老师给了他一个研究课题,大致的方向是对图片或者视频里面的内容进行识别,然后判断意图,而且举了个例子,两方交锋,现在根据无人机拍摄或者卫星图像,针对对方坦克集团的阵型来分析对方坦克的作战意图。但他对课题实现一脸懵逼,所以过来求救,我一听,真的好高大上啊!为发扬同学间团结有爱、互帮互助的精神,我就帮忙研究研究吧(每天一瓶饮料,做错了别怪我。。。。)

这样讲文章思路不清晰,我先画个流程图来描述一下我的工作,避免大家绕来绕去的看的发懵:

d099656c8dadc4610c03a92da6e678ad.png

初步目标识别

同学说老师要他先实现这个目标识别,我脑子里第一时间想到了Python3里面处理图片的超强第三方库OpenCV,里面的模板匹配有好多算法可以用呢,比如平方差匹配、相关性匹配、相关性系数匹配还有匹配效果最好的标准相关匹配等等,然后模型的话最近正好在研究Unity写游戏,那就拿里面的坦克模型来测试,先来张截图测试下,一言不合上代码:

d06d2af9bb2b865dbb07f5c8f1f20bbc.png

tpl =cv.imread(r"D://PythonPicTemplate/pythinPIC/tankTemplate2.jpg")
target = cv.imread("D://PythonPicTemplate/pythinPIC/tanks2.jpg")
cv.namedWindow('template image', cv.WINDOW_NORMAL)
cv.imshow("template image", tpl)
cv.namedWindow('target image', cv.WINDOW_NORMAL)
cv.imshow("target image", target)
#methods = [cv.TM_CCOEFF, cv.TM_CCOEFF_NORMED, cv.TM_CCORR,cv.TM_CCORR_NORMED, cv.TM_SQDIFF, cv.TM_SQDIFF_NORMED]
methods =[cv.TM_CCORR_NORMED ,cv.TM_CCORR_NORMED,cv.TM_CCORR_NORMED,cv.TM_CCORR_NORMED, cv.TM_CCORR_NORMED]
'''''''
差值平方和匹配 CV_TM_SQDIFF
标准化差值平方和匹配 CV_TM_SQDIFF_NORMED
相关匹配 CV_TM_CCORR
标准相关匹配 CV_TM_CCORR_NORMED
相关匹配 CV_TM_CCOEFF
标准相关匹配 CV_TM_CCOEFF_NORMED
'''
th, tw = tpl.shape[:2]
i =0
tl = []
br = []
for md in methods:
#print(md)
result = cv.matchTemplate(target, tpl, md)
min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)
if md == cv.TM_SQDIFF_NORMED:
tl.append(min_loc)
else:
tl.append(max_loc)
br.append((tl[i][0]+tw, tl[i][1]+th))
cv.rectangle(target, tl[i], br[i], (0, 0, 255), 2)
i += 1
cv.namedWindow("match-" + np.str(md), cv.WINDOW_NORMAL)
cv.imshow("match-" + np.str(md), target)

e005d8d6c948489b273adb1f8f1363c9.png

模板匹配的大致原理

模板匹配实现的思想也是很简单很暴力的,就是拿着模板图片在原图中从左上至右下依次滑动,直到遇到某个区域的相似度低于我们设定的阈值,那么我们就认为该区域与模板匹配了,并把它标记出来。但实验证明,模板配在原图抠出模板图的形式下准确率才比较高,不然的话可能准确度就不太高了。

综上所述,模板匹配的优点在于在模板的基础上能匹配的方便快速,但缺点实在是太多了,例如,

1.模板的大小会影响匹配的精度;

2.干扰现象严重,坦克藏在树林里很影响识别效果;

3.在实际运用中,模板的方向都必须要固定才能匹配成功;

3cf52da1edfcbb0462f6cc4d1d51793b.png

4.以上都还好说,最重要的是我都知道模板了,那我还写代码在图片里识别个毛啊,对于这个课题直接圈出来不就行了。

所以我还是太天真了,模板匹配的优点要用,但目标识别的方法必须要改进一下,不然看着都傻,同学老师估计也会爆发。下一节我们继续研究具体的改进方法。

代码已上传至GitHub,欢迎star,欢迎讨论:

GitHub:https://github.com/wangwei39120157028/Machine_Learning_research_on_simple_target_recognition_and_intention_analysis

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

1dde2cc15e0084830d755adea19dddc2.png

dd911ed52e5cf5bd7578dab6d588a0bf.png

点「在看」的人都变好看了哦

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

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

相关文章

如何创建_如何创建自己的微信圈子?圈子创建运营指南

原创:爱捣鼓的猿 袁小猴最近很多小伙伴在问微信圈子是什么,如何才能创建自己的微信圈子?于是小编花时间去研究了下,整理了一些微信圈子的规则,方便大家使用。一、微信圈子是什么,圈子入口?其实曾…

js 获取鼠标在画布的位置_云凤蝶如何打造媲美 sketch 的自由画布

在 Design Tools 中,组件间的对齐与吸附功能是否好用是决定其画布是否可以高效进行产品设计的关键因素。云凤蝶作为一款快速制作高品质中后台应用的 hpaPaaS 平台,同样拥有自由拖拽的可视化画布。那么在云凤蝶的自由画布中,对齐规则是怎样的&…

Linux下TI omap芯片 MUX 配置分析(以AM335X芯片为例)

在移植内核的时候,通常会遇到引脚复用(MUX)的配置问题。在现在的Linux内核中,对于TI的ARM芯片,早已经有了比较通用的MUX配置框架。这对于许多TI的芯片都是通用的,这次看AM335X的代码顺手写一下分析&#xf…

是网关吗_智能家居网关功能这么多,你都知道吗?

在科技发达的今天,我们的生活也开始趋向于智能化,智能家居已经迎来了新时代。电动窗帘、扫地机器人、电视、空调等电器都能智联wifi,可是使用的时候得一个个去控制,数量多的话懒癌们肯定嫌麻烦的。所以很多聪明的人都选择安装智能…

一个数据包大小是多少k_算法交流: 6046 数据包的调度机制 【2.6基本算法之动态规划】...

【题目描述】 6046 数据包的调度机制 By OIer14wa随着 Internet的迅猛发展,多媒体技术和电子商务应用日益广泛,Internet上的服务质量(QoS,Qualityof Service)问题已越来越受到重视。网络中采用的数据包调度机制与网络的服务质量 QoS 有着密切的关系。研究表明传统的基于队列的调…

iOS vs. Android,应用设计该如何对症下药?

摘要:从iOS到Android,两大平台应用设计有何不同?又都存在什么样的问题?Android定制性太高,该如何进行UI设计?在CMDN CLUB第28期活动中,咕咚网高级产品经理王磊,从iOS、Android谈起&a…

cs8900a网卡驱动--寄存器

1. CS8900内部有一个4k的RAM用于访问其内部寄存器,称为PacketPage。 2. LineCTL 网卡状态设置 从上图看到,此寄存器的6,7位用于设置网卡的收发使能。8,9位用于设置网卡状态。是10BASE-T还是 AUI。下面这图更详细介绍了8&…

jQuery图表插件 JS Charts

JS Charts 是一款免费的基于javascript的轻量级插件,用JS Charts 绘制图表是很轻松地事,因为你只需要关心客户端的脚本。 Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...转载于:https://www.cnb…

使用正则把数字前面的符号替换_正则表达式(一) 基本表达式

定义 正则表达式(Regular Expression)用某种模式去匹配一类字符串的公式,主要用来描述字符串匹配的工具。 匹配文本或字符存在不止一个部分满足给定的正则表达式,这是每一个这样的部分都被称为一个匹配。 匹配分为以下三种类型: 形容词性的匹…

jsp思维导图_2019年经济法基础思维导图

参加2019年初级考试的考生们明天可以打印准考证啦时间:2019.4.26-5.5日(传送门:http://kjbm8.mof.gov.cn/ksbm/usercxzkz.jsp)为了帮助大家快速梳理教材考点,下面蓝星职业教育为大家整理了初级会计职称考试各章节思维导图,希望给大…

海量数据持久层解决方案_爱数AnyBackup重磅发布海量非结构化数据超可用解决方案...

海量非结构化数据有三大备份恢复问题一直没有得到有效解决:备份慢、恢复慢、备份数据不可查询。这三大问题已经对行业数字化转型造成了重大阻碍。今天,AnyBackup Family 7线上发布会——重磅发布海量非结构化数据超可用解决方案。AnyBackup以创新超可用技…

wpf 使子ui元素可视区域不超过父元素_对游戏UI设计的一点思考

UI决定了一个游戏的初体验,甚至决定了玩家的初始留存,甚至可以说决定了一个游戏的品质,虽然看起来是表象的,却是直指游戏核心的。简单讲,玩家认可一款游戏永远都是造型场景好,剧情好,画质棒&…

grpc入门到精通_Spring Cloud 从入门到精通(一)Nacos 服务中心初探

点击上方蓝色“Java精选”,选择“设为星标”技术文章第一时间送达!什么是Nacos?Nacos是阿里巴巴开源的项目,是一个更易于帮助构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos英文全称是Dynamic Naming and Configur…

百度新年贪吃蛇效果

闲来无事&#xff0c;在网上闲逛的时候开到有人说百度蛇年的贪吃蛇logo小游戏不错&#xff0c;于是乎就自己仿照写了一个。&#xff08;注&#xff1a;所有素材都来自百度&#xff09; 效果图 用到的图片 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional…

贝叶斯公式设b_数据分析经典模型——朴素贝叶斯

编辑导语&#xff1a;做过数据分析的人&#xff0c;想必对贝叶斯模型都不会陌生。贝叶斯预测模型是运用贝叶斯统计进行的一种预测&#xff0c;不同于一般的统计方法&#xff0c;其不仅利用模型信息和数据信息&#xff0c;而且充分利用先验信息。通过实证分析的方法&#xff0c;…

Asterisk使用数据库配置方法

安装&#xff1a; 1、安装 unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel &#xff0c;为了使asterisk支持数据库存储&#xff08;必须先安装&#xff09; 2、安装 mysql 并设置好 C_INCLUDE_PATH 和 LD_LIBRARY_PATH 3、从 http://www.asterisk.org/downloads 下载…

linux文件系统_Linux的文件系统简介

inux操作系统的本质可以说就是文件系统的集合&#xff0c;文件系统既包含文件的数据也包含文件系统的结构。在Linux文件系统中&#xff0c;EXT2文件系统、虚拟文件系统、/proc文件系统是三个具有代表性的文件系统。/proc文件系统是一个伪文件系统&#xff0c;它只存在内存当中&…

删除按钮_汪涵拜师学艺第七篇:往来单位查询删除按钮和新增判断的设计!

老师好&#xff01;大家好&#xff01;我叫汪涵&#xff1a;今天给大家分享往来单位查询删除按钮和新增判断的设计&#xff01;在开始具体内容之前&#xff0c;请让我先分享我们的价值观&#xff1a;用自律和勤奋来改变命运&#xff0c;不走捷径&#xff0c;有爱心&#xff0c;…

Ubuntu 12.04(32位)安装Oracle 11g(32位)全过程以及几乎所有问题的解决办法

这两天在Ubuntu上安装Oracle把人折腾毁了&#xff0c;即使照着网上的教程来&#xff0c;还是出了很多问题。好在最后终于搞定了。写出来总结一下&#xff0c;免得以后忘了。 标题注明32位是因为网上教程几乎全是以64位安装为例的&#xff0c;32位系统下照着做是绝对会安装失败的…

解决asterisk sip呼叫 488 no acceptable here

这两天实验了一下asterisk static realtime方案&#xff0c;将sip.conf的信息保存到mysql数据库里。但是呼叫的时候&#xff0c;总是 报 488 no acceptable here。 这是我的sip.conf文件&#xff0c;数据库里和sip.conf文件一模一样&#xff0c;但是就是不行。 [general] c…