码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【图像处理】模板匹配的学习笔记


    1. 基于像素值相关性的方法

    1.1 优势和局限性

    优势

    • 实现简单:有现成的算法库,例如opencv

    局限性

    • 对尺度变化敏感:由于模板匹配方法依赖于像素值的直接比较,因此它对图像的尺度变化非常敏感。当目标物体的尺度发生变化时,像素值之间的对应关系可能会发生改变,从而导致匹配结果不准确。

    Note:这个问题我们在做爬虫时就遇到过,当屏幕画面出现变化时,APP的图标变小,就出现无法匹配不准确的情况。

    1.2 OpenCV的模板匹配算法

    • cv.TM_CCOEFF
    • cv.TM_CCOEFF_NORMED
    • cv.TM_CCORR
    • cv.TM_CCORR_NORMED
    • cv.TM_SQDIFF
    • cv.TM_SQDIFF_NORMED

    1.3 匹配代码模板

    image = cv2.imread(r"scene.png", cv2.IMREAD_GRAYSCALE)
    template = cv2.imread(r"element.png", cv2.IMREAD_GRAYSCALE)
    res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    
    if max_val > 0.8:
        print("Detected")
    else:
        print("Not detected")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    Note:

    1. cv2.TM_CCOEFF_NORMED:相较于其它方法,通常被认为具有较好的鲁棒性

    2. 特征点算法

    常用的特征子算法(按照提取效果排序):

    • SIFT
    • ORB

    关于使用Opencv实现基于特征子的目标匹配,请参考官方教程《OpenCV – Features2D + Homography to find a known object》

    2.1 SIFT算法(Offcial Choice)

    我感觉SIFT还是一项很好的算法,能够提取的特征点很多,并且SIFT还是OpenCV官方Demo中使用的特征子算法,
    请参考 OpenCV: Feature Matching + Homography to find Objects

    2.2 特征点算法的torch实现

    请参考博文《实践教程 | 使用Pytorch从头实现Canny边缘检测》;

    2.3 Match算法(模板匹配)

    现在我在网上看到的特征点匹配算法有:

    • 暴力匹配(BF匹配)
    • KNN匹配
    • FLANN匹配

    BF匹配OpenCV参数说明可以参考《Opencv for python(2)–图像匹配》;
    这里我们尽量使用OpenCV已经实现好的匹配算法

  • 相关阅读:
    聊聊JDK19特性之虚拟线程
    CMSC5707-高级人工智能之语音识别
    PHP 脚本,其中包含一个函数,该函数会从给定的字符串列表中随机选择一个字符串并返回
    【MindSpore易点通】数据处理之NumPy练习--中级篇
    232 node 项目部署流程
    腾讯网关TGW基础原理入门
    一些奇奇怪怪的东西
    国民技术Cortex-M0系列单片机IAP升级
    EdgeX Foundry - 导出数据到 HTTP 服务
    互联网Java工程师面试题·MyBatis 篇·第二弹
  • 原文地址:https://blog.csdn.net/songyuc/article/details/132590456
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号