Halcon阈值分割方法简析

1. 基于直方图的自动阈值分割

1.1 关键算子

auto_threshold(Image : Regions : Sigma : ):使用多阈值分割单通道图像。
首先,计算图像的灰度直方图。
然后,使用标准差为Sigma的一维高斯滤波器对直方图进行滤波。
进而,从直方图中提取相关灰度极小值,依次作为阈值操作的参数。每个灰度值区间生成一个区域。因此,区域的数目就是极小值数加一。

binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
全局自动阈值分割,对灰度直方图存在两个波峰按照不同的方法进行分割。
1: 计算图像的灰度直方图。
2:使用max_separability方法(最大限度可分OTSU),适用于直方图存在两个波峰的情况,即图像前景背景的有明显区别。方法是利用统计矩找到将像素分割为前景和背景的最优阈值,并最大化这两个类之间的可分性。此方法仅适用于byte和uint2图像。
3:smooth_histo方法(直方图平滑),直方图提取最小值,作为阈值操作的参数。为了减少最小值,直方图用高斯函数平滑处理。在平滑直方图中,掩模尺寸增大,直到找到最小值。然后,阈值设置为这个最小值的位置。
LightDark:表示提取的是黑色部分还是白色部分。

threshold(Image : Region : MinGray, MaxGray : )
根据图像的灰度确定阈值进行分割。用于物体与背景存在明显灰度差的图像。

fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )
快速全局阈值分割。灰度值满足MinGray<=g<=MaxGray则分割为一个区域,为了节省时间按两步执行。
第一,先处理行列间隔Minsize的所有像素点。
第二,处理上一步选择点的领域。

2.局部自动阈值分割

2.1 关键算子

dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
实际项目中由于图像背景不一致,目标经常表现为比背景局部亮一些或暗一些,无法通过全局阈值操作进行分割,这时需要通过求原像素值与滤波后像素值的差找到一个局部阈值进行分割。
其方法为:
1:将OrigImage进行滤波平滑处理,得到ThresholdImage 。
2:用OrigImage和ThresholdImage 逐像素进行比较,根据参数Offset(邻域比较的区间范围)和LightDark分割出相关区域。
当选择light时,就筛选出相对参考图更亮的区域,dark相反。选equal时,选取和参考图差不多的区域。

var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )
该算子为基于图像均值和标准偏差的局部阈值分割,能够较好的分开目标和背景。
MaskWidth、 MaskHeight:掩膜单元;
StdDevScale:标准差乘数因子;
AbsThreshold:绝对阈值;
LightDark:表示希望分割的灰度值亮弱。
具体方法:用掩膜区域遍历整幅图像,与原始图像的区域灰度值进行对比,当原图灰度比掩膜区域的灰度均值低(0.2,12)个灰阶时,即可分割出该区域。
1、当标准差因子StdDevscale>=0时, v(x.y)取(StdDevscale标准差)和AbsThreshold中较大的那个 ;
2、当标准差因子StdDevScale<= 0时, v(xy)取(StdDevscale
标准差)和AbsThreshold中较小的那个。

watersheds_threshold(Image : Basins : Threshold : )
分水岭算法。
1:通过分水岭算法watersheds()获取图像的盆地。
2:若盆地部分的灰度小于设定的阈值Threshold,则被合并到一起。

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

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

相关文章

GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站

GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站 引文 如果你已经购买了Nuand&#xff08;官方&#xff09;BladeRF x40&#xff0c;那么就可以在上面运行OpenBTS并可以输入一些指令来完成一些任务。一般来说HackRF&#xff0c;是一款覆盖频率最宽的SDR板卡。它几乎所有的信息…

夜深人静,想规划一下短期

截止写到这里的时候&#xff0c;已经是农历的十一月初六了&#xff0c;算算时间&#xff0c;距离过年也不太遥远了。就只有短短50多天左右。 很多事想做没有时间&#xff0c;很多程序要改&#xff0c;没有时间&#xff1b;很多想法想付诸行动&#xff0c;总是半途而废。时间久这…

【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)

转载请注明详细地址本文简单介绍了图像常见几何特征的概念以及求解方法本文介绍了Python和opencv求解几何特征的常用方法目录 其他形状外接轮廓的方法可以参考:《OpenCV-Python——第17.3章:轮廓形状拟合(边界矩形,最小外接圆...)及性质》 一、获得轮廓 二、面积 1、c…

Linux 中断处理浅析

最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想. 于是整理一下~第一阶段&#xff0d;&#xff0d;获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核…

C#中泛型的相关知识点总结

一、概念 1.1 泛型 泛型是什么&#xff1f; 书本告诉我们泛型是通过通过参数化类型的方法在同一份代码上对多种数据类型进行调用。也即是说&#xff0c;如果同一个代码需要使用不同的数据类型的话就可以定义一个泛型的类或者方法。 泛型的优点是什么&#xff1f; 1.通过使用…

用scikit-learn研究局部线性嵌入(LLE)

1. scikit-learn流形学习库概述 在scikit-learn中&#xff0c;流形学习库在sklearn.manifold包中。里面实现的流形学习算法有&#xff1a; 1&#xff09;多维尺度变换MDS算法&#xff1a;这个对应的类是MDS。MDS算法希望在降维时在高维里样本之间的欧式距离关系在低维可以得到保…

判断字符串中是否为数字的三种方法

