机器视觉技术与应用实战(开运算、闭运算、细化)

开运算和闭运算的基础是膨胀和腐蚀,可以在看本文章前先阅读这篇文章机器视觉技术与应用实战(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('细化');

运行结果如下:
 

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

最后,写了这么多,有一个疑惑会产生,有了腐蚀和膨胀,为什么还需要开运算和闭运算呢?

可以这么思考:腐蚀在去除图像的噪声同时压缩图像,导致图像的前景变小。膨胀去除噪声并且扩大了前景,但是可能会增强图像的边缘噪声,这两者都有局限性。膨胀和腐蚀两者有互相弥补的特点,就出现了开运算和闭运算。

“人生用特写镜头来看是悲剧,长镜头来看则是喜剧。”当前的点滴是为后期厚积薄发做准备,趁青春,勇敢闯!

欢迎各位大佬指出文章不足!

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

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

相关文章

饥荒Mod 开发(十五):小地图显示物品

饥荒Mod 开发(十四):制作屏幕弹窗 本篇源码 饥荒中按下Tab键可以显示地图,刚开始进入游戏的时候地图是未探索状态,所以我们并不知道地图上面的物品分布情况。并且地图上只会显示很少一部分的物品,比如树枝,草&#xf…

C++二维数组(4)

蛇形遍历 题目描述:用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。 蛇形填充方法为: 对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各 条斜线&…

链表基础知识(二、双向链表头插、尾插、头删、尾删、查找、删除、插入)

目录 一、双向链表的概念 二、 双向链表的优缺点分析​与对比 2.1双向链表特点: 2.2双链表的优劣: 2.3循环链表的优劣 2.4 顺序表和双向链表的优缺点分析​ 三、带头双向循环链表增删改查实现 3.1SList.c 3.2创建一个新节点、头节点 3.3头插 3.…

C# WPF上位机开发(知识产权ip保护)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 上位机软件如果是和硬件模块搭配开发,这个时候大部分上位机基本上都是白送的,不会收取相关的费用。但是,如果上…

chrome升级后,调试vue在控制台输出总是显示cjs.js

当前chrome版本120.0.6099.72 在vue中使用console.log输出时,总是显示cjs.js多少多少行,不能显示源文件名及行数 【解决方案】 打开控制台的设置 左侧找到“Ignore List”,取消勾选"enable Lgnore Listing",并重启chr…

【Jmeter】Jmeter基础6-Jmeter元件介绍之前置处理器

前置处理器主要用于处理请求前的准备工作,如:参数、环境变量的设置等。 2.6.1、JSR223预处理程序 作用:请求前的准备工作。 参数说明: 语言:开发脚本所使用的语言,可通过下拉列表选择。参数:传…

Linux实操——安装Mysql

安装Mysql 一、检查是否已经安装了mariadb数据库,并卸载二、下载mysql包,并通过ftp上传到服务器三、解压安装包四、创建数据存储文件夹五、创建执行mysqld命令的用户,并初始化mysql六、启用传输安全七、启动mysql,验证是否安装成功 总结 博主…

【Hive】——DDL(DATABASE)

1 概述 2 创建数据库 create database if not exists test_database comment "this is my first db" with dbproperties (createdByAllen);3 描述数据库信息 describe 可以简写为desc extended 可以展示更多信息 describe database test_database; describe databa…

技术分享 | 接口测试价值与体系

如果把测试简单分为两类,那么就是客户端测试和服务端测试。移动端的测试包括 UI 测试,兼容性测试等,服务端测试包括接口测试。接口测试检查数据的交换、传递和控制管理过程。它绕过了客户端,直接对服务端进行测试。 接口测试的价值…

链表之带头双向循环链表(C语言版)

我们之前已经介绍过链表的知识了,这里我们直接开始实现带头双向循环链表 数据结构之单链表(不带头单向非循环链表)-CSDN博客 第一步:定义结构体 //定义结构体 typedef int SLTDateType; typedef struct Listnode {SLTDateType d…

字符设备驱动框架的编写

一. 简介 我们在学习裸机或者 STM32 的时候关于驱动的开发就是初始化相应的外设寄存器,在 Linux 驱动开发中,肯定也是要初始化相应的外设寄存器。 只是在 Linux 驱动开发中, 我们需要按照其规定的框架来编写驱动,所以说学 …

【HTML5、CSS3】新增特性总结!

文章目录 23 HTML5 新增特性23.1 语义化标签23.2 多媒体标签23.2.1 视频<video>标签23.2.2 音频<audio>标签 23.3 input属性值23.4 表单属性 24 CSS3 新增特性24.1 属性选择器24.2 结构伪类选择器24.2.1 选择第n个元素24.2.2 常用的6个结构伪类选择器 24.3 伪元素选…

如何用Python向图像中加入噪声

我们在做机器视觉项目的过程中&#xff0c;有的时候需要向图像中加入噪声。Pytorch本身不支持类似的功能&#xff0c;如果自己写的话&#xff0c;不但麻烦&#xff0c;而且容易出错。好在skimage支持这个功能。代码如下&#xff1a; import skimage import matplotlib.pyplot …

抚琴成一快-布鲁斯

布鲁斯 0.理论1.音阶1.大调布鲁斯音阶2.小调布鲁斯音阶 1.基础1.shuffle节奏制音2.十二小节3.和弦4.小调五声音阶 2.演奏手法1.Lamp and Lamp1.基础和声进行2.进阶和声进行1.quick change2. call and respond:3.回旋句 2.Box1.基础和声进行2.进阶和声进行 3.Boogie1.基础节奏2.…

【教学类-06-19】20231217 (按“列”正序题)X-Y之间“加法题+题”(1页最多0-13。填满115空格)

作品展示&#xff1a;按列排序&#xff0c;从小到大正序&#xff08;没有大量空格&#xff09; 1.会有空格做分割线&#xff0c;上面部分是所有的小到大正序加法&#xff0c;下面的部分就是正序题目的不重复随机抽取题目&#xff08;乱序题&#xff09; 2、包含分割空格&…

实验记录:深度学习模型收敛速度慢有哪些原因

深度学习模型收敛速度慢有哪些原因&#xff1f; 学习率设置不当&#xff1a; 学习率是算法中一个重要的超参数&#xff0c;它控制模型参数在每次迭代中的更新幅度。如果学习率过大&#xff0c;可能会导致模型在训练过程中的振荡&#xff0c;进而影响到收敛速度&#xff1b;如果…

【Windows】windows11右键默认显示更多选项的办法

Windows11系统的右键菜单显示&#xff0c;需要多点一次“显示更多选项”才能看到所有菜单内容&#xff0c;按下面步骤简单设置一下就能恢复成Windows经典的右键菜单显示。 1. 2.输入命令【reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a…

Redis - RDB与AOF持久化技术

Redis 持久化技术 RDB 是默认持久化方式&#xff0c;但 Redis 允许 RDB 与 AOF 两种持久化技术同时 开启&#xff0c;此时系统会使用 AOF 方式做持久化&#xff0c;即 AOF 持久化技术的优先级要更高。同样的道 理&#xff0c;两种技术同时开启状态下&#xff0c;系…

css的元素显示模式(有单行文字垂直居中,侧边栏等案例)

目录 1. 什么是元素的显示模式 2. 元素显示模式的类型 块元素 行内元素 行内块元素 3. 元素显示模式的转换 4.文字垂直居中 5.具体实现案例 1. 什么是元素的显示模式 定义&#xff1a;元素显示模式就是元素&#xff08;标签&#xff09;以什么方式进行显示&#xff0c;…

HarmonyOS鸿蒙应用开发——数据持久化Preferences封装

文章目录 数据持久化简述基本使用与封装测试用例参考 数据持久化简述 数据持久化就是将内存数据通过文件或者数据库的方式保存到设备中。HarmonyOS提供两两种持久化方案&#xff1a; Preferences&#xff1a;主要用于保存一些配置信息&#xff0c;是通过文本的形式存储的&…