计算机视觉与模式识别实验1-2 图像的形态学操作

文章目录

    • 🧡🧡实验流程🧡🧡
      • 1.图像膨胀
      • 2.图像腐蚀
      • 3.膨胀与腐蚀的综合使用
      • 4.对下面二值图像的目标提取骨架,并分析骨架结构。
    • 🧡🧡全部代码🧡🧡

🧡🧡实验流程🧡🧡

1.图像膨胀

膨胀原理:设置一个3x3的矩阵,遍历每个像素点,该像素点的值等于以该像素点为中心的3*3范围内的最大值。由于是二值图像(要么0黑,要么255白),所以只要包含周围白(255)的部分,就变为白的。如下,字的外轮廓变粗。
在这里插入图片描述

2.图像腐蚀

腐蚀原理:与膨胀相反,设置一个3x3的矩阵,遍历每个像素点,该像素点的值等于以该像素点为中心的3*3范围内的最小值。由于是二值图像(要么0黑,要么255白),所以只要包含周围黑(0)的部分,就变为黑的。如下,腐蚀后,减少了一些毛刺,并且字体外形向内凹陷变瘦。
在这里插入图片描述

3.膨胀与腐蚀的综合使用

开操作原理:在上述腐蚀操作中,虽然能去除毛刺,但是会对原字体有影响(轮廓变细了),因此再补上膨胀操作,使得字体加粗,即进行先腐蚀后膨胀的操作。如下图,“开”字的毛刺去除了,同时字体轮廓粗细跟原来一样。
在这里插入图片描述
闭操作原理:与开操作相反,即进行先膨胀后腐蚀的操作。相当于先放大所有细节(这样子一些缺陷就可以闭合),然后腐蚀缩小到原字体粗细。如下,“闭”字几个封口闭合了。
在这里插入图片描述

4.对下面二值图像的目标提取骨架,并分析骨架结构。

在这里插入图片描述
梯度计算原理:膨胀图像-腐蚀图像,用大一圈的图像减去小一圈的图像正好就是边缘的信息
在这里插入图片描述

🧡🧡全部代码🧡🧡

import cv2
import numpy as np
import matplotlib.pyplot as pltdef cv_show(img):cv2.imshow('Image', img)cv2.waitKey(0)cv2.destroyAllWindows()"""2-1 膨胀操作
""" 
ori = cv2.imread('img/test1_dilate.png') # 注意不要有中文
kernel = np.ones((3, 3), dtype=np.uint8)
dilate = cv2.dilate(ori, kernel, iterations=1) # 1:迭代次数,也就是执行几次膨胀操作
res = np.hstack((ori, dilate)) # 拼接在一起
cv_show(res)"""2-2 腐蚀操作
"""
ori = cv2.imread('img/test1_erode.png') 
kernel = np.ones((3, 3), dtype=np.uint8)
erosion = cv2.erode(ori, kernel, iterations=1)
res = np.hstack((ori, erosion))
cv_show(res)"""2-3 开闭运算
"""
ori = cv2.imread('img/test1_open_close.png') 
kernel = np.ones((5, 5), dtype=np.uint8)opening = cv2.morphologyEx(ori, cv2.MORPH_OPEN, kernel, 1)
res = np.hstack((ori, opening))
cv_show(res)
closing = cv2.morphologyEx(ori, cv2.MORPH_CLOSE, kernel, 1)  # 有缺陷,填补缺陷
res = np.hstack((ori, closing))
cv_show(res)"""2-4 梯度计算 -- 提取骨架
"""
ori = cv2.imread('img/test1_morph.png') 
kernel = np.ones((3, 3), dtype=np.uint8)
gradient = cv2.morphologyEx(ori, cv2.MORPH_GRADIENT, kernel)
cv_show(gradient)

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

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

相关文章

洛谷 B3642:二叉树的遍历 ← 结构体方法 链式前向星方法

【题目来源】https://www.luogu.com.cn/problem/B3642【题目描述】 有一个 n(n≤10^6) 个结点的二叉树。给出每个结点的两个子结点编号(均不超过 n),建立一棵二叉树(根结点的编号为 1),如果是叶子结点&…

tomcat中管理环境变量之setenv.sh

tomcat配置spring profiles springboot打包war部署到外部tomcat的时候指定profile启动 windows 在%tomcat%/bin下创建setenv.bat文件 linux 在%tomcat%/bin下创建setenv.sh文件 使用JVM参数: windows set "JAVA_OPTS%JAVA_OPTS% -Dspring.profiles.activedev"in…

Python学习笔记-JSON数据格式的转化

1.json的格式 json本质上是一个特定格式的字符串 #json数据的格式可以是: {"name":"admin","age":18}#也可以是: [{"name":"admin","age":18},{"name":"root","…

科技云报道:大模型风起云涌,向量数据库终有“用武之地”?

科技云报道原创。 每逢淘金热,最后的赢家都是卖铲人,而非淘金者。在近两年的大模型风口下,向量数据库就成了这把铲子。 随着大模型快速发展,向量数据库正在成为企业便捷使用大模型、最大化发挥数据价值的关键工具。据IDC调查数据…

Python自动化办公2.0 即将发布

第一节课:数据整理与清洗 第二节课:数据筛选、过滤与排序 第三节课:高级数据处理技巧 第四节课:数据可视化与实践案例 第五节课:统计分析与报表 第六节:常见的Excel报表 与下方的课程形成知识体系&…

vue3学习(六)

