# 卡尺

用于执行以下与边缘相关的检查：测量对象的宽度、确定单个边缘的位置以及边缘对的位置和间距。卡尺函数是最精确的边缘函数，但是需要更多时间来设置和配置。

## 卡尺 概述

卡尺函数用于检查图像并定位一维边缘，即相邻像素灰度值的变化。该函数检查图像的指定部分（由区域参数定义）并沿一个方向（从暗到亮或从亮到暗）扫描像素灰度值的过渡。该函数可以定位单个边缘或一对边缘（由预期宽度分隔）。

卡尺函数非常适合用于开发有关对象内部或周围的边缘特征精确位置的详细信息的应用程序。例如，该函数可用于计算芯片上的引线数、测量零件的宽度或查找边缘点以用作另一个视觉工具的输入。该函数基于边缘模型定位边缘或边缘对，其中使用简单的一维内核检测潜在的边缘候选峰值，然后根据模型和评分方法进行评分。

一旦确定了图像中感兴趣边缘的位置和方向，就可以应用卡尺函数：

- 配置区域以包含边缘或边缘对。
- 将边缘模式参数设置为边缘的类型（单边缘或边缘对）并指定要查找的边缘数，并设置边缘：第一，边缘：第二，边缘：创建边缘模型的距离参数，包括边缘极性、位置和间距。
- 设置边缘宽度和最小对比度参数以隔离边缘或边缘对。
- 定义将用于对候选边缘进行评分的评分方法。

## 配置区域

定位区域时，确保设置扫描方向以正确识别所需边缘。扫描方向应指向要检测的第一条边缘。边缘位置将由相对于区域中心的边缘检测位置确定。

## 隔离边缘并定义边缘模型

一旦边缘定位到区域中，卡尺函数将计算图像中每个潜在边缘的分数。根据当前图像中的边缘与定义的理想边缘之间的相似性计算每个边缘的分数。当前图像中的边缘被视为“候选边缘”，而理想边缘被称为“边缘模型”（可以是一条边缘或一对边缘）。

## 边缘模型

为了评估图像中的候选边缘是否与搜索的边缘匹配，必须定义一个准确描述感兴趣边缘的模型。通过首先定义边缘的类型来定义边模型：单条边缘或一对边缘。接下来，定义要在区域中定位的边缘类型的数量。然后指定极性（从白到黑或从黑到白）、模型中每条边缘的位置（由边相对于区域的位置指定），以及边缘之间的间距（如果定义了边缘对）。

###### 边缘检测，具有最小对比度阈值的峰值检测

边缘宽度参数用于从输入图像中去除噪声，并突出边缘轮廓的峰值。使用“最小对比度”参数设置最小峰值高度（对比度阈值）。

###### 边缘模式评分

一旦卡尺函数筛选了该区域并生成了一列超过指定对比度阈值的边缘峰值，该函数将为图像中的每个候选边缘计算分数。该分数确定图像中的哪些候选边缘代表由边缘模型定义的实际感兴趣边缘的实例。

卡尺函数根据一组用户定义的评分标准（称为评分方法），通过将候选边缘与边缘模型进行比较，计算每个候选边缘的分数。

评分方法包含两部分：

- 评分方法类型，用于定义要评估边缘的测量类型
- 评分函数，用于定义原始测量和为评分方法生成的映射分数之间的关系

可以定义几种评分方法；卡尺函数将所有定义的评分方法应用于图像中的每个候选边缘，并返回每个候选边缘的总评分。定义适当的评分方法可确保得分最高的候选边缘将成为感兴趣的边缘。

## 评分方法类型

卡尺函数根据候选边缘与边缘模型的差异程度来计算候选边缘的分数。该工具用于评估这种差异的具体衡量标准由用户定义。可以指定的度量类型称为评分方法类型，评分方法有四种类型：对比度、位置、大小和 Straddle。

当函数将评分方法类型应用于候选边缘时，结果为原始评分。对于不同的评分方法类型，原始分数是不同的。评分方法类型及其原始分数将在下列各节中介绍。

###### 对比度评分法

可以根据候选边缘的对比度对候选边缘进行评分。边缘的对比度表示为像素值的变化除以以像素为单位的边缘大小。对比度评分法的原始分数被归一化，这样值 100 等于对比度 256（对比度的最大可能值）。如果指定了边缘对模型，则原始分数是两条边缘对比度的平均值。

###### 位置评分法

可以根据候选边缘相对于区域中心的位置对候选边缘进行评分。位置定义为候选边缘内中心和模型原点之间的距离。如果感兴趣的边缘预期是距离区域中心的特定距离，则可以定义绝对位置评分方法，原始评分将表示为像素的绝对距离。如果正在使用边缘对模型，并且应考虑候选边缘和区域中心之间相对于模型大小的位置变化，则定义相对位置评分方法。在此情况下，原始分数将归一化，这样值 100 表示距离等于模型的大小。

