運算子 SYNC

Operator Library: Synchronization

Operator SYNC 會對所有輸入鏈結執行時間與影像尺寸同步。 需同步的鏈結數量是在實例化 Operator 時指定。 所有輸出鏈結上的輸出影像皆為同步,亦即它們會在同一時間輸出,且具有相同的影像尺寸。 因此,該 Operator 會同步非同步鏈結,使其成為 O 同步,並可用於 O 型 VisualApplets operator 網路中。

此 Operator 不支援空行或空影格。

若為混合域同步(例如 2D 與 1D 及 0D 資料流), Operator 會將輸出鏈結轉換至最高輸入域。 當使用 SYNC 將 2D 鏈結與 1D 鏈結同步時,兩個輸出鏈結都會設為 2D 格式。 如果 1D 鏈結未提供足夠的行數,將會發出錯誤。 當使用 Operator 將 1D 鏈結與 0D 鏈結同步時,所有輸出鏈結都將採用 1D 格式。 在此情況下,如果 0D 鏈結未提供足夠的像素,將會發出錯誤。

若輸入影像具有不同的影像尺寸,Operator 會同步影像,使所有輸出影像 具有相同的尺寸。

[提示] 同步規則

在使用 SYNC operator 之前,請確保您已完全理解所有同步規則。 使用者手冊與基礎和範例中詳細說明了同步規則,請參閱:

以下將詳細說明計時同步與影像尺寸同步。

The Timing Synchronization

在傳輸像素期間,可能會因為流量控制或鏈結頻寬超過影像來源頻寬 而產生暫停。 上圖顯示了如何為 2 個鏈結執行時間同步。兩個輸入鏈結具有不同的計時。 然而,輸出鏈結資料已同步,亦即像素會在所有鏈結上同時輸出。

此 Operator 的作用就像所有輸入鏈結的閥門: 在所有輸入端都出現有效像素之前,輸入鏈結保持關閉狀態。 接著,Operator 會將所有輸入端的像素轉發至輸出端,也就是開啟閥門。

The Image Dimension Synchronization

SYNC operator 能夠使用不同的影像協定 VALT_IMAGE2D、VALT_LINE1D 或 VALT_PIXEL0D 來同步影像。 以下三張圖說明瞭不同影像協定的一些影像。

  • 2D

    2D 影像具有有限的高度 H 和有限的寬度 W。 圖中顯示的第一張影像是一般的 2D 影像。第二張影像是具有不同行長度的不規則 2D 影像。

  • 1D

    1D 線條具有有限的寬度 W,但高度無限。 這些類型的影像通常建立於線掃描應用中。 同樣地,圖中說明的第二張影像具有不同的行長度。

  • 0D

    0D 資料流沒有任何寬度或高度。這些資料流是無限的資料流。

如果輸入鏈結上的影像具有不同的影像尺寸(亦即不同的寬度或行長度和不同的高度),則會套用影像尺寸同步。 影像尺寸同步可確保輸出端的所有影像尺寸相同。 SYNC operator 支援 2 種同步模式:同步至最小影像 (SyncToMin) 與同步至最大影像 (SyncToMax)。 您透過參數 SyncMode 選擇同步模式。 SyncToMin 模式會裁切較大的影像以符合最小的影像。 SyncToMax 模式會擴展較小的影像以符合最大的影像。 遺失的像素會以虛擬零像素(黑色像素)填補。 將這 2 種模式與 3 種不同的影像域相結合,可得出以下基本同步組合:

2D to 2D SyncToMin

2D to 2D SyncToMax

填補像素為零像素。

1D to 1D SyncToMin

1D to 1D SyncToMax

填補像素為零像素。

0D to 0D SyncToMin / SyncToMax

0D 影像之間的同步純粹是時間同步,因為 0D 影像沒有影像尺寸。

2D to 1D SyncToMin

針對 2D 至 1D 影像的 SyncToMin 同步會執行寬度的影像尺寸同步。 輸出影像會保留輸入 2D 影像的影像高度。1D 線條資料流會被分割成與 2D 影像具有相同高度的影像。

2D to 1D SyncToMax

針對 2D 至 1D 影像的 SyncToMax 同步會執行寬度的影像尺寸同步。 輸出影像會保留輸入 2D 影像的影像高度。1D 線條資料流會被分割成與 2D 影像具有相同高度的影像。

2D to 0D SyncToMin / SyncToMax

