腐蚀、膨胀、开运算(先腐蚀后膨胀)、闭运算(先膨胀后腐蚀)

以halcon自带案例ball.hdev为例(开运算),注意代码有所缩减。关于sort_region函数,参考http://blog.sina.com.cn/s/blog_13849dbbc0102xhts.html

dev_update_window ('off') //停止更新窗体
dev_close_window () //关闭窗体
dev_open_window (, , , , 'black', WindowID) //创建窗口,并指定句柄
read_image (Bond, 'die/die_03')
dev_display (Bond)
threshold (Bond, Bright, , )//二值化,灰度直方图工具
shape_trans (Bright, Die, 'rectangle2') //形状变换,获得二值图连通域的最小外接矩形
dev_display (Die)
reduce_domain (Bond, Die, DieGrey) //缩减区域,缩放原区域至新的范围,新范围必须是原范围的子域。
threshold (DieGrey, Wires, , )
fill_up_shape (Wires, WiresFilled, 'area', , )//孔洞填充,面积1~100的孔洞
dev_display (WiresFilled)
opening_circle (WiresFilled, Balls, 15.5) //开运算,先腐蚀后膨胀。留下面积较大的区域
dev_display (Balls)
connection (Balls, SingleBalls) //连通域拆分
//拆分后,特征直方图,通过圆度选取目标圆
select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0)
//可以省略排序步骤,除非需要显示部分目标的参数(如只显示第2-3的外接圆直径)
sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')//排序区域,按列排序从左边第一个升序
dev_display (FinalBalls)
smallest_circle (FinalBalls, Row, Column, Radius)//获得每个区域最小外接圆参数
NumBalls := |Radius|
Diameter := * Radius
meanDiameter := mean(Diameter) //可省略
minDiameter := min(Diameter) //可省略
dev_display (Bond) //显示原图
disp_circle (WindowID, Row, Column, Radius)
//显示外接圆直径,在圆上方
disp_message (WindowID, 'D: ' + Diameter$'.4', 'image', Row - * Radius, Column, 'white', 'false')
dev_update_window ('on') //更新窗体

若只显示第2-3的外接圆直径,可以更改相应代码

disp_message (WindowID, 'D: ' + Diameter[:]$'.4', 'image', Row[:] -  * Radius[:], Column[:], 'white', 'false')

重要步骤图(只截取了右部区域):

原图——二值化——最小外接矩形——缩减区域(获得ROI)

二值化——孔洞填充——开运算——连通域拆分,得到目标圆——显示参数

halcon形态学运算的更多相关文章

  1. OpenCV2.x自学笔记——形态学运算

    名称 标识符 作用 原理 腐蚀 MORPH_ERODE 膨胀 MORPH_DILATE 开运算 MORPH_OPEN 消除细白点 先腐蚀后膨胀 闭运算 MORPH_CLOSE 消除小黑洞 先膨胀后腐蚀 ...

  2. Halcon一维运算相关算子整理

    Halcon一维离散函数算子 1.      abs_funct_1d  计算一维数组的绝对值 2.      compose_funct_1将两个离散的一维函数合并为一个函数 3.      cre ...

  3. halcon区域运算

    区域运算: Ø 并:union1().union2(): Ø 交:intersection(); Ø 差:difference(); Ø 补:complement():

  4. Region特征算子与形态学运算——第3讲

      问题提出:求下图中楔形缺口到圆心的最短距离. [涉及知识点讲解] 一.Region特征算子 在图形窗口中用鼠标单击选中某个Region,然后点击菜单栏的“打开特征检测”图标,就可以看到当前Regi ...

  5. 学习 opencv---(10)形态学图像处理(2):开运算,闭运算,形态学梯度,顶帽,黒帽合辑

    上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换. 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和 ...

  6. 【OpenCV新手教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/23184547 作者:毛星云(浅墨) ...

  7. 形态学及其他集合运算(Morphological and Other Set Operations)

    摘    要:本实验主要实现形态学图像处理.主要验证图像集合的交并补运算.膨胀和腐蚀处理并利用图像集合的运算,实现形态学边界抽取算法并进行特征边界抽取.同时将膨胀和腐蚀扩展至灰度图像,编写函数实现灰度 ...

  8. opencv-图像形态学之开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    转自:https://blog.csdn.net/poem_qianmo/article/details/24599073 1.1 开运算(Opening Operation) 开运算(Opening ...

  9. opencv —— morphologyEx 开运算、闭运算、形态学梯度、顶帽、黑帽

    开运算:先腐蚀后膨胀. 能够排除小亮点. 闭运算:先膨胀后腐蚀. 能够排除小黑点. 形态学梯度:膨胀图 — 腐蚀图. 对二值图像进行这一操作,可将图块的边缘突出出来,故可用来保留物体边缘轮廓. 顶帽: ...

随机推荐

  1. 获取DataSet中某行某列的数据

    LabelText = DataSet11.Tables("COMM.USERS").Rows[0]["User_Name"].tostring() Label ...

  2. vue循環語句

    迭代數組: v-for="site in sites”,sites表示源數組名,site表示數組元素: 迭代對象: v-for=“value in Object”, v-for=" ...

  3. 为什么int型最大的数是2147483647

    32位的电脑中,用二进制表示,最大的就是32个1,用十进制表示为2^32-1,大概40多亿(4294967295) 对于有符号的,第一位用作表示正负(0,1),最大的就是31个1,用十进制表示为2^3 ...

  4. ES 6 系列 - Module 的语法

    es 6 大幅度优化了模块化编程的规范. 写在前面:在 es6 之前,说起 js 的模块化,一般都避不开 CommonJs 和 AMD 两种方案.这两种方案,前者应用于服务器,后者应用于浏览器.而 e ...

  5. How to RAMDISK on macOS

    diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://8388608`

  6. NoClassDefFoundError与ClassNotFoundException

    原文地址: https://blog.csdn.net/jamesjxin/article/details/46606307 怎么解决NoClassDefFoundError错误 NoClassDef ...

  7. xshell使用rz/sz完成文件上传下载

    yum -y install lrzsz 安装lrzsz 使用rz完成文件上传 使用sz完成文件下载

  8. 查询SQL执行情况

    /* 查询SQL执行情况 包含逻辑读取信息,执行信息等情况*/ SELECT creation_time N'语句编译时间' ,last_execution_time N'上次执行时间' ,total ...

  9. 实验九 在JSP中使用数据库

    实验性质:验证性 实验学时: 1学时 实验地点: 一 .实验目的与要求 1. 掌握在JSP中使用数据库的方法. 2. 掌握JSP对数据库的基本操作:增.删.改.查. 二. 实验内容 1.JSP访问数据 ...

  10. GCD HDU - 2588

    输入 N 和 M (2<=N<=1000000000, 1<=M<=N), 找出所有满足1<=X<=N 且 gcd(X,N)>=M 的 X 的数量. Inpu ...