当前位置: 首页 > backend >正文

halcon-blob

在图像处理中,Blob(Binary Large Object)分析是一种常见的用于分割和测量图像中特定形状区域的技术。Halcon是一个强大的机器视觉软件库,提供了丰富的工具和函数来处理图像

halcon自带图片路径

C:\Users\Public\Documents\MVTec\HALCON-18.11-Progress\examples

blob常用算子:

1.固定阈值分割

适用于目标与背景灰度差异明显的图像,如工业检测中的高对比度物体分割‌

threshold(GrayImage, Region, 100, 255)
rayImage:输入的灰度图像,通常通过rgb1_to_gray函数从彩色图像转换而来‌1。
Region:输出区域,包含所有亮度值在阈值范围内的像素‌1。
100, 255:指定阈值范围,即亮度值≥100且≤255的像素会被分割为前景‌1

2.二值化自动阈值分割

适用于具有明显的双峰的直方图,自动确定阈值

*参数1 输入图片
*参数2  二值化输出区域
*参数3 阈值分割方式*max_separability  最大限度分离物体和背景部分*smooth_histo  获取直方图,再平滑直方图, 查找最小值作为阈值
*参数4 提取的区域是亮部分还是暗部分 dark暗部分,light 亮部分
*参数5 阈值
binary_threshold (Image, Region, 'max_separability', 'light', UsedThreshold)案例:
read_image(Image, 'audi2')
binary_threshold(Image, Region, 'max_separability', 'light', UsedThreshold)
dev_display(Region)

3.自动阈值分割

 适用于‌光照均匀、目标与背景灰度差异明显‌的图像


read_image(Image, 'audi2')参数3为高斯平滑的Sigma值,控制分割的精细程度:Sigma较小时(如4),直方图保留较多细节,分割结果更精细‌。Sigma较大时,直方图趋于单峰,可能仅生成一个分割结果‌高对比度图像 使用较小值(3-5) 保留了更多细节 产生更多阈值低对比度图像 使用较大值(6-10)平滑效果更强,产生阈值就少
auto_threshold(Image, Regions, 4) 
* 参数4表示分割出的区域数
dev_display(Regions)

4.动态阈值分割

适用于光照不均或背景变化的场景。

  1. 参数说明‌read_image(Image, 'audi2')mean_image(Image, ImageMean, 31, 31)是Halcon中用于图像均值滤波的核心算子,通过31×31像素的方形邻域计算灰度平均值实现平滑处理‌12。其关键特性如下:‌参数解析‌Image:输入图像(支持byte/int2/uint2/int4/real等类型)‌2ImageMean:输出平滑后的图像31,31:滤波器掩模的宽度和高度(必须为奇数,自动校正偶数值)‌
    mean_image(Image, ImageMean, 31, 31)Image:待分割的原始图像ImageMean:参考图像(通常为原始图像的平滑版本,可通过mean_image等滤波生成)‌1RegionDynThresh:输出分割区域5:灰度差值阈值(Offset),决定敏感度,推荐范围5-40‌4'light':提取模式,表示选择比参考图像更亮的区域(其他模式包括dark/equal/not_equal)‌
    dyn_threshold(Image, ImageMean, RegionDynThresh, 5, 'light')
    dev_display(RegionDynThresh)

    5.字符阈值分割

     用于字符分割的阈值处理算子,基于局部自适应阈值的方法提取图像当中的文字区域

    dev_clear_window ()
    read_image (Image, 'alpha1')
    get_image_size (Image, Width, Height)
    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
    set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
    dev_display (Image)* 专门用于字符分割的阈值处理算子,基于局部自适应阈值的方法提取图像当中的文字区域
    * 参数1 输入图片
    * 参数2 输入区域
    * 参数3 输出图像
    * 参数4 sigma高斯平滑度
    * 参数5 用于确定阈值的百分比 定义字符与背景分离的程度 常用范围90-98之间,暗背景/亮字符96-98
    * 参数6 选择的阈值
    char_threshold (Image, Image, Characters, 2, 95, Threshold)
    connection (Characters, ConnectedRegions)
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 110, 500)
    dev_display (SelectedRegions)

     一般blob使用步骤:

1. 图像预处理

  • 读取图像并转换为灰度图:read_image + rgb1_to_gray
  • 必要时进行直方图分析(gray_histo)以确定合适的阈值范围‌

2. 阈值分割

根据图形特征使用不同的分割方式

3. 区域连通与筛选

  • 使用connection确保区域连通性‌通过
  • select_shape或特征筛选助手按面积、宽高比等过滤目标‌
  • elect_shape(Regions, SelectedRegions, 'area', 'and', 100, 1000); // 筛选面积范围

4. 可视化与输出

使用dev_display显示分割结果及定位标记‌

              

案例1: 

 案例2 找到最大的筛选结果

read_image(Image, 'audi2')
rgb1_to_gray(Image, GrayImage)
threshold(GrayImage, Region, 100, 255)
count_obj(Region, Number)
select_obj(Region, SelectedRegions, 1)  // 选择最大的Blob(如果有多个)
dev_display(SelectedRegions)
dev_set_color('green')
dev_display(SelectedRegions)  // 以绿色显示选定的Blob区域

http://www.xdnf.cn/news/16464.html

相关文章:

  • docker 入门,运行上传自己的首个镜像
  • 学习人工智能所需知识体系及路径详解
  • CTF-Web学习笔记:文件包含篇
  • java中一些数据结构的转换
  • ts学习3
  • CES Asia 2025:以创新为笔,书写亚洲科技新纪元
  • python-内存管理
  • 安宝特方案丨智能革新安全管控:AR技术赋能物流仓储行业安全升级
  • 【STM32编码器接口测速】实现测速功能
  • strcmp 与 strcpy 的深入解析
  • Day 24:元组与os模块
  • 基于Hadoop3.3.4+Flink1.17.0+FlinkCDC3.0.0+Iceberg1.5.0整合,实现数仓实时同步mysql数据
  • 基于springboot的在线购票系统/在线售票系统
  • C++ 中实现 `Task::WhenAll` 和 `Task::WhenAny` 的两种方案
  • Gradle#Plugin
  • Triton编译
  • JavaScript - 实现套索工具的demo
  • MySQL 8.0.42创建MGR集群
  • 深度学习(鱼书)day04--手写数字识别项目实战
  • OpenCL study - code03 rgb2gray
  • 通过硬编码函数地址并转换为函数指针来调用函数
  • 6.Pinia快速入门
  • Mitk教程案例项目编译
  • ROS2总结(二)
  • Flutter中 Provider 的基础用法超详细讲解(二)之ChangeNotifierProvider
  • ES6模块详解:核心语法与最佳实践
  • c++加载qml文件
  • 小架构step系列27:Hibernate提供的validator
  • Oracle EBS 库存期间关闭状态“已关闭未汇总”处理
  • [ The Missing Semester of Your CS Education ] 学习笔记 shell篇