由於 0D 資料流沒有形狀,因此 2D 至 0D 同步只是簡單地繞過兩個鏈結。 當然,SYNC operator 仍會執行計時同步。 此組合的 SyncToMin 與 SyncToMax 操作沒有區別。

1D to 0D SyncToMin / SyncToMax

由於 0D 資料流沒有形狀,因此 1D 至 0D 同步只是簡單地繞過兩個鏈結。 當然,SYNC operator 仍會執行計時同步。 此組合的 SyncToMin 與 SyncToMax 操作沒有區別。

2D to 1D to 0D SyncToMin / SyncToMax

此操作是 2D 至 1D、2D 至 0D 以及 1D 至 0D 操作的組合。 2D 影像和 1D 線條資料流會在行長度上進行同步。 1D 鏈結必須提供至少包含 2D 影像的行數。 此外,0D 鏈結必須提供至少產生 2D 至 1D 同步結果的像素數。 如果這兩個條件都滿足,Operator 將會輸出結果。

[注意] 注意

警告:模擬混合操作模式(例如 2D 至 1D 或 1D 至 0D,或所有 3 種模式的任意組合)需要滿足以下條件:

  1. 高度無限但寬度有限的鏈結(即 1D 鏈結)必須包含參與同步的所有 2D 通道之最大 (SyncToMax) / 最小 (SyncToMin) 行數。

  2. 具有無限寬度和高度的連結(即 0D 連結)必須至少提供所有 2D 轉 2D 及 2D 轉 1D 操作結果所能產生的最大 (SyncToMax) / 最小 (SyncToMin) 像素數量。

  3. 除非滿足特定條件,否則無法針對混合網域同步模擬影像序列,因為無限線條不可能擁有線條序列,否則它將不再是無限的。高度也是如此。如果高度是有限的,它就不是 1D 連結,而是 2D 連結。若要在所有連結上模擬影像序列,0D 通道上的像素數量必須與 2D 轉 1D 同步後的像素數量完全相同。1D 通道上的線條數量必須與 2D 轉 1D 同步後的結果完全相同。超出範圍的線條 (1D) 或像素 (0D) 將不會帶入下一個影像序列。

有關不同 image protocols 的詳細資訊,請參見 'Image Protocols, Image Dimensions and Data Structure'。

I/O Properties

Property Value
Operator Type M
Input Links I[0],資料輸入
I[k],資料輸入
Output Link O[k],資料輸出

支援的 Link 格式

Link Parameter 輸入連結 I[0] 輸入連結 I[k] 輸出連結 O[k]
Bit Width [1, 64]1 [1, 64]2 同 I[k]
Arithmetic {unsigned, signed} {unsigned, signed} 同 I[k]
Parallelism any 同 I[0] 同 I[0]
Kernel Columns any any 同 I[k]
Kernel Rows any any 同 I[k]
Img Protocol {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} 自動3
Color Format any any 同 I[k]
Color Flavor any any 同 I[k]
Max. Img Width any any 自動4
Max. Img Height any any 自動5

1 2

無號輸入的 Bit Width 範圍為 [1, 64]。 針對有號輸入,範圍為 [2, 64]。 針對無號彩色輸入,範圍為 [3, 63],而針對有號彩色輸入,範圍為 [6, 63]。

3

如果至少有一個輸入為 VALT_IMAGE2D,則輸出 image protocol 為 VALT_IMAGE2D;否則,如果至少有一個輸入為 VALT_LINE1D,則為 VALT_LINE1D。若所有輸入的 image protocol 皆為 VALT_PIXEL0D,則為 VALT_PIXEL0D。

4

如果參數 SyncMode 為 SyncToMin,則最大輸出影像寬度為輸入最大影像寬度中的最小值。如果參數設定為 SyncToMax,則最大輸出影像寬度為輸入最大影像寬度中的最大值。

5

如果參數 SyncMode 為 SyncToMin,則最大輸出影像高度為輸入最大影像高度中的最小值。如果參數設定為 SyncToMax,則最大輸出影像高度為輸入最大影像高度中的最大值。

同步與非同步輸入

  • 所有輸入彼此非同步,即它們可能透過任意的 O 型運算子網路來自主機型運算子。

參數

SyncMode
Type static parameter
Default SyncToMin
Range {SyncToMin, SyncToMax}

此參數指定運作模式:在 SyncToMin 模式下,運算子會將所有輸入影像同步至最小的影像,即裁切較大的影像。在 SyncToMax 模式下,運算子會將所有較小的影像擴展至最大的影像。請參閱上述說明。

使用範例

以下範例展示了運算子 SYNC 的使用方式: