运算符 Library: Synchronization
算子 SYNC 用于对所有输入链路进行时间和图像尺寸同步。 需要同步的链路数量在实例化算子时指定。 所有输出链路上的输出图像是同步的,即它们在同一 时间输出且具有相同的图像尺寸。 因此,该算子将异步链路进行同步,使其变为 O 同步(O-synchronous) 状态,并可用于 O 类型的 VisualApplets 算子网络中。
该算子不支持空行或空帧。
在进行混合域同步(如 2D 与 1D 和 0D 流同步)时, 算子会将输出链路转换为最高的输入域。 使用 SYNC 将 2D 链路与 1D 链路同步时,两个输出链路都将设置为 2D 格式。 如果 1D 链路提供的行数不足,则会发出错误提示。 使用该算子将 1D 链路与 0D 链路同步时,所有输出链路都将采用 1D 格式。 在这种情况下,如果 0D 链路提供的像素不足,则会发出错误提示。
对于输入图像尺寸不同的情况,算子会同步图像,以确保所有输出图像 具有相同的大小。
![]() |
同步规则 |
|---|---|
|
在使用 SYNC 算子之前,请确保您了解所有同步规则。 用户手册以及“基础与示例”(Basics and Examples)详细解释了同步规则,请参阅: |
以下将对时序同步和图像尺寸同步进行详细说明。

在像素传输过程中,由于流控制或链路带宽超过图像源的带宽, 可能会出现暂停。 上图展示了如何对 2 条链路执行时间同步。两个输入链路具有不同的时序。 然而,输出链路数据是同步的,即像素在所有链路上同时输出。
该算子对所有输入链路起到了阀门的作用: 在所有输入端都出现有效像素之前,输入链路保持关闭状态。 随后,算子会将所有输入的像素转发到输出端,即打开阀门。
SYNC 算子能够使用不同的图像协议 VALT_IMAGE2D、VALT_LINE1D 或 VALT_PIXEL0D 来同步图像。 以下三张图展示了不同图像协议的一些图像。
-
2D

2D 图像具有有限的高度 H 和有限的宽度 W。 图中所示的第一张图像是常规 2D 图像。第二张图像是不规则 2D 图像,具有不同的行长度。
-
1D

1D 线条具有有限的宽度 W,但高度无限。 此类类型的图像通常在线扫描应用中创建。 同样,图中所示的第二张图像具有不同的行长度。
-
0D

0D 流不具有任何宽度或高度。这些流是无限的数据流。
如果输入链路上的图像具有不同的图像尺寸(即不同的宽度或行长度以及不同的高度), 则应用图像尺寸同步。 图像尺寸同步可确保输出端的所有图像具有相同的尺寸。 SYNC 算子支持两种同步模式:同步到最小图像 (SyncToMin) 和同步到最大图像 (SyncToMax)。 您可以通过参数 SyncMode 选择同步模式。 SyncToMin 模式会裁剪较大的图像以适应最小的图像。 SyncToMax 模式会扩展较小的图像以适应最大的图像。 缺失的像素将用虚拟零像素(黑色像素)填充。 将这两种模式与三种不同的图像域结合使用,可以得出以下基础同步组合:

针对 2D 到 1D 图像的 SyncToMin 同步执行宽度的图像尺寸同步。 输出图像保留输入 2D 图像的图像高度。1D 线条流被分割成与 2D 图像具有相同高度的图像。

针对 2D 到 1D 图像的 SyncToMax 同步执行宽度的图像尺寸同步。 输出图像保留输入 2D 图像的图像高度。1D 线条流被分割成与 2D 图像具有相同高度的图像。

由于 0D 数据流没有形状,因此 2D 到 0D 的同步只是对两条链路的简单旁路。 当然,SYNC 算子仍会执行时序同步。 对于该组合,SyncToMin 和 SyncToMax 操作没有区别。