###### 大小评分法

如果正在使用边缘对模型，则可以根据边候选边缘之间的宽度与边缘模型边缘之间的宽度的差来对候选边缘进行评分。大小评分法可以定义为绝对值，在这种情况下，原始评分将作为绝对大小差异（以像素计）返回。如果可以采用与模型尺寸相关的大小差异，则定义相对尺寸评分方法。在此情况下，原始分数将归一化，这样值为 100 表示大小差异等于模型的大小。

###### Straddle 评分法

如果使用了边缘对模型，则可以根据两条边缘是否位于区域中心的任一侧，对候选边缘对进行评分。这种类型的评分方法可用于查找由一对边缘定义的对象，这些边缘预计位于区域中心之下。如果区域中心跨接于边缘，则原始分数返回为100，如果区域中心未跨接于边缘，则返回 0。

## 评分函数

对于每个计分方法，所选计分方法类型生成原始分数；此原始分数对候选边缘总体分数的影响通过定义评分函数来控制。评分函数将原始分数映射到被映射分数。将候选边缘的每个评分方法的映射分数组合起来，形成该候选边缘的总体分数。

## 卡尺 常规选项卡

参数 | 说明
图像 | 此参数必须引用包含图像数据结构的电子表格单元格；默认情况下，此参数引用 A0，即包含数据结构的单元格。该参数还可以引用其他图像数据结构，例如由图像 视觉数据访问函数或坐标变换函数返回的数据结构
固定 | 定义相对于固定输入或视觉工具函数的图像坐标系输出的感兴趣区域 (ROI)。根据“固定坐标”来设置的 ROI 可以确保如果“固定坐标” 被旋转或转换，相应的 ROI 也会根据“固定坐标”而旋转或转换。 默认设置为(0,0,0)，图像的最左上方。
X | 图像坐标中的 X 偏移。
Y | 图像坐标中的 Y 偏移。
Theta | 图像坐标系中图像 X 轴的旋转。（顺时针 +/-360 度）
区域 | 也称为感兴趣区域 (ROI)，指定要进行分析的图像区域。双击区域参数以创建可以变换和旋转的交互图形模式。选择此参数并按属性表的作业编辑工具栏上的最大化区域按钮，自动拉伸区域以覆盖整个图像。
X | 在固定坐标中，偏移原点的 x 值。
Y | 在固定坐标中，偏移原点的 y 值。
宽度 | 沿着区域的 x 轴的维度。
高度 | 沿着区域的 y 轴的维度。
角度 | 在固定坐标上的方向。
曲线 | 在区域 x 轴和相对的边界线之间的角度偏差。
注意： 固定和区域参数必须在图像的范围内定义；否则，该函数将返回 #ERR。
边缘模式 | 指定函数应该定位一条边缘还是一对边缘。
单一边缘 | 指定该函数将在区域中搜索满足指定条件的单个边缘，并返回其位置。位置和对比度评分方法可用于此模式。
边缘对 | 指定函数将在区域中搜索满足指定条件的边缘对。位置、对比度、大小和跨度评分方法可用于此模式。
要查找的数量 | 指定要返回的最大边缘或边缘对数（1 到 In-Sight 相机的图像宽度，减 1；默认值 = 1）。可以检测到的最大边缘数比捕获图像的特定 In-Sight 相机的图像宽度小一（即，ISC 8402 相机的最大值为 1599，或比视觉系统的 1600 x 1200 图像分辨率小一）。如果有更多的边缘或边缘对的分数超过 Thresh：接受参数值，将选择得分最高的边缘或边缘对。
最小对比度 | 指定边缘或边缘对的最小对比度（0 到 100；默认值 = 5）；对比度值从区域内的灰度直方图归一化为 0 到 100 的范围。该函数将仅返回对比度值超过此设置的边缘或边缘对。
Thresh:接受 | 指定候选边缘的最小可接受匹配分数（0 到 100；默认值 = 5） ；该函数仅返回匹配分数超过此值的边缘或边缘对。匹配分数是所有指定评分方法的几何平均值。
边宽度 | 指定发生边缘过渡的像素距离（1 到 50；默认值 = 2） 。边缘宽度用于在提取边缘之前对图像进行筛选。
边缘：第一 | 指定一对边缘中第一条边缘的极性，该极性相对于区域中的扫描方向；当设置为黑到白或白到黑时，该函数仅报告其第一个边缘具有指定极性的边缘对。
0 = 黑到白 | 指定边缘极性为黑到白。
1 = 白到黑 | 指定边缘极性为白到黑。
2 = 黑色或白色（默认） | 指定边缘极性可以是黑到白或白到黑。
边缘：第二 | 指定一对边缘中第二条边缘的极性，该极性相对于区域中的扫描方向；当设置为黑到白或白到黑时，该函数仅报告其第二个边缘具有指定极性的边缘对。 注意： 此参数仅在边缘模式参数设置为边缘对时使用。
0 = 黑到白 | 指定边缘极性为黑到白。
1 = 白到黑 | 指定边缘极性为白到黑。
2 = 黑色或白色（默认） | 指定边缘极性可以是黑到白或白到黑。
边缘：距离 | 指定边缘对中两条边缘之间的像素距离（In-Sight 视觉系统宽度的 1 到 3 倍；默认值 = 10） 。此参数仅用于边缘对模式。如果边缘距离大于区域宽度，该函数将返回 #ERR。如果区域没有旋转或者弯曲，这个值需要小于等于区域 > 宽度。 注意： In-Sight 视觉系统的图像宽度是捕获图像的特定 In-Sight 视觉系统的图像宽度（即，In-Sight 5100 视觉系统的最大值为 1920，是视觉系统 640 x 480 图像分辨率宽度的 3 倍）。
显示 | 指定卡尺图形覆盖在图像顶部的显示模式。
0 = 隐藏所有（默认） | 所有图形都将被隐藏，除非包含卡尺函数的单元格是电子表格中的活动单元格。
1 = 仅结果图形 | 线条边缘将始终显示。
2 = 输入和结果图形 | 输入图像区域和线条边缘将始终显示。
3 = 显示全部：输入、结果和图表 | 输入图像区域、线边缘和边缘响应图将始终显示。 注意： 边缘响应图表是一个可停靠窗口。有关详细信息，请参阅电子表格编辑器 - 图表主题。

