直线查找模块可查找目标的直线边,常用于测量、定位、缺陷检测场景的目标角度获取。
本节内容包含:
该模块的算法工作流程可分为如下两个主要步骤:
算法在预设的卡尺区域(下图所示黄框)内提取边缘特征点。
卡尺的具体工作原理,请参见卡尺工具工作原理。
算法将提取到的边缘特征点(下图中的紫色点)拟合为直线,最终输出的直线被界定在ROI内。
在流程中,直线查找的前序模块一般为图像源,对后序模块无特殊要求。
在流程中调用直线查找模块后,该模块的主要配置步骤如下:
执行一次流程,使图像源将图像数据输出至直线查找。
根据业务需求指定下文参数配置中提及的卡尺数量、投影宽度、滤波尺寸等运行参数。
在基本参数页签,选择ROI形状,并在图像上圆所在区域绘制ROI。
以下仅介绍该模块的运行参数详情。通过配置运行参数,可定义当前模块如何处理输入的数据。
参数 |
描述 |
|
---|---|---|
边缘类型 |
最强 |
查找梯度阈值最大的边缘点集合,然后拟合成直线。 |
第一条/最后一条 |
查找满足条件的第一条/最后一条直线。 |
|
接近中线 |
查找最接近区域中线且满足条件的直线。 |
|
边缘极性 |
边缘极性有两种,即白到黑和黑到白,如下图所示。绿色箭头所示为白到黑,红色箭头所示为黑到白,这里说的“黑”和“白”是相对的概念。 ![]() |
|
边缘阈值 |
边缘阈值即梯度阈值,范围0~255,只有边缘梯度阈值大于该值的边缘点才被检测到。数值越大,抗噪能力越强,得到的边缘数量越少,甚至导致目标边缘点被筛除。 ![]() |
|
滤波尺寸 |
定义目标边缘的清晰程度,最小值为1。值越小,表示边缘越清晰且过滤带小。当边缘模糊或有噪声干扰时,增大该值有利于使得检测结果更加稳定,但如果边缘与边缘之间挨得太近(距离小于滤波尺寸)时反而会影响边缘位置的精度甚至丢失边缘。具体原理参考圆查找。 |
|
卡尺数量 |
定义卡尺的数量 ,ROI越大,建议设置越多的卡尺数量。 |
|
直线查找反向 |
开启后可将直线起点和终点的位置信息互换。 |
|
角度归一化 |
开启后,输出的直线角度在-90° ~ 90°;未开启时,输出的直线角度为-180° ~ 180° 。 |
|
投影宽度 |
即卡尺宽度(图 1中黄框的宽度),在ROI中顺序排列若干个查找边缘点ROI,该值描述查找边缘点ROI的区域宽度,在一定范围内增大该值可以获取更加稳定的边缘点。 |
|
剔除点数 |
差过大而被排除不参与拟合的最小点数量。一般情况下,离群点越多,该值应设置越大,为获取更佳查找效果,建议与剔除距离结合使用。 |
|
剔除距离 |
允许离群点到拟合直线的最大像素距离,值越小,排除点越多。 |
|
投影宽度 |
即卡尺宽度,在ROI中顺序排列若干个查找边缘点ROI,该值描述查找边缘点ROI的区域宽度,在一定范围内增大该值可以获取更加稳定的边缘点。 |
|
初始拟合 |
局部 |
局部最优也就是按照局部的特征点拟合直线,如果局部特征更加准确反映直线所在位置,则采用局部最优,否则采用全局最优。 |
全局 |
以查找到的全局特征点进行直线拟合。 |
|
拟合方式 |
拟合方式有最小二乘、huber和tukey三种。三种拟合方式只是权重的计算方式有些差异。随着离群点数量增多以及离群距离增大,可逐次使用最小二乘、huber、tukey。 |
该模块输出结果中各项参数详情,请参见直线查找模块的输出结果。