HALCON学习笔记之blob分析+特征 7

本文介绍了一种基于blob分析和特征提取的食品瑕疵检测算法。通过图像分割、特征提取等步骤,算法能有效识别食品表面的凸凹缺陷、污点及划痕。利用环形光、同轴光等打光技巧配合图像处理算法,实现食品瑕疵的自动化检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.blob分析+特征

基本定义:
read_image (Image, 'food/hazelnut_wafer_01')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

*dev_update_window指定是否在活动图形窗口中显示由算子调用返回的所有图标对象(DisplayMode ='on' - 默认)或不显示(DisplayMode ='off')。(不支持代码导出)
dev_update_window ('off')

*dev_set_line_width定义用于显示region轮廓('margin'模式)
dev_set_line_width (3)

*dev_set_draw定义region的填充模式。 如果DrawMode设置为'fill',region显示为填			充,如果设置为'margin',则只显示轮廓。 在'margin'模式下,轮廓的外观会受到									dev_set_line_width,set_line_approx和set_line_style的影响。
dev_set_draw ('margin')

*设置字体
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')  

for Index := 1 to 24 by 1   *循环读图,每张图进行分析
read_image (Image, 'food/hazelnut_wafer_' + Index$'.02')    *图像采集
binary_threshold (Image, Foreground, 'smooth_histo', 'light', UsedThreshold)   *图像分割,使用直方图方法来寻找二值化阈值,直方图是图像的重要特质,直方图方法选择二值化阈值主要是发现图像的两个最高的峰,然后在阈值取值在两个峰之间的峰谷最低处。
opening_circle (Foreground, FinalRegion, 8.5)   * 开运算=腐蚀+膨胀;(断开细小的地方,所以叫开) 将Foreground中去掉半径小于8.5的圆形区域后,将剩下的的区域保存到FinalRegion中
area_holes (FinalRegion, AreaHoles)  *计算区域的孔面积(上一个算子中区域)。
rectangularity (FinalRegion, Rectangularity)  *求取区域的矩形度。
dev_display (Image)

*如果孔洞过多面积超过300或者矩形度小于0.92,认为破损。矩形度体现物体对其外接矩形的充满程度,反映一个物体与矩形相似程度的一个参数
if (AreaHoles > 300 or Rectangularity < 0.92)
    dev_set_color ('red')
    Text := 'Not OK'
else
    dev_set_color ('forest green')
    Text := 'OK'
endif
dev_display (FinalRegion)
disp_message (WindowHandle, Text, 'window', -1, -1, '', 'false')
if (Index < 24)
    disp_continue_message (WindowHandle, 'black', 'true')
    stop ()
endif
endfor

/*
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
参数:
Image:需要进行阈值的图像
Region:处理后的区域
Method:分割方法(‘max_separability’:最大限度的可分性, ‘smooth_histo’:直方图平滑)
LightDark:提取的是黑色部分还是白色部分
UsedThreshold:自动阈值使用的阈值值
*/

缺陷
1️⃣:凸凹缺陷;
2️⃣:污点内部凸凹点;
3️⃣:划痕

方法:
1️⃣打光:环形光低角度打光/同轴光打除反光/不同角度打光/调光对打;
2️⃣处理算法:
1.blob分析+特征;
2.blob分析+特征+差分;
3.频域+空间;
4.光度立体法;
5.特征训练;
6.测量+拟合。

图像处理的步骤:1.图像采集 2.预处理 3.图像分割 4.特征提取 5.通讯,显示…

ctrl+e 列子快捷方式

<think>我们被要求回答关于Halcon使用案例或应用实例的问题。根据提供的引用内容,我们知道有一个资源库提供了多个Halcon项目实例,涵盖了车牌识别、缺陷检测、文字识别、颜色识别等应用场景。因此,我们可以将这些信息整理给用户,并生成相关问题。</think>### Halcon 应用实例详解 Halcon 是一款强大的机器视觉软件库,广泛应用于工业自动化领域。以下是其典型应用场景及案例: #### 1. 车牌识别系统 通过图像预处理、字符分割和 OCR 技术实现自动识别: ```halcon * 车牌定位 find_car_plate(Image, Region) * 字符分割 partition_plate(Region, Characters) * OCR识别 do_ocr_multi_class(Characters, Image, OCRHandle, Class, Confidence) ``` 应用场景:交通监控系统、停车场管理、违章抓拍系统[^1] #### 2. 工业缺陷检测 使用 Blob 分析和形态学处理检测产品瑕疵: ```halcon * 表面划痕检测 detect_scratches(Image, DefectRegion) * 计算缺陷面积 area_center(DefectRegion, Area, Row, Column) * 设定阈值判断 if (Area > Threshold) mark_defect(Image, DefectRegion) endif ``` 应用场景:电子元件质检、纺织品瑕疵检测、金属表面检测[^1][^2] #### 3. 文字识别 (OCR) 结合深度学习实现高精度识别: ```halcon * 创建OCR模型 create_ocr_class_mlp(OCRHandle) * 训练模型 trainf_ocr_class_mlp(OCRHandle, TrainingImages, Labels) * 执行识别 do_ocr_multi_class(Characters, Image, OCRHandle, TextResult) ``` 应用场景:产品包装日期识别、仪表盘读数、文档数字化[^1] #### 4. 颜色识别与分类 利用 HSV 色彩空间进行精确颜色区分: ```halcon * 转换到HSV空间 trans_from_rgb(Image, ImageH, ImageS, ImageV, 'hsv') * 定义颜色阈值 define_color_threshold(ImageH, RedRegion, [0,30], [330,360]) * 颜色分类 classify_regions_by_color(Regions, ClassifiedRegions) ``` 应用场景:水果分级、垃圾分类、产品分拣系统[^1] #### 5. 3D视觉引导 通过立体视觉实现精确定位: ```halcon * 相机标定 calibrate_cameras(CameraSetup, CalibData) * 三维重建 reconstruct_surface(StereoImages, SurfaceModel) * 机器人路径规划 gen_path_from_surface(SurfaceModel, RobotPath) ``` 应用场景:机器人抓取、精密装配、焊接路径规划[^2] > **资源获取**:上述案例的完整源码和测试图像可在 [Halcon项目实例资源库](https://gitcode.com/open-source-toolkit/5aa6d) 下载,包含详细的学习笔记和参数说明[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值