## 卡尺评分方法选项卡

评分方法选项卡用于选择和编辑评分函数，这些评分函数将用于根据边缘模型对候选边缘进行评分。对于每个候选边缘，一旦卡尺函数计算出每个选定评分方法的原始分数并应用评分函数，就会计算候选边缘的总分数。通过取映射分数乘积的 N 次方根来计算总分数。例如，如果定义了四种评分方法，则卡尺函数会将四个分数相乘并取结果的 4 次方根（如果任何单个评分函数产生的值为 0，则候选边缘的总分数也将是 0）。

注意： 必须至少指定一种评分方法，否则将返回 #ERR。默认情况下，应用对比度评分函数。

卡尺评分方法选项卡分为三个区域：

- 添加评分函数
- 当前评分函数
- 编辑评分方法的参数

## 评分函数

在添加评分函数部分，从下拉菜单中选择位置、对比度、大小或 Straddle。单击添加按钮提交。

注意： 大小和 Straddle 仅适用于边缘对，可以在边缘模式参数的常规选项卡中设置。

参数 | 说明
位置 | 适用于边缘对和单边缘，此评分方法基于边缘或边缘对、相对于区域左侧或中心的位置。调整评分设置以根据边缘或边缘对与区域左侧的接近程度为其分配分数，分数范围为 0 到 100。 当启用区域居中复选框（其默认状态）时，系统将根据边缘或边缘对相对于区域中心的位置进行评分。选择外边缘或中心边缘单选按钮作为评分计算的基础。居中边缘是那些更靠近区域中心的边缘，而外边缘是那些远离中心的边缘。 如果未启用区域居中复选框，则评分基于相对于区域左侧或右侧的位置。选择左侧边缘或右侧边缘单选按钮作为评分计算的基础。 归一化到边缘对距离复选框（仅用于边缘对），将边缘对中边缘之间的距离除以边缘：计算分数之前的距离参数值。这提供了一种通过在计算分数时使用百分比值而不是实际值来适应区域大小变化的方法。 注意： 归一化到边缘对距离仅适用于边缘对。
对比度 | 此评分方法适用于边缘对和单个边缘，基于候选边缘的对比度，即构成边缘的相邻像素之间的对比度变化。 对于边缘对，使用两条边缘的平均对比度。调整评分设置以根据对比度为边缘或边缘对分配分数，分数范围为 0 到 100。计算分数的基础可以是低对比度边缘或高对比度边缘。
大小 | 注意： 仅可用于边缘对。 这种评分方法基于边对之间的距离（大小）。调整评分设置以根据边缘对的大小为其分配分数，分数范围为 0 到 100。 使用边缘对距离差异复选框使用实际距离计算分数（使用距离更近或更远的边缘）：以像素为单位的距离参数值作为分数计算的基础。否则，分数计算的基础是大于或小于预期边缘的边缘距离：距离参数值。 使用对称差分复选框（默认关闭）提供了一种允许区域缩放的方法。使用此设置，比边缘更小和更大的尺寸：可以指定距离参数值。此设置允许接受一个方向的更改，而忽略另一个方向。例如，可以允许较小的距离，但将方法设置为对较大距离的评分较低。
Straddle | 注意： 仅可用于边缘对。 此评分方法基于两条边是否位于区域中心的任一侧。这种类型的评分方法可用于查找由预期位于图像区域中心下方的一对边缘定义的对象。如果边缘对中的边缘不跨接图像区域的中心，则得分为 0，如果跨接，则得分为 100。

