涉及算子

获取图像

使用ROI

对齐ROI或图像

校正图像

基础内容这里不再重述

预处理图像(过滤)

基础:

mean_image(平均平滑过滤),gauss_filter(高斯滤波),binomial_filter(二项式滤波器),median_image(中值滤波)

高级:

smooth_image(滤镜过滤),anisotropic_diffusion(各向异性扩散滤波),fill_interlace(针对视频流图像滤波),rank_image(等级滤波器)

提取分割参数

基础:

gray_histo_abs(计算绝对灰度值分布),histo_to_thresh(从直方图确定灰度值阈值)

高级:

intensity(计算灰度值的平均值和偏差)

分割图像

基础:

threshold(使用全局阈值分割图像),fast_threshold(使用全局阈值快速处理图像),binary_threshold(二进制阈值),dyn_threshold(局部阈值),histo_to_thresh,gray_histo(计算灰度值分布)

高级:

local_threshold(Sauvola算法分割),var_threshold(局部均值和标准差分析分割),watersheds(分水岭方法),watersheds_threshold(通过阈值使用分水岭方法),regiongrowing(区域生长),regiongrowing_mean(平均灰度区域生长)

处理区域

基础:

connection(计算区域的连接组件),select_shape(通过形状特征选择),opening_circle(通过圆形开启区域),closing_circle(通过圆形封闭区域),opening_rectangle1,closeing_rectangle1,difference(计算区域差异),intersection(计算区域交点),union1(计算区域并集),shape_trans(变换形状),fill_up(填充区域中的孔)

高级:

select_shape_proto(特定关系选择区域),select_gray(灰度值特征选择区域),clip_region(裁剪区域为),sort_region(区域排序),skeleton(计算区域的骨架),partition_dynamic(动态分区),rank_region(区域等级)

特征提取

基础:

area_center(中心区域),smallest_rectangle1(平行坐标轴的最小矩形),samlllest_rectangle2(任意方向最小矩形),compactness(计算区域紧密度),eccentricity(偏心率),elliptic_axis(椭圆轴),area_center_gray(计算灰度图像中区域的面积和重心),intensity,min_max_gray(计算区域最大最小灰度值)

高级:

diameter_region(计算两区域边界点最大距离),inner_rectangle1(区域的最大内部矩形),inner_circle,gray_histo_abs,entropy_gary(确定图像的熵和各向异性)

结果转换为世界坐标

基础:

image_points_to_world_plane(转换像素点)

高级:

gen_contour_region_xld(生成XLD轮廓),contour_to_world_plane_xld(转换XLD轮廓)

可视化结果

高阶运用

斑点分析实用方法

色彩处理

使用三个颜色通道代替只使用一个灰度通道,Halcon提供了对于彩色图像的一系列算子,可以和斑点分析结合使用

纹理分析

纹理分析可用于查找规则和不规则区域,不仅使用单个灰度值,还使用像素邻域对区域进行分割

斑点分析替代方案

边缘提取(精确至亚像素)

在斑点分析中,用像素的灰度值描述区域。作为替代,通过改变边界处的灰度值描述一个区域。这种方法称为边缘检测

分类器

要选择特定的灰度值,必须先确定阈值。多数情况下,算子使用固定值或当前值。如果系统自动确定范围,则很有用,这可以通过使用分类器来实现。此外,分类器还可以用于自动根据提取的特征和样本区分好坏对象。

提速

许多在线应用程序需要高速运行。这里列出了最常用的几种方法:

  1. 使用ROI帮助程序快速定位检测区域
  2. 如果对象具有特定的最小尺寸,则算子fast_threshold是阈值的快速替代方法。在调用阈值运算符之前,也可以使用gen_region和reduce_domain。
  3. 默认情况下,HALCON会执行一些数据的一致性检查。这些可以通过设置关闭
  4. 默认情况下,HALCON使用带有参数“ init_new-image”的set_system初始化新图像

    这种行为可以改变

线扫相机

线扫有时必须处理(例如传送带上的物体)“无限”序列的图像。在这种情况下结束的一幅图像是下一幅图像的开始。这意味着位于两个图像中的部分对象必须合并成一个对象。Halcon提供算子merge_regions_line_scan 帮助合并线扫描图像中的区域。

高精度

有时需要高精度。使用斑点分析很难做到这一点,一种方式是使用高分辨率,备选方案是使用灰度值特征(如area_center_gray),如果对象满足特定灰度值,则每个像素都可以分为255个值而不是一个值(前景或背景)。如果需要更高的精度,可以考虑能精确到亚像素的边缘和线条提取

