# CalibrateGrid

利用用户可配置的校准网格图案，CalibrateGrid 会创建一个 2D 变换，以在像素坐标系和实际坐标系之间进行转换。CalibrateGrid 还考虑了线性、非线性和镜头畸变。

## 关于 CalibrateGrid

CalibrateGrid 计算由棋盘校准网格图案的顶点标识的点集之间的 2D 变换。在分析过程中，CalibrateGrid 查找网格单元交叉点的像素位置，然后将它们映射回网格图案模型。

此外，CalibrateGrid 使用对一组校准点和镜头畸变模型的引用来计算图像和实际坐标之间的变换映射。

注意:要在未畸变的图像上查看或使用视觉工具，请使用 TransformImage 函数。

您可以使用 CalibrateGrid 配置以下内容：

- 要使用的校准网格图案的类型。
- 校准网格图案的间距。
- 实际类型，物理测量单位。

或者，您可以打印校准板网格。有关详细信息，请参阅使用打印网格对话框打印校准图案。采集图像后，CalibrateGrid 会自动识别尽可能多的特征点。只要按下校准按钮，CalibrateGrid 就开始计算校准并根据特征点的间距报告校准点。

执行校准后，CalibrateGrid 单元存储校准数据。这允许您将 CalibrateGrid 函数从一个作业复制并粘贴到另一个作业，或者使用导出单元格/导入单元格作为外部文件导出和导入。如果需要，可以对每个作业进行不同的校准，也可以在单个作业中进行多次校准。使用 Calibrate 函数作为参数的其他函数可以引用 CalibrateGrid 数据结构。

注意:使用校准函数时，校准和运行时操作的物理和光学设置（镜头、传感器以及传感器与所采集场景之间的物理关系）必须相同。如果更改其中任何一项，则必须重新校准系统。建议您使用相同的传感器和镜头进行校准和处理运行时图像。传感器和镜头还必须保留其原始设置和校准设置。例如，更改分辨率或移动传感器将使计算出的 2D 变换无效，该变换将像素映射到实际坐标。

## CalibrateGrid 输入

