news 2026/5/30 14:48:34

Vision pro 项目分享:Pcd板线路检测(与halcon比较)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vision pro 项目分享:Pcd板线路检测(与halcon比较)

摸鱼时偶然注意到halcon短短三行代码就能实现pcd板线路断路,短路检测,挑战用Vision pro复刻该项目

一.算法原理

参考halcon实现原理(效果图在最下方):

1.对图像进行灰度开运算和灰度闭运算,使用7x7的八角形结构元素。

2.使用动态阈值(dyn_threshold)将开运算和闭运算的结果进行比较,以分割出电路断线区域。

3.用红色显示检测到的断线区域。

*halcon *灰度开运算 gray_opening_shape (Image, ImageOpening, 7, 7, 'octagon') *灰度闭运算 gray_closing_shape (Image, ImageClosing, 7, 7, 'octagon') *局部阈值分割电路断线 dyn_threshold (ImageOpening, ImageClosing, RegionDynThresh, 75, 'not_equal') *dev_display (RegionDynThresh)

总结原理就是正常线路在形态学处理前后变化不大,而有缺陷的线路会产生显著差异,接下来用vp挑战。

二.工具配置

主要工具选择如下:

1.用PixelMapTool预处理图像(加强黑白分明)简单处理

2.单图像处理只用了灰度形态调整5x5(测试效果比较好)

3.用CogIPTwoImageSubtractTool计算两个图像的差异,然后对差异图像进行阈值处理。(溢位模式选择绝对值)

4.利用斑点分析工具对差异图像进行阈值分割,输入合适阈值和面积卡控,输出阈值分割后的二值图像

三.多矩形标记代码

代码逻辑结构说明:简简单单的多矩形框显示代码

1. 初始化数据存储结构

private List<CogRectangleAffine> blobRects = new List<CogRectangleAffine>();

创建了一个CogRectangleAffine类型的列表blobRects,用于存储每个检测到的缺陷区域的矩形标注信息。

2.遍历每个Blob检测结果,为每个检测到的斑点创建一个固定的20×20像素的红色矩形标注。矩形中心定位在斑点的质心位置(CenterOfMassX,CenterOfMassY)。所有创建的矩形都存储在blobRects列表中,用于后续的显示处理。

3.将之前生成的矩形标注添加到指定工具(CogPixelMapTool1)的输入图像显示中

完整代码:

#region namespace imports using System; using System.Collections; using System.Drawing; using System.IO; using System.Windows.Forms; using Cognex.VisionPro; using Cognex.VisionPro.ToolBlock; using Cognex.VisionPro3D; using Cognex.VisionPro.PixelMap; using Cognex.VisionPro.ImageProcessing; using Cognex.VisionPro.Blob; using System.Collections.Generic; #endregion public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase { #region Private Member Variables private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock; private List<CogRectangleAffine> blobRects = new List<CogRectangleAffine>(); #endregion /// <summary> /// Called when the parent tool is run. /// Add code here to customize or replace the normal run behavior. /// </summary> /// <param name="message">Sets the Message in the tool's RunStatus.</param> /// <param name="result">Sets the Result in the tool's RunStatus</param> /// <returns>True if the tool should run normally, /// False if GroupRun customizes run behavior</returns> public override bool GroupRun(ref string message, ref CogToolResultConstants result) { // 运行每个工具 foreach(ICogTool tool in mToolBlock.Tools) mToolBlock.RunTool(tool, ref message, ref result); var blobTool = mToolBlock.Tools["CogBlobTool1"] as CogBlobTool; if (blobTool != null && blobTool.Results != null) { var blobs = blobTool.Results.GetBlobs(); // 清空之前的矩形列表 blobRects.Clear(); for (int i = 0; i < blobs.Count; i++) { var blobResult = blobs[i]; // 创建矩形 CogRectangleAffine rect = new CogRectangleAffine(); rect.Color = CogColorConstants.Red; rect.LineWidthInScreenPixels = 2; rect.CenterX = blobResult.CenterOfMassX; rect.CenterY = blobResult.CenterOfMassY; rect.SideXLength = 20; rect.SideYLength = 20; rect.Rotation = 0; // 添加到列表 blobRects.Add(rect); } } return false; } #region When the Current Run Record is Created /// <summary> /// Called when the current record may have changed and is being reconstructed /// </summary> /// <param name="currentRecord"> /// The new currentRecord is available to be initialized or customized.</param> public override void ModifyCurrentRunRecord(Cognex.VisionPro.ICogRecord currentRecord) { } #endregion #region When the Last Run Record is Created /// <summary> /// Called when the last run record may have changed and is being reconstructed /// </summary> /// <param name="lastRecord"> /// The new last run record is available to be initialized or customized.</param> public override void ModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord) { // 遍历所有矩形并添加到CogPixelMapTool1.InputImage的显示中 foreach(CogRectangleAffine rect in blobRects) { // 使用AddGraphicToRunRecord方法添加图形到指定工具的输入图像 mToolBlock.AddGraphicToRunRecord(rect, lastRecord, "CogPixelMapTool1.InputImage", "Input Image"); } } #endregion #region When the Script is Initialized /// <summary> /// Perform any initialization required by your script here /// </summary> /// <param name="host">The host tool</param> public override void Initialize(Cognex.VisionPro.ToolGroup.CogToolGroup host) { // DO NOT REMOVE - Call the base class implementation first - DO NOT REMOVE base.Initialize(host); // Store a local copy of the script host this.mToolBlock = ((Cognex.VisionPro.ToolBlock.CogToolBlock) (host)); } #endregion }

四:效果对比

Vision pro效果图

Halcon 效果图

结论:对比效果vp还是会比halcon差点,毕竟halcon是工业级别算子,效果杠杠滴,

AI评价:Halcon通过灰度开闭运算(7x7八角形核)和动态阈值比较,能有效识别断路/短路区域。VisionPro采用PixelMapTool预处理、5x5灰度形态学调整、CogIPTwoImageSubtractTool计算差异和斑点分析,实现了类似功能。虽然VisionPro效果略逊于Halcon的工业级算子,但仍能较好地完成检测任务。两种方法都利用了形态学处理前后图像差异的原理,正常线路变化小,缺陷区域差异显著。实验表明Halcon三行代码即可实现的高效检测,VisionPro需要更多工具组合来完成。

Pcd板线路检测图片链接: https://pan.baidu.com/s/10k3intgL8fxr-mhfBZYD8Q?pwd=wzpn

提取码: wzpn

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

java计算机毕业设计小微企业项目管理系统的设计与实现 轻量级Java毕业设计:中小微企业全周期项目管控平台 基于SpringBoot的微型企业项目全生命周期数字管理系统

计算机毕业设计小微企业项目管理系统的设计与实现t7okm9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在数字化转型浪潮下&#xff0c;小微企业普遍面临“人少事多、流程混乱、…

作者头像 李华
网站建设 2026/5/21 12:12:34

2026 3D打印机买家指南:TCT亚洲 3D打印展首批百款展品曝光,涵盖工业级金属3D 打印到桌面级3D打印机!持续更新中~

进入 2026 年&#xff0c;3D打印行业更新节奏发生了质变 。相比往年的技术激进&#xff0c;新一轮设备更强调实际使用场景与稳定输出能力 。即将于3月17-19日在上海国家会展中心举办的2026年TCT 亚洲展现已提前公布了近百款重磅新品&#xff08;持续更新中&#xff09;&#xf…

作者头像 李华
网站建设 2026/5/23 2:19:28

自动驾驶VLA新SOTA:复旦联合团队提出WAM-Diff重塑端到端自动驾驶

复旦大学与引望智能科技联合提出自动驾驶WAM-Diff框架。WAM-Diff的全新端到端自动驾驶框架&#xff0c;在NAVSIM-v1榜单上取得了91.0 PDMS&#xff08;预测驾驶得分&#xff09;的惊人成绩&#xff0c;一举超越了现有的自回归和扩散基线模型。它通过掩码扩散模型&#xff08;Ma…

作者头像 李华
网站建设 2026/5/20 17:27:29

为什么你学了很多却依然做不好决策?

认知提升&#xff1a;突破思维边界&#xff0c;重塑你的世界观在信息爆炸的时代&#xff0c;我们每天都被海量数据包围——短视频、新闻推送、社交媒体、知识付费课程……获取信息从未如此便捷。根据中国互联网络信息中心&#xff08;CNNIC&#xff09;2024年发布的第53次《中国…

作者头像 李华
网站建设 2026/5/20 22:31:07

从0基础到完全掌握AD 第11讲 属性面板与原理图尺寸修改

我们今天开始讲原理图的部分&#xff0c;但是我们要讲一个问题&#xff0c;当我们在工作中需要画原理图的时候&#xff0c;我们是先要画原理图库的&#xff0c;就是起码你的库里得有这个元器件才能有原理图&#xff0c;那我们今天为什么先讲原理图呢&#xff1f;因为其实原理图…

作者头像 李华
网站建设 2026/5/23 14:59:31

RyTuneX(Win1011系统优化工具)

RyTuneX是一款专为Windows 10和Windows 11系统打造的系统优化工具&#xff0c;基于WinUI 3框架构建&#xff0c;旨在帮助用户优化系统资源&#xff0c;提升设备性能&#xff0c;同时增强隐私保护。 软件功能 系统优化&#xff1a;支持一键性能调整&#xff0c;可禁用Superfetc…

作者头像 李华