Halcon图像分割总结

news/2024/7/21 5:44:32 标签: 计算机视觉, 人工智能, 图像处理

摘要

在机器视觉项目当中,选定特定的图像区域,再此基础上做进一步处理,需要对图像区域分割,分割的方法有很多种,对于具体项目而言,不同的图像分割方法适用的场景不同,因此需要对特定的场景选择特定的图像分割方法,这里对图像区域分割方法做总结。

全局阈值分割

全局阈值分割:在整幅图像中根据灰度阈值进行分割;

  1. 适用场景
    光照均匀,想要提取的目标区域与背景之间灰度差异较大,且目标区域的灰度值范围集中且稳定。不适用于环境光变化的场景。
  2. 相关算子
threshold(Image,Region,grayMin,grayMax);

提取灰度值范围在grayMin到grayMax的区域。
可以直接在主程序窗口输入,也可以采用halcon提供的灰度直方图窗口拉拖最大最小值范围,可以实时的看到提取的区域的变化。
在这里插入图片描述
选中阈值,可以实时看到选中的区域变化
在这里插入图片描述

自动二值阈值分割

适合于直方图存在两个波峰的情况,即图像前景背景的区别较大

  1. 适用场景:
    整幅图像黑白对比明显,所要提取的区域与背景灰度值差异很大,且成像稳定、
  2. 相关算子
binary_threshold(Image,Region,Method,LightDark,UsedThreshold)

可以根据第四个参数选择是要提取亮的区域还是暗的区域。
其中,第三个参数为’max_separability’时,就是非常有名的大津法,Otsu法。
当选择dark时,分割的结果为:
在这里插入图片描述
当选择light时,分割的结果为:
在这里插入图片描述

动态阈值分割

动态阈值分割的方法有很多种,不同动态阈值分割的方法鲁棒性不同。总的来说,动态阈值分割是为了对光照不均匀,图像灰度值变化较大的场景自动分割的方法。

dyn_threshold

  1. 适用场景
    适用于无法使用单一的阈值分割的情况,如背景比较复杂

  2. 相关算子

dyn_threshold(OrigImage,thresholdImage,regionDynthresh,Offset,lightdark)

在这个算子里面第二个参数是阈值图像,一般在动态分割之前,需要做一个图像均值平滑处理,使用算子mean_image。了解过图像底层算法的人都知道,mean_image的参数代表掩膜窗口,其数值越大,能平滑掉更多的噪点,但是会影响边缘的对比度,一般参数设置为排除掉噪点即可。
因此这里需要结合图像平滑处理

mean_image (Image, ImageMean, 3, 3)
dyn_threshold (Image, ImageMean, RegionDynThresh, 5, 'dark')

在这里插入图片描述

var_threshold

  1. 适用场景
    利用局部均值和标准差分割,适用于光照不均匀的场景同时目标区域与周围区域有较大灰度差。
  2. 相关算子
var_threshold (Image, Region, 15, 15, 0.2, 50, 'dark')

图像效果
在这里插入图片描述
动态阈值分割的方法有很多,基本效果和以上几个算子效果都差不多,这里就不赘述了…

亚像素轮廓分割

亚像素轮廓是halcon的一种数据结构,它不是基于像素的,在像素内部相邻元素之间做边缘拟合,可以具体到像素内部,因此被称为亚像素轮廓。
相关算子

threshold_sub_pix(Image,Region,128)

这里的含义是将小于128阈值的灰度区域分割成区域。
图像效果
在这里插入图片描述


http://www.niftyadmin.cn/n/3701.html

相关文章

数据结构:线段树(SegNode)

作用 对于区间的修改和查询的时间复杂度都是log级别的,比如计算一个区间的和 线段树的定义 它其实就是一颗二叉树, 但它有一个范围left,right左子树的范围是 left - center,右子树的范围是 center - right而当前count lChild.count rCh…

(02)Cartographer源码无死角解析-(16) SensorBridge→回调函数之数据流向分析

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-接如下(有兴趣的朋友可关注计算机视觉life 进行学习): (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin…

用Python实现的这五个小游戏,你真的学会了嘛?

游戏名称1、五子棋 2、雷霆战机 3、贪吃蛇 4、坦克大战 5、俄罗斯方块 开发环境 Python版本:3.6.4 相关模块: pygame模块; 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。 一&am…

RBF神经网络学习及实践

RBF神经网络 在学习RBF神经网络之前,最好先了解径向基函数的相关知识,参见径向基函数(RBF)插值。 RBF神经网络模型是1988年由Moody和Darken提出的一种神经网络结构,属于前向神经网络类型,能够以任意精度逼…

FPGA代码设计规范一些探讨

代码设计规范的重要性 经过一段的工作积累已经慢慢进入了提高和进阶的阶段,在这篇博客里多聊一聊在现实工作中的话题,比如代码规范以及如何尽快接手前人代码,快速定位项目问题。 显然每个FPGA工程师的设计理念和代码风格很多情况下有一些差别…

阿里云 短信服务——开启验证码防盗刷监控

阿里云 短信服务——短信发送频率限制前言系列博客开启验证码防盗刷监控操作步骤添加联系人补充(发送总量阈值和套餐包预警值)如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!前言 由于公司的业务要求&#xf…

Spring Data Neo4j(1.对象映射)

文章目录一、Spring Data Neo4j二、注释NodeIdVersion(乐观锁)PropertyRelationship一、Spring Data Neo4j Spring Data Neo4j或简称SDN是下一代Spring Data模块,由Neo4j,Inc.创建和维护。与VMware的Spring Data Team密切合作。 它支持所有官方支持的Ne…

【优雅】Java List转二维Map

List转多维Map&#x1f389; List&#xff1a;List< AGABasicTimeLineVO> payload&#xff08;下面使用的payload&#xff09;一维Map&#xff1a;Map<String,Object>二维Map&#xff1a;Map<String,Map<Long,Object>> 将在前面 阅读本文前&#x1…