//1用JAVA自带的函数 public static boolean isNumeric(String str){for (int i str.length();--i>0;){ if (!Character.isDigit(str.charAt(i))){return false;}}return true;}//2用正则表达式 public static boolean isNumeric(String str){ Pattern pattern Pattern.…

【图像处理】——Python+opencv实现图像的hu不变矩特征提取(含原理、推导过程、应用、代码等)

目录 转载本文请注明详细地址本文介绍了矩和图像矩的含义本文介绍了不变矩的计算、应用本文介绍了如何计算图像相似度一、思维导图 二、普通矩的定义 1、零阶矩 2、二阶矩

MSSQL-to-MySQL v5.3, 从MSSQL迁移到mySQL的最佳工具

将现有的MSSQL数据库迁移到MySQL数据库,尝试了很多种工具 MySQL Workbench / MSSQL to MySQL Export / DB Converter / openDBcopy 都有这样那样的问题。 最后发现就MSSQL-to-MySQL好一点&#xff0c;能够保证所有表和数据成功迁移&#xff0c;并且字段类型都比较正确。 只是对…

C#窗体应用程序崩溃解决方法总结

一、内存不足 内存是最常见的导致程序崩毁的原因&#xff0c;常用解决方式有如下几种。 算法中声明的占内存较大的全局变量或类中声明的私有变量在循环或运行结束后需进行释放&#xff0c;手动设置Dispose()&#xff0c;然后GC.Collect()。对一些重复调用的类避免多次实例化。…

【学习的心得】——“快餐”的效率与“挖掘”的重要性

从事Python图像处理和机器学习方向已经有大半年了&#xff0c;现在作为还是一个研究生的我&#xff0c;大部分时间都是在完成老师给的课题任务&#xff0c;但是这几个月下来我感觉和老师的意见有点分歧了甚至跟一些同学都有所意见分歧了。 Python虽然是最近几年火起来的语言&a…

Unity3D Input按键系统

默认输入轴&#xff1a; Horizontal 和 Vertical被映射到w, a, s, d键和方向键 Fire1, Fire2, Fire3被分别映射到Ctrl&#xff0c;Option&#xff08;Alt&#xff09;和Command键 Mouse X 和 Mouse Y被映射到鼠标移动增量 Window Shake X 和 Window Shake Y 被映射到窗口的移动…

iOS app 企业内部发布及HTTPS服务器配置

转自: http://www.cnblogs.com/cocoajin/p/4082488.html iOS企业内部发布及HTTPS服务器配置 一&#xff1a;所需的条件 1. 苹果开发者证书&#xff0c;企业版 299$ 版本 2. ssl 证书&#xff0c;即https使用的服务器证书 3. web服务器&#xff0c;支持https 4. 一个域名&#x…

Pytorch超简单安装教程

安装Pytorch 1.1 安装Annaconda 安装Pytorch首先需要安装Annaconda&#xff0c;按照教程&#xff0c;安装了Annaconda5.2.0的版本。 路径 记住安装路径即可&#xff0c;其余均选默认。 1.2 安装Pytorch 第一步&#xff0c;打开Anaconda Prompt 。然后输入 conda create -n…

【图像处理】——纹理特征提取方法(LBP局部二值模式和GLCM灰度共生矩阵)

纹理特征提取方法 局部二值模式(LBP) (结构法) Local binary patterns 原理 将像素点的邻域八个像素点与中心像素点值进行比较,大于设为1,小于设为0,这样就会得到一个邻域值为1和0的格子,将这八个值按照一定的规则排列成一个二进制的数字,并且转换为十进制作为中心像…

44. 源代码解读-RocketMQ-架构

1. 前言 1.1 github源代码 https://github.com/apache/rocketmq 1.2 github其他客户端&#xff0c;比如c,php https://github.com/apache/rocketmq-externals 1.3 运行进程 RocketMQ分成两个进程运行 NamesrvBrokerNamesrv&#xff0c;命名服务&#xff0c;主要负责Broker状态管…

jquery检测浏览器类型

使用jquery如下代码检测浏览器版本时&#xff1a;出问题&#xff0c;在检测IE浏览器&#xff0c;如果版本是IE11时&#xff0c;会出现 $.browser.msie的返回值是false&#xff0c;$.browser.mozilla的返回值是true&#xff0c;即把IE11检测成火狐了 结局办法 判断IE浏览器用 …

【leetcode❤python】 9. Palindrome Number

#回文数#Method1&#xff1a;将整数转置和原数比较&#xff0c;一样就是回文数&#xff1b;负数不是回文数#这里反转整数时不需要考虑溢出&#xff0c;但不代表如果是C/C等语言也不需要考虑class Solution(object): def isPalindrome(self, x): """ …

Pytorch基础(一) —— tensorboard的应用

一、简介与安装方法 1.1 概念 Tensorboard 是 TensorFlow 的一个工具包&#xff0c;用于展示网络图、张量的指标变化和分布情况&#xff0c;如权重W、偏置B、卷积层数、全连接层数等参数&#xff0c;使用该工具可以方便观察神经网络训练过程&#xff0c;分析学习模型训练的效…

“RuntimeWarning: overflow encountered in ubyte_scalars像素加减运算溢出异常”原因以及解决办法

转载本文请注明详细地址本文介绍了像素点相加减溢出的原因与解决方法 目录 原因&#xff1a; 解决方法&#xff1a; 原因&#xff1a; 这个问题一般是会出现在图像处理像素的加减中&#xff0c;出现的原因是因为图片的像素一般是八位即最大值是256&#xff0c;最小值是0&…