HALCON 算子 之 阈值分割算子

文章目录

  • 什么是阈值分割?
  • 为什么要阈值分割?
  • 如何进行阈值分割?
    • 全局
      • threshold —— 全局固定阈值分割
      • auto_threshold —— 全局自动阈值分割
      • fast_threshold —— 快速全局阈值分割
      • watersheds_threshold —— 分水岭盆地阈值分割
    • 局部
      • dyn_threshold —— 局部动态阈值分割
      • var_threshold —— 均值和标准差局部阈值分割
      • local_threshold —— 局部统计的阈值分割

什么是阈值分割?

  • 在Halcon中,阈值分割是一种基于灰度、对比度等特征,将特定区域提取出来的图像处理技术
  • 简单来说,阈值就是一个指定的像素灰度值的范围,阈值分割则是将图像中的像素灰度值与该阈值进行比较,落在该范围内的像素称为前景,其余的像素称为背景。这样,图像就变成了只有黑与白(或特定颜色)两种颜色的二值图像或特定区域图像,便于后续的处理和分析。

为什么要阈值分割?

  • 简化图像处理:
    阈值分割可以将复杂的图像简化为二值图像或特定区域图像,从而简化后续的处理步骤。
  • 提取目标区域:
    在许多图像处理任务中,需要提取出特定的目标区域。阈值分割可以根据灰度值等特征将目标区域与背景区域分离开来,从而方便地提取出目标区域。
  • 减少计算量:
    将图像转换为二值图像或特定区域图像后,可以显著减少后续处理的计算量,提高处理速度。
  • 提高处理精度:
    通过选择合适的阈值,可以准确地分割出目标区域,从而提高图像处理的精度和准确性。
  • 适应不同场景:
    Halcon提供了多种阈值分割算子,如全局阈值分割、自动阈值分割、局部阈值分割等,可以适应不同的图像处理场景和需求。

如何进行阈值分割?

全局

threshold —— 全局固定阈值分割

  • 利用全局阈值(中间分割线)分割图像,采用灰度区间g实现图像的全局分割,MinGray <= g <=MaxGray
threshold(Image : Region : MinGray, MaxGray : )
  • 使用场景: 背景和前景对比度较高,且灰度分布简单的图像

  • 参数:

    • MinGray: 阈值区间灰度值下限,默认128
    • MaxGray: 阈值区间灰度值上限,默认255
  • 优点: 计算简单,运算效率高

  • 缺点: 对噪声敏感,对于灰度分布复杂或光照不均匀的图像分割效果可能不佳

  • 效果:
    在这里插入图片描述

    • 分割前:
      在这里插入图片描述
    • 分割后
      在这里插入图片描述

auto_threshold —— 全局自动阈值分割

  • 根据直方图决定的阈值分割图像
auto_threshold(Image: Regions: Sigma:)
  • 使用场景: 适用于灰度直方图存在两个波峰的图像,能够自动找到最佳阈值进行分割
  • 参数:
    • Sigma:输入直方图的高斯滤波系数
  • 优点: 无需手动设定阈值,适用于多种图像
  • 缺点: 对于某些复杂图像,可能无法准确找到最佳阈值。
  • 效果:
    • 分割前:
      在这里插入图片描述

    • 分割后:
      在这里插入图片描述

fast_threshold —— 快速全局阈值分割

  • 利用全局阈值快速将图像二值化
fast_threshold(Image: Region: MinGray, MaxGray, MinSize:)
  • 使用场景: 需要快速分割图像且对分割精度要求不高的场合
  • 参数:
    • MinGray: 阈值区间灰度值下限
    • MaxGray: 阈值区间灰度值上限
    • MinSize: 提取的图像最小尺寸
  • 优点: 分割速度快,适用于实时处理
  • 缺点: 牺牲一定的分割精度

watersheds_threshold —— 分水岭盆地阈值分割

  • 从一副图像中提取分界线和“盆地”。
 watersheds_threshold(Image: Basins: Threshold:)
  • 使用场景: 适用于图像中存在多个连通区域且需要准确分割的场合
  • 参数:
    • Basins:分割黑斑区域
    • Threshold:输入分割灰度阀值
  • 优点: 能够处理复杂图像,分割效果直观。
  • 缺点: 容易产生过分割现象,对噪声敏感,计算复杂度较高。
  • 效果:
    • watersheds_threshold (ImageInvert, Basins, 100)

    • 分割前
      在这里插入图片描述

    • 分割后在这里插入图片描述

局部

dyn_threshold —— 局部动态阈值分割

  • 利用区域阈值分割图像
 dyn_threshold(OrigImage, ThresholdImage:RegionDynThresh: Offset, LightDark:)
  • 使用场景: 适用于背景不均匀或目标体局部亮度变化的图像。
  • 参数:
    • OrigImage :输入图像;
    • ThresholdImage:输入包含句柄阀值的图像;
    • RegionDynThresh :输出阀值切割的区域;
    • Offset:输入补偿值;
    • LightDark :输入提取哪个部分区域;
  • 优点: 能够适应背景变化,提高分割精度。
  • 缺点: 计算复杂度较高,需要两张图像。
  • 效果:

在这里插入图片描述

  • 分割前:
    在这里插入图片描述

  • 分割后:
    在这里插入图片描述

var_threshold —— 均值和标准差局部阈值分割

  • 根据局域平均标准偏差分析将图像二值化
 var_threshold(Image: Region:MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark:)
  • 使用场景: 适用于目标和背景灰度分布差异较大且对噪声不敏感的图像。
  • 参数:
    • MaskWidth: 用于平均值和偏差计算的掩码宽度
    • MaskHeight: 用于平均值和偏差计算的掩码高度
    • StdDevScale:灰度标准偏差值
    • AbsThreshold: 最小的灰度差别值
    • Threshold type :亮度类型
  • 优点: 能够较好地分开目标和背景,对不适合的参数设置不敏感。
  • 缺点: 参数设置较为复杂,需要一定的经验。
  • 效果:在这里插入图片描述
    • 分割前
      在这里插入图片描述

    • 分割后
      在这里插入图片描述

local_threshold —— 局部统计的阈值分割

local_threshold(Image : Region : Method, LightDark, GenParamName, GenParamValue : )
  • 使用场景: 适用于背景复杂且需要利用局部统计特征进行分割的图像。

  • 参数:

    • Method :分割方法
    • LightDark : 提取前景还是背景
  • 优点: 能够适应局部背景变化,提高分割准确性。

  • 缺点: 计算复杂度较高,可能受到噪声的影响。

  • 效果:
    在这里插入图片描述

    • 分割前
      在这里插入图片描述

    • 分割后
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录|贪心算法重叠区间问题】

452.用最少数量的箭引爆气球 题目链接452. 用最少数量的箭引爆气球 - 力扣&#xff08;LeetCode&#xff09; 这道题是要求从下往上穿箭&#xff0c;把所有气球扎爆要的最少箭的数量 思路就是我们比较这个气球和上一个气球有没有重合的&#xff0c;重合我们一根箭一起就射了…

鸿蒙获取 APP 信息及手机信息

前言&#xff1a;获取 APP 版本信息可以通过 bundleManager.getBundleInfoForSelfSync(bundleFlags) 去获取&#xff0c;获取手机信息可以通过 kit.BasicServicesKit 库去获取&#xff0c;以下是封装好的工具类。 import bundleManager from ohos.bundle.bundleManager; impo…

爬取的数据能实时更新吗?

在当今数字化时代&#xff0c;实时数据更新对于企业和个人都至关重要。无论是市场分析、商品类目监控还是其他需要实时数据的应用场景&#xff0c;爬虫技术都能提供有效的解决方案。本文将探讨如何利用PHP爬虫实现数据的实时更新&#xff0c;并提供相应的代码示例。 1. 实时数…

JS中多方式数组复制知识扩展

JS中多方式数组复制知识扩展 前言浅拷贝JavaScript 展开操作符for() 循环其他&#xff1a; array.forEachforEach方法详解 array.mapmap()方法详解 array.filterfilter()方法详解 array.reducereduce()方法详解 array.sliceslice()方法详解 Array.fromArray.from()方法详解 深拷…

Hive 中 Order By、Sort By、Cluster By 和 Distribute By 的详细解析

Hive 中 Order By、Sort By、Cluster By 和 Distribute By 的详细解析 在 Hive 数据查询与处理操作中&#xff0c;Order By、Sort By、Cluster By 和 Distribute By 这些语句对于数据的排序、分区以及在 Reduce 阶段的处理起着关键作用。本文将详细解析它们各自的语法、区别以…

okHttp的tcp连接池的复用

okhttp的连接池是tcp连接池吧&#xff0c;是两台机器之间的连接&#xff0c;ip:port连接&#xff0c;然后具体的接口再添加具体的url吗&#xff1f; 具体的 HTTP 请求&#xff08;包括 URL、请求方法、头部等&#xff09;则是在复用的 TCP 连接上进行传输的。 是的&#xff0c…

Linux 正确关机方式详解

在Linux系统中&#xff0c;正确地关机是一个重要的操作&#xff0c;它不仅影响到系统的数据完整性&#xff0c;还可能影响到其他用户的工作。本文将详细介绍Linux系统中的各种关机方式&#xff0c;包括它们的使用场景和具体命令。 为什么需要正确关机 在DOS和Windows系统中&a…

在商业智能BI系统中,如何配置高级感的数据可视化折线图?

