news 2026/4/26 16:50:52

Halcon彩图阈值分割、腐蚀和膨胀、顶帽和底帽处理、求图像边界轮廓

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Halcon彩图阈值分割、腐蚀和膨胀、顶帽和底帽处理、求图像边界轮廓

*彩图阈值分割:

•彩图转灰图:rgb1_to_gray ()
•从彩图当中提取3个通道的图像:decompose3 ()
•合并两个通道的算子:compose2()
•合并三个通道的算子,又合并为之前的彩图:compose3()
•获取图像是有几个通道组成的:count_channels ()
•通过索引值提取通道对应的图像:access_channel ()
•展示图像:dev_display()
*// 读取一张照片 read_image (Image1, 'claudia') *// 彩图转灰图 rgb1_to_gray (Image1, GrayImage) *// 从彩图当中提取3个通道的图像 decompose3 (Image1, Image11, Image2, Image3) *// 合并多个通道的图像 compose2 (Image11, Image2, MultiChannelImage)//compose2合并两个通道的算子 compose3 (Image11, Image2, Image3, MultiChannelImage1)//compose3合并三个通道的算子,又合并为之前的彩图 *// 展示合并之后的图像 dev_display (MultiChannelImage1) *// 获取图像是有几个通道组成的 count_channels (MultiChannelImage1, Channels)//3 *// 通过索引值提取通道对应的图像 access_channel (Image1, Image4, 3)

*腐蚀和膨胀:

•圆形的腐蚀 :erosion_circle ()
•形态学膨胀:dilation_circle ()
•形态学开运算(先腐蚀后膨胀):opening_circle ()
•形态学闭运算(先膨胀后腐蚀):closing_circle ()
*// 获取照片 read_image (Image, 'pcb_layout') *// 阈值分割 threshold (Image, Region, 0, 128) *// 圆形的腐蚀 半径是3.5 erosion_circle (Region, RegionErosion, 3.5) *// 形态学膨胀 dilation_circle (Region, RegionDilation, 3.5) *// 形态学开运算(先腐蚀后膨胀) opening_circle (Region, RegionDilation, 3.5) *// 形态学闭运算(先膨胀后腐蚀) closing_circle (RegionDilation, RegionClosing, 3.5)

*顶帽和底帽:

•创建一个顶帽的参考图:gen_disc_se()
•获取某个点灰度值的算子:get_grayval()
•灰度顶帽变换:gray_tophat()
•灰度开运算:gray_opening ()
•灰度底帽变换:gray_bothat ()
•灰度闭运算:gray_closing()
* ============================================== *// 顶帽(gray_tophat) & 底帽(gray_bothat) 原理验证 *// 顶帽公式:ImageTopHat = Image - ImageOpening (开运算) *// 底帽公式:ImageBottomHat = ImageClosing (闭运算) - Image * ============================================== *// 清空窗体 dev_clear_window () *// 获取照片 read_image (Image, 'printer_chip/printer_chip_01') *// 获取图片大小 get_image_size (Image, Width, Height) *// 显示图片 dev_display (Image) *// 创建一个顶帽/底帽的参考图(结构元素) *// byte: 图像的类型,字节类型 *// 21, 21: 参考图的大小 *// 10: 圆盘的半径 *// 255: 参考图的颜色灰度值 gen_disc_se (SE, 'byte', 21, 21, 255) *// ============ 顶帽操作验证 ============ *// 对图像进行顶帽操作 *// 参数1 目标图像进行顶帽处理 *// 参数2 结构图 可以通过gen_disc_se创建一个结构图 *// 参数3 顶帽之后的图像 gray_tophat (Image, SE, ImageTopHat) *// 灰度的开运算 gray_opening (Image, SE, ImageOpening)//21*21 *// 计算差值图像:Image - ImageOpening sub_image (Image, ImageOpening, ImageDiff1, 1, 0) *// 显示顶帽操作结果 dev_display (ImageTopHat) *// 显示差值 dev_display (ImageDiff1) *// ============ 底帽操作验证 ============ *// 对图像进行底帽操作 gray_bothat (Image, SE, ImageBotHat) *// 闭运算(用于验证) gray_closing (Image, SE, ImageClosing) *// 计算差值图像:ImageClosing - Image sub_image (ImageClosing, Image, ImageDiff2, 1, 0) *// 显示底帽操作结果 dev_display (ImageBotHat) *// 显示差值 dev_display (ImageDiff2) *// ============ 灰度值验证 ============ *// 选择中心点进行验证 Row := Height/2 Col := Width/2 *// 获取各个图像的灰度值 get_grayval (Image, Row, Col, Grayval_Original) get_grayval (ImageOpening, Row, Col, Grayval_Opening) *// ============ 应用示例 ============ *// 顶帽应用:提取亮的小物体(比如芯片上的标记) *// 通过顶帽增强原始图像中的亮细节 add_image (Image, ImageTopHat, ImageEnhanced1, 1, 0) *// 底帽应用:提取暗的小物体(比如缺陷) *// 通过底帽增强原始图像中的暗细节 add_image (Image, ImageBotHat, ImageEnhanced2, 1, 0)

