halcon形态学运算
腐蚀、膨胀、开运算(先腐蚀后膨胀)、闭运算(先膨胀后腐蚀)
以halcon自带案例ball.hdev为例(开运算),注意代码有所缩减。关于sort_region函数,参考http://blog.sina.com.cn/s/blog_13849dbbc0102xhts.html
dev_update_window ('off') //停止更新窗体 dev_close_window () //关闭窗体 dev_open_window (0, 0, 728, 512, 'black', WindowID) //创建窗口,并指定句柄 read_image (Bond, 'die/die_03') dev_display (Bond) threshold (Bond, Bright, 100, 255)//二值化,灰度直方图工具 shape_trans (Bright, Die, 'rectangle2') //形状变换,获得二值图连通域的最小外接矩形 dev_display (Die) reduce_domain (Bond, Die, DieGrey) //缩减区域,缩放原区域至新的范围,新范围必须是原范围的子域。 threshold (DieGrey, Wires, 0, 50) fill_up_shape (Wires, WiresFilled, 'area', 1, 100)//孔洞填充,面积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 := 2 * Radius meanDiameter := mean(Diameter) //可省略 minDiameter := min(Diameter) //可省略 dev_display (Bond) //显示原图 disp_circle (WindowID, Row, Column, Radius) //显示外接圆直径,在圆上方 disp_message (WindowID, 'D: ' + Diameter$'.4', 'image', Row - 2 * Radius, Column, 'white', 'false') dev_update_window ('on') //更新窗体
若只显示第2-3的外接圆直径,可以更改相应代码
disp_message (WindowID, 'D: ' + Diameter[1:2]$'.4', 'image', Row[1:2] - 2 * Radius[1:2], Column[1:2], 'white', 'false')
重要步骤图(只截取了右部区域):
原图——二值化——最小外接矩形——缩减区域(获得ROI)
二值化——孔洞填充——开运算——连通域拆分,得到目标圆——显示参数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!