# InspectEdgeForDefect

InspectEdgeForDefect 函数用于构造边缘模型，以便对 InspectEdge 函数返回的边缘或边缘对执行高级边缘分析。该数据用于构造最佳拟合线拟合，以将找到的边缘或边缘对与检测缺陷和间隙（例如与拟合线的距离）进行比较。

## InspectedForDefect 概述

将函数插入电子表格后，必须参考 InspectEdge 函数输出的 Inspect 数据结构。一旦建立了对 InspectEdge 函数的引用，就可以通过配置 InspectEdgeForDefect 函数的参数来创建边缘模型。边缘模型涉及定义以下内容：

- 线拟合的类型 - 直线或圆形。
- 边缘的类型 - 单个边缘或边缘对。
- 边缘过渡的类型 - 白色到黑色，反之亦然。
- 用于筛选不需要的边缘的边缘评分标准。
- 用于从线拟合中筛选不需要的边缘的线拟合条件。
- 将遇到的缺陷和/或间隙的公差。

一旦建立了边缘模型，该函数会将候选边缘与边缘模型进行比较，并报告与模型的偏差。

示例 - 通过直线拟合边缘

示例 - 直线拟合边缘失败

示例 - 失败的曲线拟合边缘

## InspectEdgeForDefect 输入

参数 | 说明
InspectEdge | 指定对包含由InspectEdge函数返回的有效检查数据结构的电子表格单元格的引用。
线拟合 | 指定要根据检测到的边缘构造的线拟合类型。
1 = 直线拟合 | 该函数将从检测到的边缘创建直线拟合。
2 = 曲线拟合 | 该函数将从检测到的边缘创建圆形线拟合。
3 = 自动拟合（默认） | 该函数会根据引用区域自动创建直线或圆拟合。
检查边缘对 | 指定函数是否应检测边缘对。检测到的边缘对将在图像中以图形方式标注，检测到的第一条边标注为 0，第二条边标注为 1。
0 = OFF（默认值） | 该函数不会检测边缘对。
1 = ON | 该函数将尝试根据边缘评分参数检测边缘对。
查找边缘方向 | 指定函数将尝试检测边缘的方向。添加深绿色箭头以图形方式说明检测边缘的方向。拟合线将在图像中以图形方式标记，第一条拟合线标记为 0，第二条拟合线标记为 1。 注意:如果引用的 InspectEdge 函数的关注区域 (ROI) 弯曲成曲线，则检查将相对于曲线的中心。当查找边缘方向参数设置为左到右时，它会朝向曲线中心进行检查，而当设置为右到左时，它会远离曲线的中心进行检查。
0 = 从左到右（默认） | 该函数将尝试检测从 ROI 左侧到右侧的边缘。 示例
1 = 右到左 | 该函数将尝试检测从 ROI 右侧到左侧的边缘。 示例
3 = 中心向外 | 该函数将尝试检测从 ROI 中心到 ROI 上下边界的边缘（找到的边缘的顺序将与 ROI 上的“X”箭头方向相反）。 示例 注意:检查边缘对参数必须为“打开”才能启用此选择。
2 = 外到内 | 该函数将尝试检测从 ROI 的上下边界到 ROI 中心的边缘（找到的边缘的顺序将与 ROI 上的“X”箭头方向相反）。 示例 注意:检查边缘对参数必须为“打开”才能启用此选择。
边缘：第一 | 指定要检测的第一个边缘的对比度过渡，由查找边缘方向参数确定。
1 = 黑到白 | 边缘从黑色像素过渡到白色像素。
2 = 白到黑（默认） | 边缘从白色像素过渡到黑色像素。
3 = 二者之一 | 边缘可以从黑到白或从白到黑过渡，该函数将确定正确的过渡。指定过渡可以提高函数的性能。
边缘：第二 | 指定要检测的第二个边缘的对比度过渡，由查找边缘方向参数确定。 注意:检查边缘对参数必须为“打开”才能启用此选择。
1 = 黑到白（默认） | 边缘从黑色像素过渡到白色像素。
2 = 白到黑 | 边缘从白色像素过渡到黑色像素。
3 = 二者之一 | 边缘可以从黑到白或从白到黑过渡，该函数将确定正确的过渡。指定过渡可以提高函数的性能。
边缘评分 | 指定将用于确定边缘是否符合既定标准的边缘评分模式。
分数阈值 | 指定一个评分阈值以筛选掉分数（1 到 100；默认值 = 10）低于此值的边缘。
边缘规则 | 指定计算分数时最重要的边缘类型。
1 = 第一 | 检测到的第一个边缘受到最优先考虑。
2 = 最强 | 具有最强对比度过渡的边缘受到最优先考虑。
3 = 第一强（默认） | 检测到的第一个具有最强过渡的边缘受到最优先考虑。
4 = 边缘对大小 | 以最接近对大小参数的大小检测到的边缘对受到最优先考虑。
5 = 第一个边缘对大小 | 以最接近对大小参数的大小检测到的第一个边缘对受到最优先考虑。
6 = 最强边缘对大小 | 检测到的具有最强过渡且尺寸最接近对大小参数的边对受到最优先考虑。
7 = 第一个最强边缘对大小 | 第一个具有最强过渡和最接近对大小参数的大小的边缘对受到最优先考虑。
对比度上限 | 指定被视为边缘的边缘对比度过渡的上限（2 到 255；默认值 = 255）；边缘对比度过渡高于此值的边缘将具有相同的最高分数。 注意:边缘规则参数必须设置为最强、第一个最强、最强边缘对大小或第一个最强边缘对大小才能启用此参数。
对大小 | 指定获得最高分数的边缘对大小（有效范围是 In-Sight 视觉系统图像宽度的 1 到 3 倍；默认值 = 5） 。启用此参数时，检测到高于或低于此值的边缘对将按此值按比例评分。例如，如果对大小设置为 10，并且检测到两个候选边缘对，一个值为 8，另一个为 14，则将选择值为 8 的边缘对，因为它比第二边缘对边更接近此限制。 注意:检查边缘度参数必须为“打开”，边缘规则参数必须设置为边缘对大小、第一个边缘对大小、最强边缘对大小或第一个最强边缘对大小才能启用此参数。
高级线拟合 | 指定函数应如何构造线拟合。
筛选离群值 | 指定该函数将从拟合线中移除比拟合距离筛选器参数中指定的距离更远的点。
0 = OFF（默认值） | 该函数不会考虑外点边缘。
1 = ON | 该函数将在其计算中考虑外点边缘。
拟合距离筛选器 | 以像素为单位指定距离（有效范围是 In-Sight 视觉系统图像宽度的 1 到 3 倍；默认值 = 2），边缘必须来自原始拟合线才能在重新拟合计算中使用。此设置有助于防止缺陷影响线拟合。筛选异常值必须“打开”才能启用此设置。
最远点筛选距离 | 指定外点与线拟合的距离，但仍被视为线拟合的一部分（有效范围为 In-Sight 视觉系统图像宽度的 1 到 3 倍；默认值为视觉系统图像宽度的 3 倍）；任何大于此值的边缘都将被忽略。
重新评分 | 指定将对边重新评分，以选择更接近线拟合的边缘。
0 = OFF（默认值） | 该函数不会对边缘重新评分来考虑外点。
1 = ON | 该函数将对边缘重新评分以在计算中考虑外点边缘。
重新拟合 | 指定函数将在对边缘重新评分后重新拟合线。启用此功能有助于线条拟合的准确性，但会增加处理时间。
0 = OFF（默认值） | 该函数不会尝试重新拟合线拟合。
1 = ON | 边缘重新评分后，该函数将重新拟合线拟合。
最大缺陷/间距数量 | 指定函数应该检测到的最大缺陷和/或间隙数（1 到 4096；默认值 = 5） 。该值分别应用于缺陷和间隙；例如，当设置为 5 时，该函数预计最多会遇到 5 个缺陷和 5 个间隙。此设置用于在电子表格中构建视觉数据访问结果表。
缺陷 | 指定用于根据线拟合确定边缘缺陷的参数。
最小距离 | 指定距离边缘的任何距离（以像素为单位）（有效范围是 In-Sight 视觉系统图像宽度的 0.001 到 3 倍；默认值 = 3 像素） ，线拟合小于此值不是缺陷。
最大距离 | 指定距离边缘的任何距离（以像素为单位）（有效范围是 In-Sight 视觉系统图像宽度的 0.001 到 3 倍；默认为视觉系统图像宽度的 3 倍） ，线拟合大于此值不是缺陷。 注意:如果此值小于最小距离参数，该函数将导致 #ERR。
已启用大小 | 指定函数是否考虑尺寸缺陷。尺寸缺陷占沿边缘的长度。 注意:当已启用大小和已启用区域都为 ON 时，只会显示两个条件都失败的缺陷。
0 = OFF | 该函数不会考虑大小缺陷。
1 = ON （默认值） | 该函数将根据最小大小和最大大小参数设置来解决尺寸缺陷。
最小大小 | 指定最小缺陷尺寸（以像素为单位）（有效范围为 In-Sight 视觉系统图像宽度的 0.001 到 3 倍；默认值 = 3 像素）；小于该值的线拟合的连续偏差不被视为缺陷。
最大大小 | 指定最大缺陷大小（以像素为单位）（有效范围为 In-Sight 视觉系统图像宽度的 0.001 到 3 倍；默认为视觉系统宽度的 3 倍）；大于该值的线拟合的连续偏差不被视为缺陷。
已启用面积 | 指定函数是否考虑面积缺陷。面积缺陷考虑沿线拟合的长度以及缺陷边缘与线拟合的距离。 注意:当“已启用大小”和“已启用区域”都为 ON 时，只会显示两个条件都失败的缺陷。
0 = OFF | 该函数不会考虑面积缺陷。
1 = ON （默认值） | 该函数将根据最小面积和最大面积参数设置来考虑面积缺陷。
最小面积 | 指定最小面积缺陷（以像素为单位）（有效范围为 0.000 到 1000000；默认值为 10）；小于该值的面积不被视为缺陷。
最大面积 | 指定最大面积缺陷（以像素为单位）（有效范围为 0.000 到 1000000；默认值为 1000000）；大于该值的面积不被视为缺陷。
缺陷线拟合筛选 | 指定是否根据缺陷相对于线拟合的位置筛选缺陷。
0 = 无筛选器（默认） | 该函数将返回线拟合两侧的缺陷。
1 = 忽略线拟合的左侧 | 该函数将筛选左侧缺陷，仅返回在拟合线右侧发现的缺陷。
2 = 忽略线拟合右侧 | 如果在筛选器的左侧发现缺陷，则该功能只适用于左侧。
排序标准 | 指定如何对检测到的缺陷进行排序。
按大小（默认） | 该函数将按缺陷大小对检测到的缺陷进行排序（从最大到最小）。
按面积 | 该功能将按面积对检测到的缺陷进行排序（从最大到最小）。
按位置 | 该功能将根据检测到的缺陷的卡尺索引对其进行排序。
间隙 | 指定用于确定边缘中间隙的参数。
已启用 | 指定函数是否考虑找到的边缘中的间隙。
0 = OFF | 该函数将不考虑差距。
1 = ON （默认值） | 该函数将根据其他间隙参数设置计算间隙。
最小间隙 | 指定最小间隙（以像素为单位）（有效范围为 In-Sight 视觉系统图像宽度的 0.001 到 3 倍；默认值 = 3 像素）；小于此值的间隙不被视为间隙。
最大间隙 | 指定最大间隙（以像素为单位）（有效范围是 In-Sight 视觉系统的图像宽度的 0.001 到 3 倍；默认为视觉系统的图像宽度的 3 倍）；大于此值的间隙不被视为间隙。
最大位移 | 指定距要视作间隙的线拟合的最大位移（以像素为单位）（有效范围是 In-Sight 视觉系统图像宽度的 1 到 3 倍；默认为视觉系统图像宽度的 3 倍）；此设置充当筛选器，以删除检测到但与其他检测到的边缘不在同一直线拟合的边缘。 注意:如果启用检查边缘对参数，则会测量从区域中心到边缘对中心的最大位移（以像素为单位）。如果此距离大于最大位移参数值，则将其视为间隙。
忽略间隙末端 | 指定函数是否考虑在 ROI 开始和结束处检测到的间隙。
0 = OFF | 该函数不会考虑在 ROI 开始和结束时检测到的间隙。
1 = ON （默认值） | 该函数将考虑在 ROI 开始和结束时检测到的间隙。
排序标准 | 指定如何对检测到的间隙进行排序。
按大小（默认） | 该函数将按大小对检测到的间隙进行排序（从最大到最小）。
按位置 | 该函数将根据卡尺索引对检测到的间隙进行排序。
卡尺索引 | 指定要在图像上显示的卡尺（卡尺将以绿色轮廓显示）；显示的默认卡尺为 0。
显示 | 指定函数在图像上的图形叠加显示模式。
0 = 隐藏所有（默认值） | 所有图形都将隐藏，除非包含 InspectedForDefect 函数的单元格在电子表格中突出显示。
1 = 仅结果图形 | 线拟合、检测到的缺陷、离群点和/或间隙将始终显示。
2 = 结果图形和找到的边缘 | 线拟合、检测到的缺陷、离群点和/或间隙以及检测到的边缘点将始终显示。
3 = 结果图形和卡尺细节 | 线拟合、检测到的缺陷、离群点和/或间隙、检测到的边缘点和索引卡尺窗口将始终显示。
4 = 显示全部：输入和结果图形 | 输入区域、线拟合、检测到的缺陷、离群点和/或间隙以及检测到的边缘点将始终显示。

## InspectEdgeForDefect 输出

返回 | 包含检测到的缺陷、极端和差距的 Inspect 数据结构，如果任何输入参数无效，则为 #ERR。
结果 | 当 InspectEdgeForDefect 最初插入单元格时，会在电子表格中创建结果表，该结果表对应于正在执行的搜索类型。 注意:如果最大数量的缺陷/间隙参数的值大于零，InspectEdgeForDefect 将自动插入一个结果表，其中包含最多10 个条目，这些条目对应于数据结构中的前 10 个缺陷/间隙/边缘/边缘对。如果您希望显示更多条目，您可以通过复制最后一行并在末尾粘贴其他行来扩展表格。 下面的 InspectEdge Vision Data Access functions 自动插入到电子表格中以创建 InspectEdgeForDefect 数据结构结果表，该表分为四个部分，摘要、缺陷、间隙和极限：
电子表格名称 | 函数名称 | 说明
摘要
缺陷/间隙 | GetDefectGapCount（检查、缺陷/间隙、大小/区域、边缘对索引） | 返回缺陷/间隙的数量，具体取决于指定的数量。缺陷=0，间隙=1；大小=0，区域=1。
x0/1 | GetFitEdgeX（检查、边缘对索引、点索引、边缘索引） | 返回指定点的 x 坐标。
Y 0/1 | GetFitEdgeY（检查、边缘对索引、点索引） | 返回指定点的 y 坐标。
中心 X | GetFitEdgeCenterX(检查, 点索引) | 在指定圆线拟合时插入，返回圆线拟合中心的 x 坐标。
中心 Y | GetFitEdgeCenterY(检查, 点索引) | 在指定圆线拟合时插入，返回圆线拟合中心的 y 坐标。
半径 | GetFitEdgeRadius(检查, 边缘对索引, 点索引) | 在指定曲线拟合时插入，返回距选定边缘对的曲线拟合中心的距离。
缺陷/间隙
大小/区域 | GetDefectGapValue(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引, 大小/区域/宽度) | 返回缺陷或间隙的大小或区域。缺陷 = 0、间隙 = 1；大小 = 0、区域 = 1，宽度 = 2。
X | GetDefectGapBoundsX(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引) | 返回缺陷边界矩形的 x 坐标。
Y | GetDefectGapBoundsY(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引) | 返回缺陷边界矩形的 y 坐标。
高度 | GetDefectGapBoundsHeight(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引) | 返回缺陷边界矩形的高度。
宽度 | GetDefectGapBoundsWidth(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引) | 返回缺陷边界矩形的宽度。
角度 | GetDefectGapBoundsAngle(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引) | 返回缺陷边界矩形的角度。
曲线 | GetDefectGapBoundsCurve(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引) | 返回缺陷边界矩形的曲线。
开始/结束 | GetDefectGapCaliperIndex(检查, 缺陷/间隙索引, 缺陷/间隙, 边缘对索引, 缺陷开始/结束) | 返回缺陷开始或结束的卡尺（开始 = 0，结束 = 1）。
极限 - 最远点 1/2
卡尺 | GetExtremePoints(检查, 边缘对索引, 近/远) | 返回边缘与线拟合最远的卡尺的索引（近 = 0 和远 = 1）。
X | GetEdgeX(检查, 卡尺索引, 边缘对索引或边缘索引) | 返回被引用边缘的 x 坐标。
Y | GetEdgeY(检查, 卡尺索引, 边缘对索引或边缘索引) | 返回被引用边缘的 y 坐标。
距离 | GetEdgeFromFit(检查, 卡尺索引, 边缘对索引) | 返回从参考卡尺边缘到直线拟合的距离。
所有用于 InspectEdgeForDefect 的公式均符合以下要求： 注意: 检查 = InspectEdgeForDefect 函数的 Inspect 数据结构输出 卡尺索引 = 0 到 N（卡尺总数等于 InspectedForDefect 函数引用的 InspectEdge 函数输出的卡尺数量） 边缘对索引 = 0 或 1 边索引 = 0 到 N 点索引 = 0 到 1 如果启用了检查边缘对参数，则边缘 1 的其他数据行将自动插入电子表格。启用时，索引 0 将返回有关边缘 0 的信息，索引 1 将返回有关边缘 1 的信息。