HalconLen5-定位特征步步逼近

2024-04-18 14:12

本文主要是介绍HalconLen5-定位特征步步逼近,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

read_image(Image, 'C:/Users/86173/Desktop/test/2.png')
get_image_size(Image, Width, Height)dev_close_window()
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)dev_display(Image)threshold(Image, Region, 128, 255) //阈值处理connection(Region, ConnectedRegions)//分块函数(将不连接的区域或对象连接成一个或多个连通区域的过程)select_shape(ConnectedRegions, SelectedRegions, 'rectangularity', 'and', 0.9, 1) //根据形状特征从连接区域中选择特定区域的函数
select_shape(SelectedRegions, SelectedRegions1, 'area', 'and', 7500, 99999)fill_up(SelectedRegions1, RegionFillUp)reduce_domain(Image, RegionFillUp, ImageReduced) //缩小给定图像的定义域 到指定的区域threshold(ImageReduced, Region1, 0, 130) threshold_sub_pix(ImageReduced, Border, 138) //筛选灰度值小于108的像素并用亚像素点标记select_contours_xld(Border, SelectedContours, 'contour_length', 30, 50, -0.5, 0.5)count_obj(SelectedContours, Number) //计数器gen_region_contour_xld(SelectedContours, Region2, 'filled') //从二值图像或者区域中生成亚像素点边缘轮廓reduce_domain(ImageReduced, Region2, ImageReduced1) //抠图函数(减少图像处理操作作用区域)从图像中提取感兴趣区域(ROI)并对其进行更详细的分析

在这里插入图片描述