## 当前评分函数

本节显示当前评分函数的状态和配置。默认情况下，最初会创建高对比度评分函数。可以使用复制按钮复制函数或使用删除按钮删除函数。

标签 | 说明
确定 | 状态灯： 绿色 = 有效的评分方法 红色 = 评分方法对当前卡尺边缘模式无效。
评分方法 | 显示评分函数的类型以及在编辑评分方法的参数部分中配置的任何其他参数。
最高分 | 函数的最高得分（默认为 100），可以在编辑评分方法的参数部分进行调整。

## 编辑评分方法的参数

本节提供了一个交互式图表，可以通过单击一个点并将其移动到所需设置来进行调整。可用设置基于分数函数类型。

| 单击一个点会显示一个控制柄。该点可以用鼠标移动，也可以使用箭头按钮进行更精确的控制。根据配置的不同，有些点的可能位置会受到限制，有些点可能无法重新定位。

评分函数通过指定低和高输入和输出值来定义。评分函数有两种类型：单面评分函数和双面评分函数。

###### 单边评分函数

通过定义 xC、x1、x0、y1 和 y0 的值来配置评分函数。为 y0 和 y1 定义的值必须介于 0 和 100 之间。为 xC、x1 和 x0 指定的值可以包括负值（如果一个或多个 xC、x1 和 x0 点预计产生的原始分数小于零，则将指定负值），其范围由所选评分方法类型确定。定义的评分函数将输入分数映射到输出分数，如下所示：

- 将 x0 以上的输入值映射到 y0 以上的输出值。
- xC 以下的输入值映射到 0 输出分数。
- xc 和 x1 之间的输入值映射到 y1 的分数。
- x1 和 x0 之间的输入值线性映射到 y1 和 y0 之间的分数范围。

上述评分函数适用于输入分数越高，输出分数越高的情况，例如对比度评分法，边缘对比度越大，得分越高。

###### 双边评分函数

如果正在使用边缘对，则可以定义一个双边评分函数，该函数对小于边缘模型的候选边缘与大于边缘模型的候选边缘进行不同的评分。上图显示了一个双边评分函数的示例，该函数对大于边缘模型的候选边缘比较小的候选边缘更宽容。在本例中，如果候选边缘与边缘模型的大小完全相同，则输入分数将为 0.0；如果候选边缘小于边缘模型，则输入分数将小于 0；如果候选边缘大于边缘模型，则输入分数将大于 0。

如果指定双边评分函数，则原始评分将归一化，这样比边缘模型小某个数量且此数量等于边缘模型大小的候选边缘将获得原始分数 -100，比边缘模型大某个数量且此数量等于边缘模型大小的候选边缘将获得原始分数 100 分。

## 卡尺 输出

返回 | 包含成对边缘的边缘数据结构，如果任何输入参数无效，则为 #ERR。
结果 | 最初将卡尺插入单元格时，会在电子表格中创建一个结果表。 以下边缘 视觉数据访问函数自动插入到电子表格中以创建结果表：
标签 | 函数 | 说明
索引 |  | 索引位置
X0 | GetX(边缘, 边缘索引, 0) | 指定边缘的第一个端点的 x 坐标。
Y0 | GetY(边缘, 边缘索引, 0) | 指定边缘的第一个端点的 y 坐标。
X1 | GetX(边缘, 边缘索引, 1) | 指定边缘的第二个端点的 x 坐标。
Y1 | GetY(边缘, 边缘索引, 1) | 指定边缘的第二个端点的 y 坐标。
分数 | GetScore(边缘, 边缘索引) | 边缘或边缘对分数，是所有指定评分函数的几何平均值。
对比度 | GetContrast(边缘, 边缘索引) | 边缘前景和背景之间的平均对比度（灰度为 0-255）。对比度对于黑到白的过渡是正的，而对于白到黑的过渡是负的。
位置 | GetPosition(边缘, 边缘索引) | 边缘或边缘对中心相对于图像区域左侧的 X 位置。
注意： 选择单个边缘边缘模式时，结果表包括每个边缘的索引、Row0、Col0、Row1、Col1、分数、对比度和位置。索引从 0 开始，显示的行数等于“要查找的数量”设置。 选择边缘对边缘模式时，结果表包括每条边的索引、Row0、Col0、Row1 和 Col1，以及该边缘对的第一条边的分数、对比度、位置和距离。索引从 0 开始，显示的行数等于“要查找的数量”设置的两倍。