机器视觉技术与应用实战(开运算、闭运算、细化)
开运算和闭运算的基础是膨胀和腐蚀,可以在看本文章前先阅读这篇文章机器视觉技术与应用实战(Chapter Two-04)-CSDN博客
开运算:先腐蚀后膨胀。开运算可以使图像的轮廓变得光滑,具有断开狭窄的间断和消除细小突出物的作用。
闭运算:先膨胀后腐蚀。它具有填充物体细小空间、消除缝隙、连接临近的物体和平滑边界轮廓的作用。
开和闭使用膨胀和腐蚀的顺序有区别,这个我们需要去理解它们作用,这样就更加好记住。开运算由于腐蚀先,腐蚀的作用更加明显,体现在断开连接作用,自然就是“开”。闭运算是膨胀先使用,影响更加大,起到了连接和填充的作用,更加有“闭”的含义了。
看了作用,当然要来一波效果瞧一瞧,注意了开运算和闭运算的基础是在膨胀和腐蚀上的,同样会有膨胀和腐蚀因为灰度不同产生貌似“不同的效果”。
使用Visionpro里面IPOneImage里面闭运算、开运算处理
原图:

闭运算:亮的部分(白色)填充,这里是填充作用,消除了噪点

开运算:亮的部分(白色)断开

在matlab中使用bwmorph函数来处理开运算和闭运算,还是采用相同的图片,我们用matlab来试一下开运算和闭运算,图片的名称为“image3.jpg"。

I1 = imread('image3.jpg'); %读取原图像
level=graythresh(I1); %最大类间方差法找到图片的一个合适的阈值
I = im2bw(I1, level); %二值化图像
I2= bwmorph(I, 'open'); %开运算
I3= bwmorph(I, 'close'); %闭运算
figure('name','开运算和闭运算');
subplot(1,3,1); %一行三列第一张
imshow(I);
title('原图像');
subplot(1,3,2); %一行三列第二张
imshow(I2);
title('开运算');
subplot(1,3,3); %一行三列第三张
imshow(I3);
title('闭运算');
效果如下:
在Visionpro中我调整了结构元素(内核)的大小,和matlab中展示的效果稍有区别。可能会有友友想问为什么用visionpro,其实传统机器视觉在工业领域通常采用visionpro和halcon,在我接触到的项目领域里面采用了visionpro,当然如果是在学术界,matlab会使用得更加多。
接下来,我们讲一下细化
一个图像的“骨架”,是指图像中央的骨骼部分,是描述图像几何重要特征之一。求一幅图像的“骨架”的过程通常称作为图像的“细化”的过程,当然也可以这么说,细化*是把一个平面区域简化成图的结构形状表示方法*。由此可以看出细化作用就是有助于突出图像形状特点和减少冗余信息量。
细化的过程通常是:图像特征有规律的减少像素点(宽度变窄),在减少的过程中,图像的连通性要求保持不变。
细化的概念还是非常好理解的吧,直接看一下效果吧,注意了细化前务必对图像进行一定处理,确保噪声等不会影响到细化。
原图:

代码如下:
y1 = imread('7.jpg'); %读取原图像
level=graythresh(y1); %最大类间方差法找到图片的一个合适的阈值
y = im2bw(y1, level); %二值化图像
figure('name','细化');
subplot(1,2,1); imshow(y); title('原始图像');
img_thin = bwmorph(y, 'thin', Inf);% 细化
subplot(1,2,2); imshow(img_thin); title('细化');
运行结果如下:

从上面可以看到,细化提取了图像的”骨架“,图像太小了,实际上那些线是连接的,连通的。放大版:

最后,写了这么多,有一个疑惑会产生,有了腐蚀和膨胀,为什么还需要开运算和闭运算呢?
可以这么思考:腐蚀在去除图像的噪声同时压缩图像,导致图像的前景变小。膨胀去除噪声并且扩大了前景,但是可能会增强图像的边缘噪声,这两者都有局限性。膨胀和腐蚀两者有互相弥补的特点,就出现了开运算和闭运算。
“人生用特写镜头来看是悲剧,长镜头来看则是喜剧。”当前的点滴是为后期厚积薄发做准备,趁青春,勇敢闯!
欢迎各位大佬指出文章不足!
相关文章:
机器视觉技术与应用实战(开运算、闭运算、细化)
开运算和闭运算的基础是膨胀和腐蚀,可以在看本文章前先阅读这篇文章机器视觉技术与应用实战(Chapter Two-04)-CSDN博客 开运算:先腐蚀后膨胀。开运算可以使图像的轮廓变得光滑,具有断开狭窄的间断和消除细小突出物的作…...
云原生之深入解析云原生架构的日志监控
一、什么是云原生架构的日志监控? 云原生架构的日志监控要求现代 Web 应用程序采用与传统应用程序略有不同的方法。部分原因是应用程序环境要复杂得多,包括从微服务中获取数据、使用 Kubernetes 和其他容器技术,以及在许多情况下集成开源组件…...
基于hfl/rbt3模型的情感分析学习研究——文本挖掘
参考书籍《HuggingFace自然语言处理详解 》 什么是文本挖掘 文本挖掘(Text mining)有时也被称为文字探勘、文本数据挖掘等,大致相当于文字分析,一般指文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生&…...
计算机网络基础——常用的中英文网络述语大全,强烈建议收藏
系统网络体系结构(System Network Architecture,SNA) 国际标准化组织(International Organization for Standardization,ISO) 开放系统互连基本参考模型(Open System Interconnection Reference Model。OSI/RM) 物理层(Physical Layer) 数据终端设备…...
c++如何自定义类及成员函数
#include <iostream>using namespace std;class Box {public:double length; // 长度double breadth; // 宽度double height; // 高度// 成员函数声明double get(void);void set( double len, double bre, double hei ); }; // 成员函数定义 double Box::get(void) …...
100G云数据中心网络建设解决方案
随着数据和流量的快速增长,近年来数据中心已经进入了一个全新的100G时代。为了更高效地提供包括人工智能、虚拟现实、4K视频等在内的云计算服务,全球范围内正在大规模建设众多大型100G数据中心,如云数据中心。作为一种新型高效的基础设施&…...
Zoho Desk为何受到跨境电商企业青睐:优势与特点解析
现如今,跨境电商已成为中国外贸发展的一支重要力量,正从一种新业态成长为外贸的新常态。越来越多的国内电商玩家加入了跨境电商这个战场。跨境电商自有其特殊性,海外客户服务不好一样惨遭投诉,Zoho Desk可以帮助您赢得客户满意度&…...
git 删除仓库中多余的文件或者文件夹
目录 问题 解决方案 第一步:同步代码 第二步:删除文件 第三步:提交 第四步:推送远端 问题 在项目开发测试阶段,将无意间将本地敏感的、或无用的文件或目录不小心提交到远程仓库,该怎么解决呢。 解决方…...
搭建git服务器(本地局域网)
搭建git服务器(本地局域网) 创建仓库 (假定在/home/git目录下创建仓库) git init --bare sample.git克隆远程仓库到本地 git clone git192.168.0.100:/home/git/sample.git已有项目,绑定远程仓库 # 查看远程仓库绑定 git remote -v# 解除…...
如何让营销更生动,更有效!
作为专业的营销人员,我们深知在当今竞争激烈的市场环境中,如何让自己的产品或服务脱颖而出,吸引更多的潜在客户,是企业成功的关键。而中昱维信视频短信平台,正是您实现这一目标的得力助手。 一、视频短信,…...
RestTemplate请求参数需要转义 处理
项目需求 iam的token鉴权 需要带转义的回调http路径 用以下处理参数 接口仍然返回异常: public String authBack(String backUrl){ // backUrl http://192.168.1.156:sdm/String state URLEncoder.encode(state, "UTF-8"); }查了一下,Rest…...
使用Kaptcha实现的验证码功能
目录 一.需求 二.验证码功能实现步骤 验证码 引入kaptcha依赖 完成application.yml配置文件 浏览器显示验证码 前端页面 登录页面 验证成功页面 后端 此验证码功能是以SpringBoot框架下基于kaptcha插件来实现的。 一.需求 1.页面生成验证码 2.输入验证码ÿ…...
【无标题】CTF之SQLMAP
拿这一题来说 抓个包 复制报文 启动我们的sqlmap kali里边 sqlmap -r 文件路径 --dump --dbs 数据库 --tables 表...
【Qt之Quick模块】1. 概述及Quick应用程序创建流程
概述 Qt的Quick模块是用于创建现代化、动态和响应式用户界面的工具集。它是基于QML(Qt Meta-Object Language)和JavaScript的。 QML是一种声明性的语言,用于描述用户界面的结构和行为。它使用层叠样式表(CSS)的语法来…...
C语言-数组指针笔试题讲解(1)-干货满满!!!
文章目录 ▶️1.sizeof和strlen的对比💯➡️1.1 sizeof是什么?💯➡️1.2sizeof用法举例💯▶️1.3strlen是什么?💯▶️1.4 strlen函数用法举例:💯▶️1.5 strlen和sizeof的对比&#…...
springboot整合vue,将vue项目整合到springboot项目中
将vue项目打包后,与springboot项目整合。 第一步,使用springboot中的thymeleaf模板引擎 导入依赖 <!-- thymeleaf 模板 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-t…...
C++ 二叉搜索树(BST)的实现(非递归版本与递归版本)与应用
C 二叉搜索树的实现与应用 一.二叉搜索树的特点二.我们要实现的大致框架三.Insert四.InOrder和Find1.InOrder2.Find 五.Erase六.Find,Insert,Erase的递归版本1.FindR2.InsertR3.EraseR 七.析构,拷贝构造,赋值运算符重载1.析构2.拷贝构造3.赋值运算重载 八.Key模型完整代码九.二…...
分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】
分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现AOA-SVM算术优化支持向量机的数据分类预测…...
代码随想录算法训练营第七天 | 454.四数相加II、383. 赎金信、15. 三数之和 、18. 四数之和
454.四数相加II 题目链接:454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0…...
SpringBoot 3.2.0 版本 mysql 依赖下载错误
最近想尝试一下最新的 SpringBoot 项目,于是将自己的开源项目进行了一些升级。 JDK 版本从 JDK8 升级至 JDK17。SpringBoot 版本从 SpringBoot 2.7.3 升级到 SpringBoot 3.2.0 其中 JDK 的升级比较顺利,毕竟 JDK 的旧版本兼容性一直非常好。 但是在升级…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