PS:Halcon的OCR在预处理阶段也使用了斑点分析

灵感源于官方文档

Halcon斑点分析涉及算子及其高阶运用的更多相关文章

  1. Halcon斑点分析BlobAnalysis解析

    斑点分析的算法非常简单:在图像中,相关对象的像素(也称为前景)通过其灰度值来识别.例如,图中示例显示了液体中的组织颗粒.这些粒子是明亮的,液体(背景)是暗的.通过选择明亮的像素(阈值),可以很容易检测 ...

  2. Halcon斑点分析官方示例讲解

    官方示例中有许多很好的例子可以帮助大家理解和学习Halcon,下面举几个经典的斑点分析例子讲解一下 Crystals 图中显示了在高层大气中采集到的晶体样本的图像.任务是分析对象以确定特定形状的频率. ...

  3. Swift 烧脑体操(三) - 高阶函数

    前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...

  4. php对象和数组的相互转换(还是可以去找没有没php的高阶课程看看看)(要不别人分析一下重点要点,要不自己来,不然 效果真的不好)

    php对象和数组的相互转换(还是可以去找没有没php的高阶课程看看看)(要不别人分析一下重点要点,要不自己来,不然 效果真的不好) 一.总结 都是自己实现的函数 算法: 1.先判断类型,gettype ...

  5. Python使用map,reduce高阶函数模拟实现Spark的reduceByKey算子功能

    # 使用默认的高阶函数map和reduce import randomdef map_function(arg):  # 生成测试数据 return (arg,1) list_map = list(m ...

  6. 基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\Ma

    Hadoop的前景 随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握H ...

  7. 迈向高阶:优秀Android程序员必知必会的网络基础

    1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...

  8. Hive 高阶应用开发示例(一)

    Hive的一些常用的高阶开发 内容    1.开窗函数   2.行转列,列转行,多行转一行,一行转多行   3.分组: 增强型group   4.排序  5.关联 本次的内容: 内容1 和内容2,采用 ...

  9. [Node.js] 闭包和高阶函数

    原文地址:http://www.moye.me/2014/12/29/closure_higher-order-function/ 引子 最近发现一个问题:一部分写JS的人,其实对于函数式编程的概念并 ...

随机推荐

  1. Java实现 LeetCode 812 最大三角形面积 (暴力)

    812. 最大三角形面积 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0] ...

  2. Java实现 蓝桥杯 算法提高 判断名次

    算法提高 判断名次 时间限制:1.0s 内存限制:256.0MB 问题描述 某场比赛过后,你想要知道A~E五个人的排名是什么,于是要求他们每个人说了一句话.(经典的开头---_-!)得了第1名的人23 ...

  3. Java实现 LeetCode 337 打家劫舍 III(三)

    337. 打家劫舍 III 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根". 除了"根"之外,每 ...

  4. java中Timer类的详细介绍(详解)

    一.概念 定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和多线程技术还是有非常大的关联的.在JDK中Timer类主要负责计划任务的功能,也就是在指定 ...

  5. java实现第五届蓝桥杯出栈次序

    出栈次序 X星球特别讲究秩序,所有道路都是单行线.一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行. 路边有个死胡同,只能容一辆车通过,是临时的检查站,如图[p1.png]所示. ...

  6. java实现第六届蓝桥杯加法变乘法

    加法变乘法 题目描述 我们都知道:1+2+3+ - + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+-+1011+12+-+2728+29+- ...

  7. 【asp.net core 系列】6 实战之 一个项目的完整结构

    0. 前言 在<asp.net core 系列>之前的几篇文章中,我们简单了解了路由.控制器以及视图的关系以及静态资源的引入,让我们对于asp.net core mvc项目有了基本的认识. ...

  8. WPF样式学习第一天

    因为上班的公司要我用wpf写软件,刚毕业出来,学校也没教过wpf,只会winform,再加上wpf用winform的框架写法也能实现很多需求,但是就不能体现wpf的优点了,今天就先来学wpf的样式,因 ...

  9. 曹工说JDK源码(4)--抄了一小段ConcurrentHashMap的代码,我解决了部分场景下的Redis缓存雪崩问题

    曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位? 曹工说JDK源码(2)--ConcurrentHashMap的多线 ...

  10. List集合排序的方法

    1.list集合中的对象实现Comparable接口 public class User implements Comparable<User>{ private Integer id; ...