视觉通用框架源码 C #联合Halcon开发的 根据visionpro 编写,缺陷检测,定位,拉控件式。 HALCON 是最强的视觉处理软件,

在视觉处理领域,有一个超酷的组合,那就是C#联合Halcon来开发视觉通用框架,而且这个框架还是参考visionpro编写的,主打缺陷检测和定位,还采用了拉控件式的便捷操作方式。今天咱就来唠唠这个有意思的开发过程。

Halcon,视觉处理界的王者

首先得说说Halcon,它号称是最强的视觉处理软件,这可不是吹的。Halcon拥有丰富且强大的算子库,无论是图像滤波、边缘检测,还是复杂的模式匹配等任务,它都能轻松应对。比如在缺陷检测中,我们可能会用到它的edgessubpix算子来进行高精度的边缘提取。

// 假设已经在Halcon环境中加载了图像
HTuple hv_Image;
HOperatorSet.ReadImage(out hv_Image, "your_image_path");
HTuple hv_Edges;
HOperatorSet.EdgesSubPix(hv_Image, out hv_Edges, "canny", 2, 20, 40);

在这段代码里,ReadImage函数用于读取图像,将图像数据存储在hv_Image中。然后EdgesSubPix算子以canny算法为基础,对图像进行亚像素级别的边缘提取,2代表边缘检测的阈值,2040分别是低阈值和高阈值。通过调整这些参数,可以得到不同效果的边缘图像,这对于缺陷检测中准确获取缺陷边缘至关重要。

C#与Halcon的强强联合

为啥要把C#和Halcon结合呢?C#有着优秀的面向对象编程特性,开发效率高,而且能方便地构建用户界面。当它和Halcon携手,就能充分发挥各自的优势。

在基于拉控件式的开发中,我们可以在C#的WinForms或者WPF项目里,通过拖放控件来快速搭建视觉处理的交互界面。比如说,我们可以放置一个按钮控件,点击按钮来触发Halcon的图像处理操作。

private void btnProcess_Click(object sender, EventArgs e)
{
    HTuple hv_Image;
    HOperatorSet.ReadImage(out hv_Image, "your_image_path");
    // 进行一系列Halcon处理操作
    HTuple hv_Result;
    // 这里假设进行一个简单的二值化处理
    HOperatorSet.Threshold(hv_Image, out hv_Result, 128, 255);
    // 显示处理结果,这里假设已经有一个用于显示图像的控件
    HWindowControl1.HalconWindow.DispObj(hv_Result);
}

在这段代码里,当按钮btnProcess被点击,首先读取图像,然后使用Threshold算子进行二值化处理,将灰度值在128到255之间的像素设置为前景,其余为背景。最后通过HWindowControl1这个控件来显示处理后的图像。

缺陷检测与定位的实现

在这个视觉通用框架里,缺陷检测和定位是核心功能。利用Halcon的强大算法,我们可以实现高精度的缺陷检测。比如对于一些表面缺陷,我们可以通过模板匹配的方式来定位缺陷位置。

HTuple hv_Template, hv_SearchImage;
HOperatorSet.ReadImage(out hv_Template, "template_image_path");
HOperatorSet.ReadImage(out hv_SearchImage, "search_image_path");
HTuple hv_MatchResult;
HOperatorSet.FindShapeModel(hv_SearchImage, hv_Template, 0, Math.PI, 0.5, 1, 0.5, "least_squares", 0, 0.5, out hv_MatchResult);
// 分析匹配结果,获取缺陷位置
if (hv_MatchResult.Length > 0)
{
    // 这里简单获取第一个匹配结果的位置
    HTuple row, col;
    HOperatorSet.GetShapeModelContours(out HTuple contours, hv_Template, 1);
    HOperatorSet.AreaCenter(contours, out HTuple area, out row, out col);
    // 在图像上标记缺陷位置,假设已经有显示图像的控件
    HWindowControl1.HalconWindow.DispCross(row, col, 10, 0);
}

在这段代码中,首先读取模板图像和待检测的搜索图像。然后使用FindShapeModel算子在搜索图像中寻找与模板图像匹配的区域。如果找到了匹配结果,通过GetShapeModelContoursAreaCenter获取匹配区域的中心位置,并在图像上用十字标记出缺陷位置。

通过C#联合Halcon开发的这个视觉通用框架,无论是对于工业生产中的质量检测,还是其他需要视觉处理的场景,都有着极大的应用潜力,希望今天分享的这些能给大家在相关开发中带来一些启发。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