*求边界轮廓:

•裁剪图像:reduce_domain()
•找外边界轮廓:boundary (, , 'outer')

*// 获取图片//--------------------- read_image (Image, 'fabrik') *// 阈值//--------------------- threshold (Image, Region, 80, 110) *// 连通//--------------------- connection (Region, ConnectedRegions) *// 面积筛选//--------------------- select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 40000, 99999) *// 形态学处理//--------------------- *// 打开运算 先腐蚀后膨胀, *// 参数1 对目标区域进行开运算 *// 参数2 开运算之后的 *// 参数3 腐蚀形状的半径 opening_circle (SelectedRegions, RegionOpening, 3.5) *// 形状变换的算子 把开运算之后的图像进行变换成其他形状//--------------------- *// 'rectangle1' 转换的形状类型 矩形 shape_trans (RegionOpening, RegionTrans, 'rectangle1') *// 裁剪图像 根据形状变换之后的矩形来去裁剪//--------------------- reduce_domain (Image, RegionTrans, ImageReduced) *// 阈值//--------------------- threshold (ImageReduced, Region1, 80, 255) *// 找内边界轮廓//--------------------- boundary (Region1, RegionBorder, 'inner') *// 找外边界轮廓//--------------------- boundary (Region1, RegionBorder2, 'outer')

希望对大家有所帮助, 感谢大家的关注和点赞。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 16:50:36

高增长科技股投资法 核心内容深度拆解

高增长科技股投资法 核心内容深度拆解 最近读了《高增长科技股投资法》,我发现这个很不错,也很符合这次周期的内容。 于是用AI生成了一个概要记录,给朋友们分享一下做个参考。 有时间推荐去读一下原书,内容很有意思,可…

作者头像 李华
网站建设 2026/4/23 17:43:30

【建议收藏】RAG工程化实践:六大模块详解,解决效果/成本/稳定性难题

文章面向RAG从概念验证走向生产环境的AI从业者,系统介绍了RAG的本质与边界、知识库构建、检索增强技术、生成推理链设计、评估监控体系及企业级部署策略。通过文档解析、文本切分、向量库构建、混合检索等关键技术,解决RAG系统效果、成本和稳定性挑战&am…

作者头像 李华
网站建设 2026/4/24 14:49:29

救命神器10个AI论文写作软件,本科生搞定毕业论文!

救命神器10个AI论文写作软件,本科生搞定毕业论文! AI 工具,让论文写作不再难 对于大多数本科生来说,毕业论文不仅是学术生涯的一次重要考验,更是一场与时间、压力和焦虑的较量。面对庞大的文献资料、复杂的逻辑结构以及…

作者头像 李华
网站建设 2026/4/23 17:44:47

Java 企业级 AI 框架:从落地到实践的技术路径

在 AI 技术深入产业应用的当下,Java 技术生态与 AI 能力的融合成为许多企业数字化转型的关键方向。对于 Java 技术公司和开发程序员而言,如何将 AI 能力稳定、高效地集成到现有系统中,避免重复开发和技术风险,是亟待解决的核心问题…

作者头像 李华
网站建设 2026/4/22 8:58:21

顶刊论文引言用AI怎么写?借助Gemini 3 Pro结合四段式写出逻辑清晰的Introduction

在SCI论文当中,引言是引导读者理解研究背景、明确研究价值的关键部分。作用可以简单概括为:“说明这项研究为什么非做不可。” 很多同仁在写SCI引言时,会存在专业术语误用、背景过于宽泛或者夸大创新等问题。 今天教你引言四段式写法(背景-缺口-目标-意义),结合AI工具,…

作者头像 李华