前言 接上一篇学习笔记,今天主要是抽空学习了vue的状态管理,这里学习的是vuex,版本4.1。学习还没有学习完,里面有大坑,难怪现在官网出的状态管理用Pinia。 一、vuex状态管理知识点 上面的方式没有写全,还有…

如何在Windows 10上更改默认系统字体,这里有详细步骤

Windows 10的默认系统字体Segoe UI看起来相当不错。但是,如果你有更好的替代品,你可以更改Windows 10 PC上的默认系统字体。我们将向你展示如何执行此操作。 如何使用注册表编辑器更改默认系统字体 在撰写本文时,“设置”和“控制面板”都没有更改默认系统字体的选项。这意…

官网:管它日薄西山or蒸蒸日上,气质这块,必须拿捏死死的。

在日薄西山的时候,网站建设面临着许多困难和挑战。市场竞争激烈,用户需求多样化,技术更新迅速,这些都要求我们在网站建设中拥有高尚的气质。 而在蒸蒸日上的时刻,网站建设同样需要我们拿捏好气质。只有坚持下去&#…

MFC实现守护进程,包括开机自启动、进程单例、进程查询、进程等待、重启进程、关闭进程

在Windows平台上实现一个守护进程,由于与系统有关,所有使用MFC来实现是最合适的,被守护的进程则不限语言。废话不多,直接开整。 目录 1. 开机自启动 2. 进程单例 3. 进程查询 4. 进程等待 5. 重启进程 6. 关闭进程 7、最后…

软件和系统集成项目确认测试报告的费用需要多少?

确认测试报告 软件和系统集成项目确认测试报告的费用因多种因素而异,包括项目的规模、复杂度、测试范围、测试周期等。第三方软件测试机构价格区间一般是几千到几万不等,还有些会根据建设费用的2-5%进行收费。 一般来说,软件和系统集成项目…

如何使用JavaScript获取当前URL?

在现代开发中,我们经常需要获取当前网页的URL来完成各种操作,例如页面重定向、参数解析等。在URL的处理上,JavaScript提供了一系列强大且便捷的工具。这篇文章将详细讲解如何使用JavaScript获取当前页面的URL,并分解URL的各个组成部分。 使用JavaScript获取完整的URL 获取…

element ui el-calendar日历组件完整代码

el-calendar日历组件完整代码 1. 说在前面2. 日历整体代码3. 编辑与新增 1. 说在前面 最近一直忙于上班,没咋看博客,发现很多小伙伴都要日历组件的代码,于是今天抽空给大家整理一下,为爱发电!日历组件的原文在这里&am…

mysql中的IN和NOT IN

在MySQL中,IN 和 NOT IN 是用于进行集合比较的条件运算符。它们可以用于简化多个 OR 或 AND 条件的查询。这些运算符在查询语句中非常常见,用于检查某个值是否在指定的集合中。 IN 运算符用于检查某个值是否在指定的集合中。NOT IN 运算符用于检查某个值…

USB转串口针线 USB四根线

USB转RS485 RXD 和 RXD- 分别代表数据接收的正端和负端。在一对通讯系统中,RXD信号在DTE设备端(如计算机、工程主机)为输入信号,即数据接收端。其中,RXD代表数据接收的正端,而RXD-代表数据接收的负端。 T…

如何构建最小堆?

方式1&#xff1a;上浮调整 /*** 上浮调整(小的上浮)*/ public static void smallUp1(int[] arr, int child) {int parent (child - 1) / 2;while (0 < child && arr[child] < arr[parent]) { // 0 < child说明这个节点还是叶子arr[child] arr[child] ^ ar…

吊车近电报警器:各种高空作业车辆防触电事故设备

吊车近电报警器&#xff1a;各种高空作业车辆防触电事故设备 吊车近电报警器是专门用于防止大型高空作业车&#xff08;如吊车、起重机、消防车等&#xff09;在作业过程中触碰高压线路而引发事故的装置。该装置能够实时监测吊车与高压电线之间的距离&#xff0c;并在危险情况…

静态链表具体题目处理详解

题目 给出两条链表的首地址以及若干结点的地址、数据、下一个结点的地址&#xff0c;求两条链表的首个共用结点的地址。如果两条链表没有共用结点&#xff0c;则输出-1. 思路 &#xff08;1&#xff09;由于地址的范围很小&#xff0c;因此可以直接用静态链表&#xff0c;但…

计算机视觉与模式识别实验1-1 图像的直方图平衡

文章目录 &#x1f9e1;&#x1f9e1;实验流程&#x1f9e1;&#x1f9e1;1.读入图像‘rice.png’&#xff0c;在一个窗口中显示灰度级n64&#xff0c;128和256的图像直方图。2.调解图像灰度范围&#xff0c;观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti…

③单细胞学习-pbmc的Seurat 流程

目录 1&#xff0c;数据读取 2&#xff0c;线粒体基因查看 3&#xff0c;数据标准化 4&#xff0c;识别高变基因 5&#xff0c;进行数据归一化 6&#xff0c;进行线性降维 7&#xff0c;确定细胞簇 8&#xff0c;UMAP/tSNE降维&#xff08;保存pbmc_tutorial.rds&#…

mirth Connect 自定义JAVA_HOME

mirth Connect 自定义JAVA_HOME 1、背景 服务器上安装了两个不同版本的Java&#xff0c;我希望Mirth服务使用与默认系统不同的版本。自定义指定java版本 2、解决方法 2.1 优先级说明 系统变量JAVA_HOME (设置后&#xff0c;mirth会根据这个进行启动运行服务&#xff0c;优先级…