当前位置: 首页 > news >正文

OpenCV击中击不中HITMISS形态变换公开资料汇总

☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░

博文传送门:

老猿关于HTM变换的博文目录请见:
https://blog.csdn.net/LaoYuanPython/article/details/110676764 OpenCV-Python击中击不中HITMISS形态变换详解

老猿在学习OpenCV HITMISS形态变换过程中查阅了大量资料,这些资料的内容主要集中在原理介绍、OpenCV的支持函数介绍,仅有少部分涉及案例、且这些案例大多没有多少价值,这些资料大部分资料是交叉甚至重叠的,如果大家学习过程中再去全部查阅一遍会浪费大量时间和精力。

下面是老猿学习OpenCV HITMISS形态变换过程中查阅的公开资料中,个人认为比较有价值的资料,在此列出供大家参考。

一、Opencv图像识别从零到精通(18)-------击中击不中: http://www.bubuko.com/infodetail-1683783.html

该文介绍了击中击不中的原理和算法,关键内容摘抄如下:

Hit-miss原理:

基于腐蚀运算的一个特性:腐蚀的过程相当于对可以填入结构元素的位置作标记的过程。

腐蚀中,虽然标记点取决于原点在结构元素中的相对位置,但输出图像的形状与此无关,改变原点的位置,只会导致输出结果发生平移。 既然腐蚀的过程相当于对可以填入结构元素的位置作标记的过程,可以利用腐蚀来确定目标的位置。 进行目标检测,既要检测到目标的内部,也要检测到外部,即在一次运算中可以同时捕获内外标记。 由于以上两点,采用两个结构基元H、M,作为一个结构元素对B=(H,M),一个探测目标内部,一个探测目标外部。当且仅当H平移到某一点可填入X的内部,M平移到该点可填入X的外部时,该点才在击中击不中变换的输出中。

Hit-miss算法步骤:

击中击不中变换是形态学中用来检测特定形状所处位置的一个基本工具。它的原理就是使用腐蚀;如果要在一幅图像A上找到B形状的目标,我们要做的是:

  1. 首先,建立一个比B大的模板W;使用此模板对图像A进行腐蚀,得到图像假设为Process1;
  2. 其次,用B减去W,从而得到V模板(W-B);使用V模板对图像A的补集进行腐蚀,得到图像假设为Process2;
  3. 然后,Process1与Process2取交集;得到的结果就是B的位置。这里的位置可能不是B的中心位置,要视W-B时对齐的位置而异。

二、OpenCV中一个最容易搞错的形态学操作 :https://cloud.tencent.com/developer/article/1589572

该文是腾讯云的贾志刚-OpenCV学堂博客的一篇文章,同样介绍了原理和算法,不过没有上面那篇文章详细,另外该文借鉴了OpenCV官网的矩阵案例图解,作者自己肯定是完全弄懂了的,只不过写得还不很透彻,最后该文还有两个图形处理应用案例,不过案例代码中调用两次HTM变换,在没有完全弄懂相关知识时会容易让人误解。详细的内容大家参考原文,在此不进行摘抄了。不过其处理的两个图像案例,老猿准备在后面的博文中作为案例介绍和讲解。

三、opencv—击中击不中 :https://blog.csdn.net/m0_37992521/article/details/104855064

这篇文章本身的内容并无多少出彩之处,老猿之所以拿出来说,是因为这个案例的图像很有意思,老猿准备在后面也作为案例介绍。

四、形态学操作——击中击不中变换 :https://blog.csdn.net/qq_42604176/article/details/105007391

这篇文章同样介绍了击中击不中HITMISS形态变换的原理和算法,另外还提供了一个算法的C语言实现,可以让人对算法的实现有比较深的理解。

五、OpenCV官网资料

老猿最后解决的一些疑难问题主要是在查阅众多资料包含官网资料基础上,最后再次详细阅读官网资料的内容后解决的。相关官网文档请到https://docs.opencv.org/下载。

小结:

本文介绍了老猿学习击中击不中变换过程中觉得有价值的参考资料,结合这些资料的介绍对击中击不中的原理及算法会有比较清晰的理解,但这些原理和算法并不能让人很清晰地知道怎么调用OpenCV的HTM变化,上述文章的案例虽然有涉及,但一方面有些文章对于初学者容易产生误导,另一方面对于OpenCV的具体实现讲得也不是很透彻。如果阅读上述文章能让你完全理解击中击不中变换,则你至少在自学这方面的能力不低于老猿,如果你尚不能完全理解,存在疑问,这是完全正常的,老猿接下来的文章将帮助你解决这些问题。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多OpenCV-Python的介绍请参考专栏《OpenCV-Python图形图像处理 》
专栏网址:https://blog.csdn.net/laoyuanpython/category_9979286.html

关于老猿的付费专栏

  1. 付费专栏《使用PyQt开发图形界面Python应用 https://blog.csdn.net/laoyuanpython/category_9607725.html 》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《使用PyQt开发图形界面Python应用专栏目录 》(https://blog.csdn.net/LaoYuanPython/article/details/107580932);
  2. 付费专栏《moviepy音视频开发专栏 https://blog.csdn.net/laoyuanpython/category_10232926.html)详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《moviepy音视频开发专栏文章目录》(https://blog.csdn.net/LaoYuanPython/article/details/107574583);
  3. 付费专栏《OpenCV-Python初学者疑难问题集 https://blog.csdn.net/laoyuanpython/category_10581071.html》为《OpenCV-Python图形图像处理 https://blog.csdn.net/laoyuanpython/category_9979286.html》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《OpenCV-Python初学者疑难问题集专栏目录 https://blog.csdn.net/LaoYuanPython/article/details/109713407》。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《OpenCV-Python图形图像处理 https://blog.csdn.net/laoyuanpython/category_9979286.html》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》(https://blog.csdn.net/laoyuanpython/category_9831699.html)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python、学OpenCV!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

相关文章:

  • OpenCV图形图像击中击不中HITMISS变换处理基础知识
  • OpenCV-Python图像击中击不中变换理解的关键知识点及自定义实现
  • OpenCV-Python击中击不中HITMISS形态变换详解
  • OpenCV-Python击中击不中变换案例:长方形边界提取
  • OpenCV-Python击中击不中变换案例:绿叶轮廓提取
  • OpenCV-Python击中击不中变换案例:真图作核的绳网结匹配
  • 你不一定全知道的四种Python装饰器实现详解
  • 类的类装饰器简单实现思路及案例
  • OpenCV-Python图形图像处理:自用的一些工具函数源代码
  • OpenCV-Python图形图像处理:自用的一些工具函数功能及调用语法介绍
  • OpenCV-Python图形图像处理:split通道拆分和数组矩阵访问通道
  • Python图像处理:OpenCV HSV和标准表示法的区别以及转换
  • OpenCV-Python图像处理:用inRange刷选图像中指定颜色对象案例
  • PyQt事件信号实战:为QTableWidget提供键盘事件
  • OpenCV-Python图像处理:区分前景背景权重的图像融合案例
  • ----------
  • [nginx文档翻译系列] 控制nginx
  • C# 免费离线人脸识别 2.0 Demo
  • const let
  • ES6之路之模块详解
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript异步流程控制的前世今生
  • js正则,这点儿就够用了
  • leetcode386. Lexicographical Numbers
  • leetcode388. Longest Absolute File Path
  • Linux链接文件
  • Node + FFmpeg 实现Canvas动画导出视频
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • QQ浏览器x5内核的兼容性问题
  • spring boot下thymeleaf全局静态变量配置
  • TypeScript迭代器
  • Vue 动态创建 component
  • 从0到1:PostCSS 插件开发最佳实践
  • 聊聊flink的TableFactory
  • 扑朔迷离的属性和特性【彻底弄清】
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 再次简单明了总结flex布局,一看就懂...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #android不同版本废弃api,新api。
  • (javascript)再说document.body.scrollTop的使用问题
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)甲方乙方——赵民谈找工作
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net CHARTING图表控件下载地址
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET NPOI导出Excel详解
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...