参数 | 说明
--- | ---
图像 | 此参数必须引用包含有效 图像 数据结构的电子表格单元格；默认情况下，单元格引用 A0，该单元格包含 AcquireImage 函数返回的 Image 数据结构。
固定 | 定义相对于固定输入或视觉工具函数的图像坐标系输出的关注区域 (ROI)。根据“固定坐标”来设置的 ROI 可以确保如果“固定坐标” 被旋转或转换，相应的 ROI 也会根据“固定坐标”而旋转或转换。 默认设置为(0,0,0)，图像的最左上方。
X (默认值= 0) | 图像坐标中的 X 偏移。
Y (默认值 = 0) | 图像坐标中的 Y 偏移。
Theta (默认值 = 0) | 图像坐标系中图像 X 轴的旋转。（顺时针 +/-360 度）
区域 | 也称为关注区域 (ROI)，指定要进行分析的图像区域。双击区域参数以创建可以变换和旋转的交互图形模式。选择此参数并按属性表的作业编辑工具栏上的最大化区域按钮，自动拉伸区域以覆盖整个图像。
X | 在固定坐标中，偏移原点的 x 值。
Y | 在固定坐标中，偏移原点的 y 值。
宽度 | 沿区域 x 轴的尺寸。
高度 | 沿区域 y 轴的尺寸。
网格类型 | 指定将用于构建校准的校准图案的类型：棋盘格（带基准）；棋盘格（无基准）；点（带基准）；或点（无基准）。
棋盘（带基准） | 磁贴顶点（四个磁贴的角相交的点）用于确定特征位置；当传感器与表面垂直达 45 度时，可以准确定位顶点；提供一个基准标记来确定网格的原点并识别网格在实际空间中的方向。 注意:棋盘格检查必须至少 15 像素宽。
棋盘格（无基准） | 磁贴顶点（四个磁贴的角相交的点）用于确定特征位置；当传感器与表面垂直达 45 度时，可以准确定位顶点；必须使用网格原点设置原点。 注意:棋盘格检查必须至少 15 像素宽。
网格原点 | 指定网格的原点。
居中 | 如果您选择棋盘格（带基准），CalibrateGrid 会自动确定离区域中心最近的原点。 如果您选择棋盘格（无基准），您可以在中心按钮选中复选框。如果选中该复选框，可以手动确定网格原点。如果您手动指定网格原点，则原点将成为最接近您指定点的顶点。
X | 指定像素坐标中原点的 X 位置。 如果您使用带基准的棋盘格，X 轴将自动确定。 如果您使用棋盘格（无基准），则 X 轴会向网格右侧增加。
Y | 指定像素坐标中原点的 Y 位置。 如果您使用棋盘格（带基准），则自动确定 Y 轴。 如果您使用棋盘格（无基准），则 Y 轴会向网格底部增加。
注意:网格原点参数仅在您选择棋盘格时才可编辑，对于网格类型没有基准。如果您选择棋盘格（无基准），它允许您手动选择其中一个点作为原点。
校准 | CalibrateGrid 事件触发器。
网格间距单位 | 指定校准所基于的实际测量单位。默认单位为毫米。 您可以从下列单位中进行选择： 微米 毫米 厘米 英寸
X 网格间距 | 沿 X 轴的校准网格图案间距的实际测量值。
Y 网格间距 | 沿 Y 轴的校准网格图案间距的实际测量值。
角度范围 | 用于搜索网格的开始和结束角度范围。
角度开始 | 网格水平轴和相机水平轴之间的最小可能角度。 （最小值 = -180，最大值 = 180，默认值 = -180）
角度结束 | 网格水平轴和相机水平轴之间的最大可能角度。 （最小值 = -180，最大值 = 180，默认值 = +180）
提示: 当网格和相机之间的相对方向众所周知时，限制角度范围可以加快点提取。
查找公差 | 选择启用查找公差参数并限制用于搜索网格的角度范围。（默认值 = 0，未选中）
镜头畸变 | 用于将现实世界映射到图像坐标的线性或非线性镜头畸变模型。
0 = 无镜头畸变 | 只考虑透视畸变。
1 = 中心径向畸变 | 考虑源自图像中心的轻微径向畸变。
2 = 偏心径向畸变 | 考虑源自图像中心以外面积的径向畸变。
3 = 投影畸变 | 考虑鱼眼和广角镜头造成的畸变
4 = 宽畸变 | 考虑从轻微到严重的镜头畸变。
超时 | 指定允许 CalibrateGrid 函数运行的以毫秒为单位的时间长度。超过超时后，函数执行将停止。 最小值为 0，最大值为 9999999。默认值为 120000。 注意: 超时用作故障保护，一旦超过超时，就会导致可能运行很长时间的进程终止。超时并不准确，因为执行可能会在指定时间内运行几秒钟。
显示 | 指定 CalibrateGrid 在图像上的图形叠加显示模式。
0 = 隐藏所有（默认值） | 所有图形都将隐藏，除非包含 CalibrateGrid 函数的单元格在电子表格中突出显示。
1 = 仅结果图形 | 显示叠加在输入图像上的提取点位置
2 = 输入和结果图形 | 显示提取的点位置和搜索区域。

## CalibrateGrid输出

返回 | 包含定义两个坐标系之间转换的系数的 Calib 数据结构。

CalibrateGrid 棋盘格（带基准）的工作流程：

1. 将 CalibrateGrid 工具拖放到您的电子表格。

   显示属性表。

2. 通过双击指定区域参数指定感兴趣区域 (ROI)。通过拖动 ROI 的红线来选择区域。完成后，按回车键或单击接受更改。

3. 指定网格类型。在这种情况下，选择带有基准的棋盘格。
4. 指定网格单位，这些是实际坐标所基于的实际测量单位。

5. 单击校准触发校准。

   校准完成后，校准点出现在 ROI 内。

6. 单击确定。您收到一个 Calib 数据结构。

CalibrateGrid 棋盘格的工作流程，无校准：

1. 将 CalibrateGrid 工具拖放到您的电子表格。

   显示属性表。

2. 通过双击指定区域参数指定感兴趣区域 (ROI)。通过拖动 ROI 的红线来选择区域。完成后，按回车键或单击接受更改。

3. 指定网格类型。在这种情况下，棋盘没有选择基准。

4. 决定是否要手动确定网格原点。

   - 如果您不想手动确定原点，请选中中心复选框。

   - 如果要手动确定原点，请取消选中中心复选框。双击 X 按钮并将原点拖动到您所需的位置。完成后按 Enter。

5. 单击校准触发校准。

   校准完成后，校准点出现在 ROI 内。

6. 单击确定。您收到一个 Calib 数据结构。