由于 0D 数据流没有形状,因此 1D 到 0D 的同步只是对两条链路的简单旁路。 当然,SYNC 算子仍会执行时序同步。 对于该组合,SyncToMin and SyncToMax 操作没有区别。
此操作是 2D 到 1D、2D 到 0D 以及 1D 到 0D 操作的组合。 2D 图像和 1D 线条流在行长度上进行同步。 1D 链路必须提供至少包含 2D 图像的行数。 此外,0D 链路必须提供至少由 2D 到 1D 同步结果所产生的像素数量。 如果这两个条件都得到满足,算子将输出结果。
![]() |
注意 |
|---|---|
|
警告:模拟混合操作模式(如从 2D 到 1D、1D 到 0D 或这三者的任意组合)需要满足以下条件:
|
有关不同图像协议的更多信息,请参见 'Image Protocols, Image Dimensions and Data Structure'。
|
对于无符号输入,输入 Bit Width 的范围是 [1, 64]。 对于有符号输入,范围是 [2, 64]。 对于无符号彩色输入,范围是 [3, 63],对于有符号彩色输入,范围是 [6, 63]。 |
|
|
如果至少有一个输入的图像协议是 VALT_IMAGE2D,则输出图像协议为 VALT_IMAGE2D;如果至少有一个输入的图像协议是 VALT_LINE1D,则输出图像协议为 VALT_LINE1D;如果所有输入的图像协议都是 VALT_PIXEL0D,则输出图像协议为 VALT_PIXEL0D。 |
|
|
如果参数 SyncMode 为 SyncToMin,则最大输出图像宽度为输入最大图像宽度中的最小值。如果该参数设置为 SyncToMax,则最大输出图像宽度为输入最大图像宽度中的最大值。 |
|
|
如果参数 SyncMode 为 SyncToMin,则最大输出图像高度为输入最大图像高度中的最小值。如果该参数设置为 SyncToMax,则最大输出图像高度为输入最大图像高度中的最大值。 |
同步和异步输入
- 所有输入相互异步,即它们可能通过由 O 型算子组成的任意网络由不同的 M 型算子提供来源。
| SyncMode | |
|---|---|
| 键入 | static 参数 |
| 默认 | SyncToMin |
| 范围 | {SyncToMin, SyncToMax} |
|
该参数指定了运行模式:在 SyncToMin 模式下,算子会将所有输入图像同步到最小的图像,即裁剪较大的图像。在 SyncToMax 模式下,算子会将所有较小的图像扩展到最大的图像。参见上文说明。 |
|
以下示例展示了 SYNC 算子的使用方法:
-
‘M-type Operators with Multiple Inputs’
同步规则 - SYNC 算子的使用
-
Synchronization - 避免死锁。
-
示例:同步两个相机。
-
Example - Histogram thresholding
-
示例 - Laroche 拜耳去马赛克滤波器
-
示例 - 资源优化的 Laroche 拜耳去马赛克滤波器
-
示例 - Logic Analyzer:一种便捷的类似示波器的信号测量与分析方法。
-
Examples - 计算连续两幅图像之间的差值。 对这些差值进行阈值处理,并经由 DMA 通道输出。
-
示例 - 根据 Debevec 的 HDR
-
示例 - 带有线性方法的 HDR
-
示例 - 一个 High Speed 且稳健的激光线检测算法。 该算法可确定重心坐标,从而获得亚像素分辨率的结果。
-
'A rolling average is applied on a dynamic number of images'
Examples - Rolling Average - Loop
-
'Depth From Focus Using Loops'
Examples - Depth From Focus using Loops
-
示例 - Auto Exposure:自动调节 Exposure Time
-
示例 - 该示例展示了 2D Shading Correction 的实现。 校正值存储在采集卡 RAM 中。 该小应用程序执行高精度偏移和增益校正。
-
“使用 Operator RamLUT 的 2D Shading Correction / Flat Field Correction”
示例 - 该示例展示了 2D Shading Correction 的实现。 校正值存储在算子 RamLUT 中。 该小应用程序执行高精度偏移和增益校正。
-
'imaFlex CXP-12 Quad Platform 上的 DMAFromPC 算子示例'
示例 - 以 Shading Correction 为例演示算子的使用方法

![[提示]](../common/images/admon/tip.png)




![[Caution]](../common/images/admon/caution.png)





上一页