**阈值处理 (Thresholding)** 是图像处理中一项基本技术,用于将图像分割为不同的区域。在 HALCON 中,阈值处理函数 `threshold` 用于根据像素强度将图像中的像素分类为两类:* **目标像素:**强度高于或等于阈值的像素。
* **背景像素:**强度低于阈值的像素。**参数:*** **Image:**输入图像。
* **Result:**输出二值图像,其中目标像素设置为 1,背景像素设置为 0* **MinValue:**阈值。**用法示例:**image := ReadImage(...);
threshold := 128;
result := Threshold(image, MinValue := threshold);这将创建一个二值图像 `result`,其中像素强度高于或等于 `threshold` 的像素设置为 1,其他像素设置为 0**阈值处理类型:**HALCON 提供了几种不同的阈值处理类型:* **MinValue:**如上所述,根据给定的最小值进行阈值处理。
* **MaxValue:**根据给定的最大值进行阈值处理。
* **Otsu:**使用 Otsu 算法自动确定阈值。
* **Hysteresis:**使用滞后阈值处理,其中一个阈值用于识别目标区域,另一个阈值用于识别边界区域。
* **Adaptive:**根据图像的局部特征动态调整阈值。**应用:**阈值处理在机器视觉中广泛用于:* 分割图像中的对象。
* 提取图像中的特征。
* 消除图像噪声。
* 增强对比度。通过选择合适的阈值处理类型和参数,可以优化图像处理结果以满足特定应用需求。
**连接 (Connection)** 在 HALCON 中指的是将不连接的区域或对象连接成一个或多个连通区域的过程。它通常用于图像处理和分析中,以简化图像数据并提取有意义的信息。**函数:**HALCON 提供了几个用于连接的函数,包括:* **Connection (Conn)**将图像中所有连接的区域标记为不同的值。
* **SelectShape (SelShape)**根据形状特征(例如面积、周长、形状系数等)选择连接的区域。
* **RegionGrowing (RegGrow)**根据相似性标准(例如强度、颜色等)将相邻像素连接成区域。**参数:**连接函数通常具有以下参数:* **Image:**输入图像。
* **Result:**输出图像,其中连接的区域已标记或选择。
* **Connectivity:**指定连接的类型,例如 4 邻域或 8 邻域。
* **Select:**布尔型参数,指定是否选择符合特定标准的连接区域。
* **Criterion:**用于选择连接区域的形状或相似性标准。**用法示例:**image := ReadImage(...);
connectivity := 8;
result := Connection(image, Connectivity := connectivity);这将连接 `image` 中所有 8 邻域连接的区域,并将它们标记为不同的值存储在 `result` 中。**应用:**连接在图像处理和分析中具有广泛的应用,包括:* 分割图像中的对象。
* 提取图像中的连通组件(例如文本行、连通区域等)。
* 分析图像中的形状和模式。
* 减少图像噪声和杂散像素。通过选择合适的连接类型和参数,可以优化图像处理结果以满足特定应用需求。
**SelectShape** 是 HALCON 中一个用于根据形状特征从连接区域中选择特定区域的函数。它通常用于图像处理和分析中,以提取感兴趣的区域或对象。**函数:**SelectShape(Image : Image, SelectedImage : Image, ShapeType : ShapeType, Criterion : Criterion, Min, Max)**参数:*** **Image:**输入图像,其中连接区域已经通过 `Connection` 函数标记。
* **SelectedImage:**输出图像,其中满足指定形状特征的区域被选择(标记为 1),其他区域被标记为 0* **ShapeType:**指定要使用的形状特征,例如:* `"area"`:面积* `"perimeter"`:周长* `"circularity"`:圆度* `"rectangularity"`:矩形度
* **Criterion:**指定选择标准,例如:* `"and"`:同时满足最小值和最大值条件* `"or"`:满足最小值或最大值条件之一
* **Min:**最小形状特征值。
* **Max:**最大形状特征值。**用法示例:**image := ReadImage(...);
connectivity := 8;
connected_regions := Connection(image, Connectivity := connectivity);
selected_regions := SelectShape(connected_regions, SelectedImage, ShapeType := "area", Criterion := "and", 这将从 `connected_regions` 中选择面积在 100500 之间的连接区域,并将它们标记在 `selected_regions` 中。**应用:**`SelectShape` 在图像处理和分析中具有广泛的应用,包括:* 提取特定形状或大小的物体。
* 分析图像中的形状分布。
* 分割图像中的文本行或其他连通组件。
* 识别和计数图像中的特定特征,例如圆形、矩形等。通过选择合适的形状特征和选择标准,可以优化图像处理结果以满足特定应用需求。
**ReduceDomain** 是 HALCON 中一个用于减少图像处理操作作用区域的函数。它通常用于图像处理和分析中,以优化处理速度并提高结果精度。**函数:**ReduceDomain(Image : Image, Domain : Domain, ReducedImage : Image)**参数:*** **Image:**输入图像。
* **Domain:**指定图像中要处理的区域,可以是矩形、椭圆或多边形。
* **ReducedImage:**输出图像,其中只处理了指定区域内的像素,区域外的像素保持不变。**用法示例:**image := ReadImage(...);
domain := Rectangle2(100, 100, 200, 200);
reduced_image := ReduceDomain(image, Domain := domain);这将创建一个只处理图像中 100200 像素宽和高的矩形区域的 `reduced_image`。**应用:**`ReduceDomain` 在图像处理和分析中具有广泛的应用,包括:* 限制图像处理操作的区域,以提高处理速度和精度。
* 从图像中提取感兴趣区域(ROI)并对其进行更详细的分析。
* 消除图像边缘或其他不需要处理的区域的影响。
* 在图像的不同部分执行不同的处理操作。通过定义合适的域,可以优化图像处理算法并获得更好的结果。
**ThresholdSubPix** 是 HALCON 中一个用于执行亚像素阈值化的函数。它通常用于图像处理和分析中,以更精确地分割图像中的对象或区域。**函数:**ThresholdSubPix(Image : Image, Thresh : double, ThreshSubPix : double, Inverted : bool, Result : Image)**参数:*** **Image:**输入图像。
* **Thresh:**主阈值。
* **ThreshSubPix:**亚像素阈值。
* **Inverted:**如果为 true,则反转阈值(将大于阈值的像素标记为 1)。
* **Result:**输出图像,其中像素被二值化为 01,具体取决于它们是否满足阈值条件。**用法示例:**image := ReadImage(...);
thresh := 128;
thresh_sub_pix := 0.5;
result := ThresholdSubPix(image, Thresh := thresh, ThreshSubPix := thresh_sub_pix, Inverted := false);这将创建一个二值图像 `result`,其中像素值大于或等于 128.5 被标记为 1,否则标记为 0**应用:**`ThresholdSubPix` 在图像处理和分析中具有广泛的应用,包括:* 提取图像中的对象或区域,具有更高的精度。
* 分割具有平滑边缘或渐进变化的图像。
* 提高图像处理算法的鲁棒性,使其对噪声和光照变化不那么敏感。
* 检测图像中的细小特征或细节。通过使用亚像素阈值化,可以获得比传统阈值化更精确和可靠的结果。
**CountObj** 是 HALCON 中一个用于计算图像中连通区域数量的函数。它通常用于图像处理和分析中,以检测和计数图像中的对象或区域。**函数:**CountObj(Regions : Region, Connected : int, Result : integer)**参数:*** **Regions:**输入区域。
* **Connected:**连通性类型,可以是 48,分别表示 4-连通或 8-连通。
* **Result:**输出变量,其中存储检测到的对象数量。**用法示例:**image := ReadImage(...);
regions := BinarizeImage(image, Thresh := 128);
num_objects := CountObj(Regions := regions, Connected := 8);这将创建一个 `num_objects` 变量,其中存储图像中检测到的 8-连通对象的总数。**应用:**`CountObj` 在图像处理和分析中具有广泛的应用,包括:* 检测和计数图像中的对象或区域。
* 分析图像的连通性。
* 提取图像中对象的统计信息。
* 作为其他图像处理算法(例如对象标记或测量)的输入。通过使用 `CountObj`,可以轻松高效地确定图像中连通区域的数量,这对于各种应用非常有用。

这篇关于HalconLen5-定位特征步步逼近的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915006

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

js定位navigator.geolocation

一、简介   html5为window.navigator提供了geolocation属性,用于获取基于浏览器的当前用户地理位置。   window.navigator.geolocation提供了3个方法分别是: void getCurrentPosition(onSuccess,onError,options);//获取用户当前位置int watchCurrentPosition(

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,大多是回调和定时任务日志,所以故障点在网关和商旅服务,大概率是商旅服务无法访问导致网关超时。 后

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

定位cpu占用过高的线程和对应的方法

如何定位cpu占用过高的线程和对应的方法? 主要是通过线程id找到对应的方法。 1 查询某个用户cpu占用最高的进程号 top -u 用户名 2 查询这个进程中占用cpu最高的线程号 top –p 进程号-H    3 查询到进程id后把进程相关的代码打印到jstack文件 jstack -l pid > jstack.txt 4 在jstack文件中通过16进制的线程id搜索到

Autoware 定位之ndt定位(八)

0. 简介 这一讲按照《Autoware 技术代码解读(三)》梳理的顺序,我们来说一说Autoware中的ndt定位,这个软件包有两个主要功能:1. 通过扫描匹配进行位置估计,2. 通过ROS服务使用蒙特卡洛方法估计初始位置 1. 代码阅读 1.1 debug.cpp 这段代码是一个用于生成用于调试的可视化标记数组的函数。它接受时间戳、坐标系、缩放比例、粒子信息和索引作为输入,并返回一个

WebShell流量特征检测_哥斯拉篇

90后用菜刀,95后用蚁剑,00后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对后三款经典的webshell管理工具进行流量分析和检测。 什么是一句话木马? 1、定义 顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行 2、特点 短小精悍,功能强大,隐蔽性非常好 3、举例 php一句话木马用php语言编写的,运行