Halcon算子应用和技巧16
本文介绍了Halcon中10个一维函数处理的常用算子。主要内容包括:create_funct_1d_array和create_funct_1d_pairs用于创建离散函数;get_y_value_funct_1d获取指定x值的y值;sample_funct_1d扩充函数数据点;smooth_funct_1d_mean和smooth_funct_1d_gauss进行函数平滑处理;derivate_f
提示:若没有查找的算子,可以评论区留言,会尽快更新
Halcon算子应用和技巧16
前言
提示:可以使用搜索小工具搜索对应算子名称:
本篇博文主要用于记录学习Halcon中算子的应用场景,及其使用代码和图像展示。只讲通俗易懂使用方法,不讲原理,不讲原理,不讲原理,重要的事情说三遍。
提示:以下是本篇文章正文内容,下面案例可供参考, 注意参数坐标的使用,能帮助你理解算子
一、Halcon应用?
Halcon 是一个强大的图像处理工具,该工具是为了解决机器视觉项目任务而创建的。
二、算子汇总
每一博文仅展示10个算子,点击此链接进行查询所有算子,并点击对应算子跳转相应博文。
三、应用算子
151. create_funct_1d_array()
先上代码:
y := [1,4,9,16,25,36,49,64,15]
create_funct_1d_array (y, Function)
解析:
从Y序列中创建一个离散一维函数,其中X是默认从0 开始的,即:【X Y】
【0 1】【1 4】【2 9】……【8 15】
变量展示的数据,建议查看手册去熟悉, 【函数类型 步长 自变量】
152. create_funct_1d_pairs()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,9,16,25,36,49,64]
create_funct_1d_pairs (x, y, Function1)
解析
这个算子和create_funct_1d_array相比恰好多了X的参数,以此创建一个【X Y】对,一一对应的函数
153. get_y_value_funct_1d()
先上代码:
y := [1,4,9,16,25,36,49,64,15]
create_funct_1d_array (y, Function)
get_y_value_funct_1d (Function, 1.2, 'constant', Y)
解析
获得1d函数对应的X下对应的Y值。注意你设定的边界处理模式 ‘constant’,设置不同可能会边界结果不同。对于X的任意位置采用线性插值方式处理结果。
参数 Border 决定了函数 Function 在其定义域之外的值。
对于 Border=‘zero’,这些值被设置为 0;
对于 Border=‘constant’,它们被设置为边界处的相应值;
对于 Border=‘mirror’,它们在边界处进行镜像;
对于 Border=‘cyclic’,它们以周期方式延续;
而对于 Border=‘error’,则会引发异常。
154. sample_funct_1d ()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,9,50,60,36,49,64]
create_funct_1d_pairs (x, y, Function1)
sample_funct_1d (Function1, 1, 8, 0.1, 'constant', SampledFunction)
解析:
这个算子一般用在create_funct_1d_pairs之后,以此增加函数中自变量的长度,通过设置参数0.1等,去约定你想要的拟合结果函数,原来自变量 1 2 , 就变为1 1.1 1.2 1.3 ……,直到8,同理Y值也会相应的进行拟合,简而言之就是扩充自变量和因变量的数量。
155. smooth_funct_1d_mean()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,9,50,60,36,49,64]
create_funct_1d_pairs (x, y, Function1)
sample_funct_1d (Function1, 1, 8, 0.1, 'constant', SampledFunction)
smooth_funct_1d_mean (SampledFunction, 5, 2, SmoothedFunction)
解析:
通过选择长度的值进行均值函数平滑,需求最少的自变量长度就是平滑size和迭代次数的和
参考图像: 左侧原始图,右侧是均值平滑的结果
156. num_points_funct_1d()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,9,50,60,36,49,64]
create_funct_1d_pairs (x, y, Function1)
sample_funct_1d (Function1, 1, 8, 0.1, 'constant', SampledFunction)
num_points_funct_1d (SampledFunction, Length)
解析:
函数的控制点数量, 1.1 1.2 1.3 …… 8 共计 Length = 71
157. smooth_funct_1d_gauss()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,9,50,60,36,49,64]
create_funct_1d_pairs (x, y, Function1)
sample_funct_1d (Function1, 1, 8, 0.1, 'constant', SampledFunction)
smooth_funct_1d_gauss (SampledFunction, 0.1, SmoothedFunction1)
解析:
其作用和函数均值平滑一样,但是平滑方式不同,这个采用gauss平滑,同时对参数有一定的要求,
平滑参数 sigma 不能大于 (length-2)/7.8 * function,其中 length-2 是函数的控制点数量,function 指定 x 值的等距(自变量步长)。这里最大是0.8。
推荐自己上机测试一下。左侧原函数, 右侧是gauss, 大家可以调整参数看曲线变化。

158. derivate_funct_1d()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,9,50,60,36,49,64]
create_funct_1d_pairs (x, y, Function1)
sample_funct_1d (Function1, 1, 8, 0.1, 'constant', SampledFunction)
num_points_funct_1d (SampledFunction, Length)
smooth_funct_1d_gauss (SampledFunction, 0.1, SmoothedFunction1)
derivate_funct_1d (SmoothedFunction1, 'first', Derivative)
解析:
获得函数的一阶导数,二阶导将参数first变为second即可
左侧是原函数,右侧是其一阶导数,可以看到小于<0的是属于下降沿部分
159. x_range_funct_1d()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,0,-10,0,36,49,64]
create_funct_1d_pairs (x, y, Function1)
sample_funct_1d (Function1, 1, 8, 0.1, 'constant', SampledFunction)
x_range_funct_1d (SampledFunction, XMin, XMax)
解析
获得1d函数自变量的最小和最大值 XMin, XMax分别是1 和 8
160. y_range_funct_1d()
先上代码:
x := [1,2,3,4,5,6,7,8]
y := [1,4,0,-10,0,36,49,64]
create_funct_1d_pairs (x, y, Function1)
sample_funct_1d (Function1, 1, 8, 0.1, 'constant', SampledFunction)
x_range_funct_1d (SampledFunction, XMin, XMax)
y_range_funct_1d (SampledFunction, YMin, YMax)
解析
获得1d函数因变量Y的最小和最大值 YMin, YMax分别是-10 和 64
以上内容陆续更新。。。
如有问题,欢迎大家指出,谢谢!!!
更多推荐
所有评论(0)