在数据可视化的世界里&#xff0c;折线图作为一种直观且有效的数据展示方式&#xff0c;被广泛应用于各类数据分析与报告中。折线图不仅能够清晰地展示数据随时间或其他连续变量的变化趋势&#xff0c;还能通过不同的样式配置&#xff0c;增强图表的可读性和美观度。在JVS-智能…

容器镜像仓库

文章目录 1、docker hub1_注册2_登录3_创建容器镜像仓库4_在本地登录Docker Hub5_上传容器镜像6_下载容器镜像 2、harbor1_获取 docker compose二进制文件2_获取harbor安装文件3_获取TLS文件4_修改配置文件5_执行预备脚本6_执行安装脚本7_验证运行情况8_访问harborUI界面9_harb…

网站打开速度测试工具:互联网优化的得力助手

在信息飞速流转的互联网时代&#xff0c;网站如同企业与用户对话的窗口&#xff0c;其打开速度直接关乎用户体验&#xff0c;乃至业务的成败。所幸&#xff0c;一系列专业的网站打开速度测试工具应运而生&#xff0c;它们宛如幕后的技术侦探&#xff0c;精准剖析网站性能&#…

liunx docker 部署 nacos seata sentinel

部署nacos 1.按要求创建好数据库 2.创建docker 容器 docker run -d --name nacos-server -p 8848:8848 -e MODEstandalone -e SPRING_DATASOURCE_PLATFORMmysql -e MYSQL_SERVICE_HOST172.17.251.166 -e MYSQL_SERVICE_DB_NAMEry-config -e MYSQL_SERVICE_PORT3306 -e MYSQL…

PHP 与 MySQL 搭配的优势

一、PHP 与 MySQL 搭配的优势 强大的动态网页开发能力 PHP 是一种服务器端脚本语言&#xff0c;能够生成动态网页内容。它可以根据用户的请求、数据库中的数据等因素&#xff0c;实时地生成 HTML 页面返回给客户端浏览器。而 MySQL 是一个流行的关系型数据库管理系统&#xf…

爬虫项目基础知识详解

文章目录 Python爬虫项目基础知识一、爬虫与数据分析1.1 Python中的requests库Requests 库的安装Requests 库的 get() 方法爬取网页的通用代码框架HTTP 协议及 Requests 库方法Requests 库主要方法解析 1.2 python中的json库1.3 xpath学习之python中lxml库html了解html结构html…

结构型-组合模式(Composite Pattern)

什么是组合模式 又名部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次。这种类型的设计模式属于结构型模式&#xff0c;它创建了对象组的树形结构。 结构 抽象根节点&#xff08;Co…

防止浏览器控制台修改网页数据与函数的方法

最近&#xff0c;解决了一个网络视频学习的两个问题&#xff1a;过10分钟就暂停并显示提示窗口、不能自动跳到下个章节&#xff0c;思路是&#xff1a;在控制台上运行一段编写的脚本代码&#xff0c;重定义该网页上一个函数&#xff08;解决人工确认问题&#xff09;&#xff1…

Wordpress设置固定链接形式后出现404错误

比如固定连接设置为 /archives/%post_id%.html 这种形式&#xff0c;看起来比较舒服。对搜索引擎也友好。 出现404需要设置伪静态

小程序项目的基本组成结构

分类介绍 项目根目录下的文件及文件夹 pages文件夹 用来存放所有小程序的页面&#xff0c;其中每个页面都由4个基本文件组成&#xff0c;它们分别是&#xff1a; .js文件&#xff1a;页面的脚本文件&#xff0c;用于存放页面的数据、事件处理函数等 .json文件&#xff1a;…

什么是Bug,bug怎么提交

1 bug的定义与起源 Bug在计算机科学中通常指的是程序或系统中的错误或缺陷&#xff0c;导致其无法按预期执行。这种错误可能源于代码中的逻辑错误、输入输出的意外处理、资源分配不当等问题。Bug的产生与多方面因素有关&#xff0c;包括程序员未能正确实现软件的特定规格或设定…

Agent AI: Surveying the Horizons of Multimodal Interaction---摘要、引言、代理 AI 集成

题目 智能体AI:多模态交互视野的考察 论文地址&#xff1a;https://arxiv.org/abs/2401.03568 图1&#xff1a;可以在不同领域和应用程序中感知和行动的Agent AI系统概述。Agent AI是正在成为通用人工智能&#xff08;AGI&#xff09;的一个有前途的途径。Agent AI培训已经证…

前端开发入门指南Day 17:TypeScript高级类型(泛型,类型守卫,Partial<T>和 Required<T>等)

泛型&#xff1a;代码的"变色龙" &#x1f98e; 为什么需要泛型&#xff1f; 想象一个快递员&#xff0c;每天要处理不同类型的包裹。如果为每种类型的包裹都写一套处理程序&#xff0c;那会很麻烦。泛型就像是一个"通用的包裹处理系统"&#xff0c;它能…