halcon瑕疵检测-光度立体法检测药片包装背面的缺陷

2023-10-19 05:10

本文主要是介绍halcon瑕疵检测-光度立体法检测药片包装背面的缺陷,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在工业领域,表面检测是一个非常广泛的应用领域。在halcon中,使用增强的光度立体视觉方法,三维表面检测被加强。利用阴影可方便快速的检测物体表面的缺口或凹痕。使用光度立体视觉方法可在复杂图像中轻松找到表面缺陷。药片包装的背面,不平整并且还有很多文字。此示例便是使用光度立体法,检测药片包装背面的缺陷。
示例代码如下:

    * 该示例通过使用光度立体技术检测药片包装背面的缺陷    * 输入是4张不同的药片包装背面图片,光从不同的角度照射         * Initialization    dev_close_window ()    dev_update_off ()    dev_open_window (0, 0, 512, 512, 'black', WindowHandle)    set_display_font (WindowHandle, 14, 'mono', 'true', 'false')    Message := 'Inspect the backside of a blister'    Message[1] := 'using photometric stereo. In this case four'    Message[2] := 'different light orientations were used.'    disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')    disp_continue_message (WindowHandle, 'black', 'true')    stop ()    *    * Show input images with different illumination    * 1 读图像,依次读取多张图像    * 下面的for循环,依次显示4张从不同角度拍摄的药片包装的背面图像    read_image (Images, 'photometric_stereo/blister_back_0' + [1:4])    for I := 1 to 4 by 1        Message := 'Acquire image ' + I + ' of 4'        select_obj (Images, ObjectSelected, I)        dev_display (ObjectSelected)        disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')        wait_seconds (0.5)    endfor    *    * Apply photometric stereo to determine the albedo    * and the surface gradient.    * 2. 应用光度立体得到反照率图像和表面梯度图像         * 描述了从图像中心指向右侧的方向与投射到平面中的光的方向之间的角度。    * 也就是说,当观察图像(或相应的场景)时,倾斜角度为0表示光线来自右侧,    * 倾斜角度为90表示光线来自顶部,倾斜角度为180表示 光是从左边来的    Tilts := [6.1,95.0,-176.1,-86.8]    * 物平面与照明方向之间的角度    Slants := [41.4,42.6,41.7,40.9]    ResultType := ['gradient','albedo']    * 该算子得到反照率图像和表面梯度图像    photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])    *    * Display the albedo image    * 显示反照率图像    dev_display (Albedo)    disp_message (WindowHandle, 'Albedo image', 'window', 12, 12, 'black', 'true')    disp_continue_message (WindowHandle, 'black', 'true')    stop ()    *    * Calculate the gaussian curvature of the surface    * using the gradient field as input for the operator    * 3. 使用之前得到的表面梯度,计算表面的高斯曲率,得到高斯曲率图像    * derivate_vector_field.    * Defects are usually easy to detect in the curvature image.    * 在曲率图像上能更容易的进行检测    * 该算子通过之前得到的表面梯度得到高斯曲率图像    derivate_vector_field (Gradient, GaussCurvature, 1, 'gauss_curvature')    *    * Detect defects    * 检测缺陷    *    * Segment the tablet areas in the curvature image    * 4. 对高斯曲率图像进行预处理和Blob分析,从而得到缺陷区域    * 在曲率图像中,我们先分开各个药片区域    regiongrowing (GaussCurvature, Regions, 1, 1, 0.001, 250)    * 通过宽和高的特征,进行特征选择    select_shape (Regions, TabletRegions, ['width','height'], 'and', [150,150], [200,200])    * 凸性形状转换,针对区域    shape_trans (TabletRegions, TabletRegions, 'convex')    * 区域联合    union1 (TabletRegions, TabletRegions)    * 腐蚀    erosion_circle (TabletRegions, TabletRegions, 3.5)    * Search for defects inside the tablet areas    * 在药片区域搜寻缺陷    * 抠图    reduce_domain (GaussCurvature, TabletRegions, ImageReduced)    * 计算图像各个像素的绝对值,存在此次处理的原因是:高斯曲率图像存在负值    * 缺陷处,高斯曲率会比较大    abs_image (ImageReduced, ImageAbs)    * 二值化 ,灰度直方图    threshold (ImageAbs, Region, 0.03, 255)    * 闭运算    closing_circle (Region, RegionClosing, 10.5)    * 断开得到连通域    connection (RegionClosing, ConnectedRegions)    * 通过面积特征,进行特征选择    select_shape (ConnectedRegions, Defects, 'area', 'and', 10, 99999)    * 获得缺陷区域的中心点行列坐标    area_center (Defects, Area, Row, Column)    * 生成圆形区域    gen_circle (Circle, Row, Column, gen_tuple_const(|Row|,20.5))    * Display the defects in curvature image    * 5. 接下来在高斯曲率图像中标记缺陷区域    dev_set_draw ('margin')    dev_set_color ('red')    dev_set_line_width (2)    dev_display (GaussCurvature)    dev_display (Circle)    Message := 'The defect can easily be detected'    Message[1] := 'in the surface curvature image'    disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')    stop ()    * Display the defects in the albedo image    * 6. 在反照率图像中标记出缺陷    dev_set_draw ('margin')    dev_set_color ('red')    dev_display (Albedo)    dev_display (Circle)    disp_message (WindowHandle, 'Defect in albedo image', 'window', 12, 12, 'black', 'true')



重点说明:
1. 光度立体法便是在得到高斯曲率图像之后,在高斯曲率图像上进行预处理和Blob分析,检测出缺陷。
2. 高斯曲率图像的获得,是通过derivate_vector_field算子获得的,该算子中,算子中需要输入表面梯度图像,因此,在使用该算子之前,需要先获得表面梯度图像。
3. 表面梯度图像的获得,是通过photometric_stereo算子获得的,该算子可以同时得到表面梯度图像和反照率图像。该算子需要多张从不同角度拍照所得到的图像作为输入。

执行流程:
待检测的四张图像之一:

反照率图像:

高斯曲率图像:

二值化处理得到药片区域后:

预处理之后抠图得到药片图像:

通过Blob分析和预处理,得到缺陷区域:

在高斯曲率图像中标记出缺陷:

在反照率图像中标记处缺陷:

来源:https://blog.csdn.net/ymj7150697/article/details/103296968

这篇关于halcon瑕疵检测-光度立体法检测药片包装背面的缺陷的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/237512

相关文章

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

2409wtl,网浏包装

原文 介绍 本教程帮助你用IE引擎构建一个基于WTL,并使用我编写的处理IWebBrowser2接口包装类的迷你浏览器. 因为知道代码可能很难读,因此本教程帮助你逐步开发一个迷你浏览器. 背景 大部分项都与互联网浏览有关.我常用超文本视图使用SDI. 有时,我要用真正的浏览器函数,因此我为IWebBrowser2编写了一个包装器. 此包装类可处理在IE中嵌入的窗口.它还可非常简单的处

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定,珠宝首饰上架各大电商平台前必须进行RSLReport(欧盟禁限用化学物质检测报告)资质认证,以确保产品不含对人体有害的化学物质。 RSL-铅,

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机